The full stack we use on our own chatbot (and why it's boring)
Next.js + FastAPI + MySQL + Ollama + Apache + systemd. Not a single framework you haven't heard of. Here's why we're proud of that.
People ask what we build on. The honest answer is: nothing new. Here's the whole stack.
Frontend
- Next.js 14 (App Router, TypeScript)
- Tailwind CSS for styling
- No CSS framework besides Tailwind, no component library
Backend (when we need one)
- FastAPI (Python) for anything heavier than a Next.js API route can handle
- MySQL for transactional data (leads, users, content)
- ClickHouse when we're doing analytics at scale
AI layer
- Ollama for self-hosted LLM inference
- OpenAI SDK pointed at Ollama — same SDK contract, swap endpoints
Infrastructure
- Ubuntu 24.04 on standard VPS
- Apache 2 as reverse proxy
- systemd for process management
- Let's Encrypt for TLS
What we deliberately don't use
- No Vercel / Netlify / Cloudflare Workers. A client can't inherit a vendor dependency they don't understand.
- No Kubernetes. One VPS + systemd runs fine for 99% of the things small businesses need.
- No GraphQL. REST is simpler and every developer already reads it.
- No frontend state library beyond React's built-in hooks. If it needed Redux, we'd build a different thing.
Why "boring"
The small businesses we sell to will have this system for years. Every exotic choice is a landmine for the person who has to maintain it at month 30 when we're off doing something else.
Tailwind + Next.js + FastAPI + MySQL has been a mainstream stack since 2023. Tutorials exist. Stack Overflow has answers. ChatGPT can explain what every line does. That's the feature.
The chatbot specifically
Our live demo runs this exact stack. The whole thing is in one Git repo, one deploy pipeline, one systemctl restart away from updated. A freelancer picking it up tomorrow reads it in an afternoon.
Engineering depth
For the deeper technical takes — the things we've learned doing this for bigger systems — our engineering writing is at kargin-utkin.com, and the hands-on ML experiments are at labs.kargin-utkin.com.
What this means for you
If we build you something, you can hire literally any junior developer to modify it later. That's not an accident. That's the point.