Skill Tech

Tech Stack

Technology guidance and stack selection: starting points, viable alternatives, decision-making method, and proposal template for new projects and modules.

Overview

Tech Stack gives a Default Recommendation per project type as the starting point for routine work. A trigger classifier decides when that is not enough: a new project or service, a component in a different domain from the incumbent stack, a stack migration, or an explicit operator request produces a Stack Proposal with 2–3 candidates, explicit trade-offs and a recommendation. L1 tasks and routine same-domain work skip it; an ambiguous case defaults to a proposal. The operator chooses, and the choice is recorded as a decision note in the plan and bound by the immutability contract. Core principles: simplicity over complexity, performance over convenience, widely adopted tools with strong communities.

Default Recommendations (Selection)

  • Static Landing — HTML, CSS, Tailwind, Alpine.js (optional). No SPA.
  • Static Multi-Page — PHP, HTML, Tailwind. SSR templates. Docker required.
  • Web Frontend (SEO) — Next.js, React, Tailwind, shadcn/ui, Vite, pnpm, Vitest, Playwright.
  • SPA / Dashboard — Vite, React or Vue, Tailwind, TanStack Query, Vitest.
  • Microservice 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.

Each row also lists viable alternatives and a verifiable “when to reconsider” test; further rows cover high-load and gateway APIs, RAG and search, real-time, background and event-driven work, media, monorepos, auth, prototyping and CLI or systems tools.

Recommended Toolchains

Python: uv (dependencies), ruff (lint + format), pytest (testing). Node/TypeScript: pnpm, TypeScript, eslint + prettier, vitest, playwright for E2E. These are quality-floor defaults — deviate with a one-line rationale. Docker is used for backend services.

Architecture Guidance

Guidance, not mandates: each rule carries a rationale, and you deviate when the rationale does not apply.

  • No SPA where HTML suffices
  • Fastify is the default for Node.js HTTP (alternatives: Hono, Express)
  • Redis as default cache
  • Event-driven systems use NATS or Kafka
  • PHP is for SSR/template reuse only
  • Queues are not WebSockets; WebRTC is for media only
  • No exotic libraries without justification

Infrastructure & Backups

Server backups use restic + Backblaze B2 (native backend, client-side encryption, dedup, snapshots). Database backups use per-engine tooling (pg_dump, mysqldump) piped into restic.

Dependency Version Policy

Always install the latest stable (LTS where applicable) version. If a new major has breaking changes, adapt the code — do not downgrade. Run pnpm outdated (or uv pip list --outdated) immediately after scaffold and after every added dependency. AI hallucination guard: verify latest versions via npm view or pip index versions before specifying in config files.