- 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
31 lines
1.7 KiB
Markdown
31 lines
1.7 KiB
Markdown
# ADR-002: Fastify как backend-фреймворк
|
||
|
||
## Статус
|
||
|
||
Принято
|
||
|
||
## Контекст
|
||
|
||
Нужен HTTP-фреймворк для Node.js backend с TypeScript.
|
||
|
||
## Варианты
|
||
|
||
1. **Express** — самый популярный, огромная экосистема, но устаревший дизайн, нет нативной поддержки async/await в error handling, медленнее.
|
||
2. **Fastify** — современный, быстрый, нативная поддержка TypeScript, встроенная валидация через JSON Schema, плагинная архитектура, Pino из коробки.
|
||
3. **NestJS** — мощный фреймворк с DI, декораторами, модулями. Избыточен для команды 1-2 человек, крутая кривая обучения.
|
||
|
||
## Решение
|
||
|
||
Fastify.
|
||
|
||
- Встроенная валидация запросов через JSON Schema (пригодится для LLM-ответов)
|
||
- Нативный Pino logger — не нужно настраивать отдельно
|
||
- Плагинная система для чистой декомпозиции (auth, tests, llm — отдельные плагины)
|
||
- Производительность выше Express в 2-3 раза на типичных нагрузках
|
||
|
||
## Последствия
|
||
|
||
- Меньше туториалов по сравнению с Express (но документация Fastify качественная)
|
||
- Middleware из Express-экосистемы нужно адаптировать или искать Fastify-аналоги
|
||
- Плагинная архитектура требует дисциплины в структуре кода
|