Технологический стек
Технологические ориентиры и выбор стека: отправные точки, жизнеспособные альтернативы, метод принятия решения и шаблон proposal для новых проектов и модулей.
Обзор
Tech Stack даёт рекомендацию по умолчанию для каждого типа проекта — отправную точку для рутинной работы. Классификатор триггеров решает, когда этого мало: новый проект или сервис, компонент в домене, отличном от текущего стека, миграция стека или прямой запрос оператора порождают Stack Proposal — 2–3 кандидата с явными trade-off и рекомендацией. L1-задачи и рутинная работа в том же домене его пропускают; неоднозначный случай по умолчанию ведёт к proposal. Выбирает оператор, выбор записывается как decision note в плане и связан контрактом неизменяемости. Принципы: простота важнее сложности, производительность важнее удобства, широко принятые инструменты с сильными сообществами.
Рекомендации по умолчанию (выборка)
- Статический лендинг — HTML, CSS, Tailwind, Alpine.js (опционально). Без SPA.
- Статический многостраничник — PHP, HTML, Tailwind. SSR-шаблоны. Docker обязателен.
- Веб-фронтенд (SEO) — Next.js, React, Tailwind, shadcn/ui, Vite, pnpm, Vitest, Playwright.
- SPA / Дашборд — Vite, React или Vue, Tailwind, TanStack Query, Vitest.
- Микросервисный API — NestJS, Fastify, PostgreSQL, Prisma, Redis, NATS.
- Python API — FastAPI, uvicorn, uv, ruff, pydantic, sqlalchemy, alembic, pytest.
- AI/LLM — Python, FastAPI, uv, ruff, OpenAI/OpenRouter SDK, Redis.
Для каждой строки также указаны жизнеспособные альтернативы и проверяемый тест «когда пересмотреть»; остальные строки покрывают высоконагруженные и gateway API, RAG и поиск, real-time, фоновые и event-driven задачи, медиа, монорепо, auth, прототипы и CLI/системные инструменты.
Рекомендуемые тулчейны
Python: uv (зависимости), ruff (линт + формат), pytest (тесты). Node/TypeScript: pnpm, TypeScript, eslint + prettier, vitest, playwright для E2E. Это базовый уровень качества по умолчанию — отклонение допускается с обоснованием в одну строку. Docker используется для бэкенд-сервисов.
Архитектурные ориентиры
Это ориентиры, а не мандаты: у каждого правила есть обоснование, и если оно к проекту неприменимо, от правила отступают.
- Нет SPA там, где достаточно HTML
- Fastify — по умолчанию для Node.js HTTP (альтернативы: Hono, Express)
- Redis как кэш по умолчанию
- Event-driven системы — NATS или Kafka
- PHP только для SSR/шаблонов
- Очереди — не WebSockets; WebRTC — только для медиа
- Никаких экзотических библиотек без обоснования
Инфраструктура и бэкапы
Бэкапы серверов: restic + Backblaze B2 (нативный бэкенд, клиентское шифрование, дедупликация, снапшоты). Бэкапы БД: per-engine утилиты (pg_dump, mysqldump) через restic.
Политика версий зависимостей
Всегда ставить последнюю стабильную версию (LTS где применимо). Если новая мажорная версия ломает совместимость — адаптировать код, не даунгрейдить. Запускать pnpm outdated (или uv pip list --outdated) сразу после scaffold и после каждой добавленной зависимости. Guard от галлюцинаций AI: проверять версии через npm view или pip index versions перед указанием в конфигах.