3.7 KiB
How to Contribute to Perplexica
Thanks for your interest in contributing to Perplexica! Your help makes this project better. This guide explains how to contribute effectively.
Perplexica is a modern AI chat application with advanced search capabilities.
Project Structure
Perplexica's codebase is organized as follows:
- UI Components and Pages:
- Components (
src/components): Reusable UI components. - Pages and Routes (
src/app): Next.js app directory structure with page components.- Main app routes include: home (
/), chat (/c), discover (/discover), and library (/library).
- Main app routes include: home (
- API Routes (
src/app/api): Server endpoints implemented with Next.js route handlers.
- Components (
- Backend Logic (
src/lib): Contains all the backend functionality including search, database, and API logic.- The search system lives in
src/lib/agents/search. - The search pipeline is split into classification, research, widgets, and writing.
- Database functionality is in
src/lib/db. - Chat model and embedding model providers are in
src/lib/models/providers, and models are loaded viasrc/lib/models/registry.ts. - Prompt templates are in
src/lib/prompts. - SearXNG integration is in
src/lib/searxng.ts. - Upload search lives in
src/lib/uploads.
- The search system lives in
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/searchcontains the core chat and search pipeline.classifier.tsdecides 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.
- Research tools (web, academic, discussions, uploads, scraping) live in
-
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.
- Widgets live in
-
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.
- Providers live in
-
Architecture docs
- High level overview:
docs/architecture/README.md - High level flow:
docs/architecture/WORKING.md
- High level overview:
API Documentation
Perplexica includes API documentation for programmatic access.
- Search API: For detailed documentation, see
docs/API/SEARCH.md.
Setting Up Your Environment
Before diving into coding, setting up your local environment is key. Here's what you need to do:
- Run
npm installto install all dependencies. - Use
npm run devto start the application in development mode. - Open http://localhost:3000 and complete the setup in the UI (API keys, models, search backend URL, etc.).
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.
Coding and Contribution Practices
Before committing changes:
- Ensure that your code functions correctly by thorough testing.
- Always run
npm run format:writeto format your code according to the project's coding standards. This helps maintain consistency and code quality. - We currently do not have a code of conduct, but it is in the works. In the meantime, please be mindful of how you engage with the project and its community.
Following these steps will help maintain the integrity of Perplexica's codebase and facilitate a smoother integration of your valuable contributions. Thank you for your support and commitment to improving Perplexica.