docs: add full project documentation

- Architecture: overview, 7 ADR, tech stack
- Principles: code-style, git-workflow, security
- API contracts: auth, profile, tests, admin endpoints
- Database schema: tables, relationships, indexes
- LLM strategy: prompts, fallback, validation, Qwen 2.5 14B
- Onboarding: setup, Docker, .env template
- Progress: roadmap, changelog
- Agents: context, backend instructions

Made-with: Cursor
This commit is contained in:
Anton
2026-03-04 12:07:17 +03:00
commit 99cd8ae727
21 changed files with 3763 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
# ADR-003: Drizzle ORM
## Статус
Принято
## Контекст
Нужен типизированный доступ к PostgreSQL из TypeScript-кода.
## Варианты
1. **Prisma** — популярная, удобная генерация типов из schema.prisma, миграции. Минусы: тяжёлый бинарный engine, ограничения на сложные запросы, собственный query language.
2. **Drizzle ORM** — легковесный, SQL-first подход, схема описывается в TypeScript, отличная типизация, близость к чистому SQL.
3. **Kysely** — типизированный query builder, ещё ближе к SQL, но нет встроенных миграций.
## Решение
Drizzle ORM.
- Схема в TypeScript — типы выводятся автоматически, не нужна кодогенерация
- SQL-first: сложные запросы (JOIN, подзапросы, агрегации) пишутся естественно
- Лёгкий — нет бинарного engine как у Prisma
- Встроенные миграции через `drizzle-kit`
- Хорошо сочетается с Fastify (без магии, без декораторов)
## Последствия
- Нужно знать SQL (в отличие от Prisma, которая его прячет)
- Экосистема меньше, чем у Prisma
- VS Code расширение: используем общие SQL/TS расширения вместо Prisma-специфичного