This is a fullstack Information Retrieval (IR) project designed to process, index, and search documents efficiently. The project is divided into two main components:
- Client: A modern web application built with TypeScript and Vite for user interaction.
- Server: A Python-based backend that handles document processing, indexing, and search functionalities.
The project is ideal for exploring IR concepts and building scalable search systems.
- Built with React and TypeScript.
- Modular UI components for reusability.
- Interactive and responsive design.
- Integration with the backend API for search and retrieval.
- Document processing and indexing using NLTK.
- RESTful API for search and retrieval.
- Logging for monitoring and debugging.
- Utilities for file processing and data management.
client/
src/
components/ # Reusable UI components
hooks/ # Custom React hooks
lib/ # Utility functions
pages/ # Application pages
types/ # TypeScript type definitions
public/ # Static assets
vite.config.ts # Vite configuration
server/
app/
api/ # API routes
core/ # Core application logic
utils/ # Utility scripts
data/ # Indexed data and test files
logs/ # Log files
tests/ # Test cases
requirements.txt # Python dependencies
- Node.js (v16 or higher)
- pnpm (preferred package manager)
- Python 3.10 or higher
- pip (Python package manager)
- Navigate to the
clientdirectory:cd client - Install dependencies:
pnpm install
- Start the development server:
pnpm dev
- Open the application in your browser at
http://localhost:3000.
- Navigate to the
serverdirectory:cd server - Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows, use `venv\Scripts\activate`
- Install dependencies:
pip install -r requirements.txt
- Run the server:
python run.py
- The server will be available at
http://localhost:5000.
- Upload documents via the client interface.
- Use the search bar to query indexed documents.
- View search results and document details.
Run the following command to execute tests:
pnpm testRun the following command to execute tests:
pytestServer logs are stored in the server/logs/ directory. These logs provide insights into server operations and errors.
- Fork the repository.
- Create a new branch for your feature or bug fix:
git checkout -b feature-name
- Commit your changes:
git commit -m "Add feature description" - Push to your branch:
git push origin feature-name
- Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.