// 04 — STACK

Tools we trust. Boring on purpose.

We pick technology with multi-year support behind it, hire-ability around it, and a track record of not breaking in production. New shiny things are interesting; we just don't put them on your critical path.

01 / BACKEND

Django + DRF.

The whole backend rests on Django 5 + DRF. Boring, audited, twenty years of production track record. Celery for async, gunicorn + uvicorn for serving, Python 3.13 + typed.

We use the same stack on every project so we move fast: same auth, same admin, same migration patterns, same retry semantics. New shiny frameworks stay off the critical path.

// TOOLS Django 5 DRF Celery Gunicorn Uvicorn Python 3.13 uv ruff
02 / FRONTEND

Next.js + shadcn.

Next.js 14 App Router only. TypeScript strict, no any in shipped code. Tailwind for utility, shadcn for primitives, react-hook-form + Zod for forms.

We bias toward components we own (shadcn / custom) over vendor libraries we can't touch. When you inherit the codebase, every component is in your repo and editable.

// TOOLS Next.js 14 TypeScript React 19 Tailwind shadcn/ui Radix react-hook-form Zod next-intl
03 / DATA

Postgres + ClickHouse.

Postgres 16 for transactional. ClickHouse for analytics (billions of rows, sub-second). Redis for cache + broker + streams. MinIO for self-hosted object storage.

We deliberately split OLTP from OLAP — they have different query profiles, different backup needs, different failure modes. Postgres handles the truth, ClickHouse handles the aggregation, Redis is the glue.

// TOOLS Postgres 16 ClickHouse Redis MinIO OpenSearch pgvector
04 / AI / LLMs

OpenAI, Anthropic, Ollama.

Provider abstraction by default. GPT-4o for general reasoning, Claude for long-context and safety-sensitive flows, local Ollama / vLLM for on-prem deployments. Swap them without rewriting features.

Every model call goes through a router with cost budgets, fallback chains, and PII filters. We never lock you into one vendor — the contract layer is yours.

// TOOLS OpenAI Anthropic Ollama vLLM Pinecone pgvector LangGraph n8n
05 / INFRA & OPS

Docker Compose on a VPS.

Single-VPS deploys with Docker Compose unless the project genuinely needs Kubernetes (which is rarely). Nginx + Let's Encrypt in front. Self-hosted log aggregation (Loki + Grafana). Backups daily, restore drill monthly.

Cheaper than serverless at your scale, faster to debug than Kubernetes at our scale, and you own the box. We deploy by `git pull && docker compose up -d --build`.

// TOOLS Docker Compose Nginx Cloudflare Sentry Loki + Grafana rclone + B2 UFW + fail2ban
06 / PAYMENTS & MONEY

Stripe + Paddle, production-grade.

Stripe for global card acceptance. Paddle / Lemon Squeezy for merchant-of-record invoicing. Webhook-driven reconciliation, refunds, disputes — wired into your admin from day one.

Every money path is idempotent end-to-end, audit-logged, and reconciles to the cent. We never represent money as a float — minor units only, with the currency stored explicitly.

// TOOLS Stripe Paddle Lemon Squeezy PayPal Webhooks Idempotency keys
// SUBSTITUTIONS

We'll swap, when it makes sense.

Greenfield is rare. Most of the time you already have infrastructure. Here's what we'll keep — and what each swap actually costs.