feat(guides): update contributing guides

This commit is contained in:
ItzCrazyKns
2025-12-27 13:09:01 +05:30
parent cc183cd0cd
commit 5a44319d85

View File

@@ -11,33 +11,63 @@ Perplexica's codebase is organized as follows:
- **UI Components and Pages**: - **UI Components and Pages**:
- **Components (`src/components`)**: Reusable UI components. - **Components (`src/components`)**: Reusable UI components.
- **Pages and Routes (`src/app`)**: Next.js app directory structure with page components. - **Pages and Routes (`src/app`)**: Next.js app directory structure with page components.
- Main app routes include: home (`/`), chat (`/c`), discover (`/discover`), library (`/library`), and settings (`/settings`). - Main app routes include: home (`/`), chat (`/c`), discover (`/discover`), and library (`/library`).
- **API Routes (`src/app/api`)**: API endpoints implemented with Next.js API routes. - **API Routes (`src/app/api`)**: Server endpoints implemented with Next.js route handlers.
- `/api/chat`: Handles chat interactions.
- `/api/search`: Provides direct access to Perplexica's search capabilities.
- Other endpoints for models, files, and suggestions.
- **Backend Logic (`src/lib`)**: Contains all the backend functionality including search, database, and API logic. - **Backend Logic (`src/lib`)**: Contains all the backend functionality including search, database, and API logic.
- The search functionality is present inside `src/lib/search` directory. - The search system lives in `src/lib/agents/search`.
- All of the focus modes are implemented using the Meta Search Agent class in `src/lib/search/metaSearchAgent.ts`. - The search pipeline is split into classification, research, widgets, and writing.
- Database functionality is in `src/lib/db`. - Database functionality is in `src/lib/db`.
- Chat model and embedding model providers are managed in `src/lib/providers`. - Chat model and embedding model providers are in `src/lib/models/providers`, and models are loaded via `src/lib/models/registry.ts`.
- Prompt templates and LLM chain definitions are in `src/lib/prompts` and `src/lib/chains` respectively. - Prompt templates are in `src/lib/prompts`.
- SearXNG integration is in `src/lib/searxng.ts`.
- Upload search lives in `src/lib/uploads`.
### Where to make changes
If you are not sure where to start, use this section as a map.
- **Search behavior and reasoning**
- `src/lib/agents/search` contains the core chat and search pipeline.
- `classifier.ts` decides whether research is needed and what should run.
- `researcher/` gathers information in the background.
- **Add or change a search capability**
- Research tools (web, academic, discussions, uploads, scraping) live in `src/lib/agents/search/researcher/actions`.
- Tools are registered in `src/lib/agents/search/researcher/actions/index.ts`.
- **Add or change widgets**
- Widgets live in `src/lib/agents/search/widgets`.
- Widgets run in parallel with research and show structured results in the UI.
- **Model integrations**
- Providers live in `src/lib/models/providers`.
- Add new providers there and wire them into the model registry so they show up in the app.
- **Architecture docs**
- High level overview: `docs/architecture/README.md`
- High level flow: `docs/architecture/WORKING.md`
## API Documentation ## API Documentation
Perplexica exposes several API endpoints for programmatic access, including: Perplexica includes API documentation for programmatic access.
- **Search API**: Access Perplexica's advanced search capabilities directly via the `/api/search` endpoint. For detailed documentation, see `docs/api/search.md`. - **Search API**: For detailed documentation, see `docs/API/SEARCH.md`.
## Setting Up Your Environment ## Setting Up Your Environment
Before diving into coding, setting up your local environment is key. Here's what you need to do: Before diving into coding, setting up your local environment is key. Here's what you need to do:
1. In the root directory, locate the `sample.config.toml` file. 1. Run `npm install` to install all dependencies.
2. Rename it to `config.toml` and fill in the necessary configuration fields. 2. Use `npm run dev` to start the application in development mode.
3. Run `npm install` to install all dependencies. 3. Open http://localhost:3000 and complete the setup in the UI (API keys, models, search backend URL, etc.).
4. Run `npm run db:migrate` to set up the local sqlite database.
5. Use `npm run dev` to start the application in development mode. Database migrations are applied automatically on startup.
For full installation options (Docker and non Docker), see the installation guide in the repository README.
**Please note**: Docker configurations are present for setting up production environments, whereas `npm run dev` is used for development purposes. **Please note**: Docker configurations are present for setting up production environments, whereas `npm run dev` is used for development purposes.