# 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.