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,30 @@
# ADR-004: PostgreSQL как основная база данных
## Статус
Принято
## Контекст
Нужна реляционная база данных для хранения пользователей, тестов, вопросов, подписок, платежей.
## Варианты
1. **PostgreSQL** — зрелая, надёжная, JSONB для полуструктурированных данных, full-text search, расширяемость.
2. **MySQL/MariaDB** — популярна, но слабее в поддержке JSON, CTE, оконных функций.
3. **SQLite** — для маленьких проектов, не подходит для конкурентного доступа в prod.
## Решение
PostgreSQL.
- JSONB пригодится для хранения вариантов ответов и метаданных LLM
- Полнотекстовый поиск по банку вопросов без внешних зависимостей
- Поддерживается всеми хостингами и облачными провайдерами
- Drizzle ORM имеет лучшую поддержку именно для PostgreSQL
## Последствия
- Локальная разработка через Docker (PostgreSQL в контейнере)
- Миграции управляются через `drizzle-kit`
- Бэкапы и восстановление — стандартные инструменты pg_dump/pg_restore