Скилл Tech

Технологический стек

Технологические ориентиры и выбор стека: отправные точки, жизнеспособные альтернативы, метод принятия решения и шаблон 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 перед указанием в конфигах.