Skip to content
This repository was archived by the owner on Jun 24, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Contributing to Retriever

Retriever is an AI-powered Q&A system using RAG (Retrieval-Augmented Generation) to help users find information in organizational documents. Contributions of all kinds are welcome — bug fixes, features, documentation, and tests.
Retriever is an AI-powered Q&A system using RAG (Retrieval-Augmented Generation) to help users find information in organizational documents. Contributions of all kinds are welcome: bug fixes, features, documentation, and tests.

## Quick Start

Expand All @@ -9,7 +9,7 @@ Retriever is an AI-powered Q&A system using RAG (Retrieval-Augmented Generation)
git clone https://github.com/your-org/retriever.git
cd retriever
cp .env.example .env
# Edit .env — add your API keys (see Environment Configuration below)
# Edit .env, add your API keys (see Environment Configuration below)

# Start infrastructure
supabase start
Expand All @@ -36,8 +36,8 @@ npm run dev
- **Docker** (for postgres + jaeger via `docker compose`)
- **[Supabase CLI](https://supabase.com/docs/guides/cli)** (for local auth)
- **API keys:**
- [OpenRouter](https://openrouter.ai/keys) — LLM access
- [OpenAI](https://platform.openai.com/api-keys) — embeddings and moderation
- [OpenRouter](https://openrouter.ai/keys): LLM access
- [OpenAI](https://platform.openai.com/api-keys): embeddings and moderation

## Environment Configuration

Expand All @@ -51,7 +51,7 @@ OPENAI_API_KEY=your-key-here

3. The remaining defaults work for local development:
- `DATABASE_URL` points to `localhost:5432` (docker compose postgres)
- `SUPABASE_URL` / `SUPABASE_ANON_KEY` — update with values from `supabase status` after `supabase start`
- `SUPABASE_URL` / `SUPABASE_ANON_KEY`: update with values from `supabase status` after `supabase start`
- Cloudflare, Langfuse, and GCP settings are optional (features degrade gracefully without them)

## Day-to-Day Development
Expand Down Expand Up @@ -83,7 +83,7 @@ supabase stop
uv run ruff check src/ tests/ --fix
uv run ruff format src/ tests/

# Type checking (strict mode — use python -m mypy, NOT uv run mypy)
# Type checking (strict mode; use python -m mypy, NOT uv run mypy)
uv run python -m mypy src/ --strict

# Tests with coverage (80% minimum)
Expand Down Expand Up @@ -128,12 +128,12 @@ We use **GitHub Flow**: feature branches → pull request → squash merge to `m
```

3. **Branch naming:**
- `feature/` — New features
- `fix/` — Bug fixes
- `docs/` — Documentation
- `refactor/` — Code improvements
- `test/` — Tests
- `chore/` — Maintenance
- `feature/`: New features
- `fix/`: Bug fixes
- `docs/`: Documentation
- `refactor/`: Code improvements
- `test/`: Tests
- `chore/`: Maintenance

4. **Commit, push, and open a PR** against `main`.

Expand All @@ -151,8 +151,8 @@ Types: `feat:`, `fix:`, `docs:`, `test:`, `refactor:`, `chore:`

- **Type hints required** on all function signatures (including return types)
- **Docstrings** (Google style) on public APIs and non-trivial functions
- **Error handling** — no bare `except:`, chain with `from` for context
- **Security** — never commit secrets; store in environment variables; validate user input
- **Error handling**: no bare `except:`, chain with `from` for context
- **Security**: never commit secrets; store in environment variables; validate user input

## Testing

Expand Down Expand Up @@ -205,6 +205,6 @@ retriever/
- Open a new issue with context: what you tried, error messages, environment details
- See [CLAUDE.md](CLAUDE.md) for gotchas and non-obvious patterns

## License
## License of Contributions

By contributing to Retriever, you agree that your contributions will be licensed under the [MIT License](LICENSE).
This project is licensed under GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). By submitting a contribution, you agree that your contribution is licensed under the same terms.
Loading
Loading