- localization-svc: defaultLocale ru, resolveLocale only by geo - web-svc: DEFAULT_LOCALE ru, layout lang=ru, embeddedTranslations fallback ru - countryToLocale: default ru when no country or unknown country Co-authored-by: Cursor <cursoragent@cursor.com>
79 lines
3.7 KiB
Markdown
79 lines
3.7 KiB
Markdown
# How to Contribute to GooSeek
|
|
|
|
Thanks for your interest in contributing to GooSeek! Your help makes this project better. This guide explains how to contribute effectively.
|
|
|
|
GooSeek is a modern AI chat application with advanced search capabilities.
|
|
|
|
## Project Structure
|
|
|
|
GooSeek'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`).
|
|
- **API Routes (`src/app/api`)**: Server endpoints implemented with Next.js route handlers.
|
|
- **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 via `src/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`.
|
|
|
|
### 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
|
|
|
|
GooSeek includes API documentation for programmatic access.
|
|
|
|
- **Search API**: For detailed documentation, see `docs/API/SEARCH.md`.
|
|
|
|
## Setting Up Your Environment
|
|
|
|
GooSeek развёртывается только через **Kubernetes** (встроенный в Docker Desktop, не Docker-контейнеры):
|
|
|
|
1. Запустите Docker Desktop, включите Kubernetes (Settings → Kubernetes).
|
|
2. Выполните `./deploy/k3s/deploy.sh` из корня репозитория.
|
|
3. Откройте приложение по URL из Ingress (https://gooseek.ru).
|
|
|
|
Миграции БД выполняются автоматически при деплое. Конфигурация сервисов: `deploy/k3s/deploy.config.yaml`.
|
|
|
|
## Coding and Contribution Practices
|
|
|
|
Before committing changes:
|
|
|
|
1. Ensure that your code functions correctly by thorough testing.
|
|
2. Always run `npm run format:write` to format your code according to the project's coding standards. This helps maintain consistency and code quality.
|
|
3. 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 GooSeek's codebase and facilitate a smoother integration of your valuable contributions. Thank you for your support and commitment to improving GooSeek.
|