The full stack we use on our own chatbot (and why it's boring)
Next.js + FastAPI + MySQL + Ollama + Apache + systemd. Nothing on this list is new. That's the argument.
People ask what's under the hood of recent AI-adjacent side projects. The honest answer is: nothing new. Every layer is technology that was boring in 2023. Here's the whole stack and why each choice stayed.
Frontend
- Next.js 14, App Router, TypeScript
- Tailwind CSS, no component library, no design-system framework
react-markdown+remark-gfm, for anywhere markdown renders
Backend (when a Next.js route isn't enough)
- FastAPI, Python 3.12, async
- MySQL, transactional data (users, bookings, leads)
- ClickHouse, when there's actual analytics volume
AI layer
- Ollama, inference daemon
- OpenAI SDK pointed at Ollama, same contract, different endpoint
Infrastructure
- Ubuntu 24.04 on a standard VPS
- Apache 2, reverse proxy,
ProxyPass / flushpackets=onfor streaming endpoints - systemd, process management
- Let's Encrypt, TLS
What's deliberately absent
- No Vercel / Netlify / Cloudflare Workers. Every vendor dependency is an unknown cost curve and an inherited obligation for whoever maintains the site next.
- No Kubernetes. One VPS + systemd is enough for 99% of what small technical operations need. The complexity of k8s only pays off at a scale most sites never reach.
- No GraphQL. REST is simpler and every developer already reads it.
- No frontend state library beyond React's hooks. If the app needs Redux, it probably needs a refactor instead.
Why "boring"
The people who will maintain a system at month 30, when the original builder is on something else, have no context for exotic choices. Every load-bearing exotic library is a future landmine.
Tailwind + Next.js + FastAPI + MySQL has been a mainstream stack since 2023. Tutorials exist. Stack Overflow has answers. Any junior developer can read it. That's the feature, not a limitation.
When exotic becomes correct
Reach for newer tooling when the boring stack genuinely fails: real-time sub-100ms collaborative editing, 10M+ concurrent connections, GPU-heavy ML pipelines, edge-of-network personalization at scale. None of these describe "a website with a chatbot and a booking form."
The discipline is knowing when you're actually in that territory versus choosing novelty because it's novel.
- Alex Kargin. More engineering writing at kargin-utkin.com.
dArt Studio installs AI for local businesses in Broward & Palm Beach County, FL. We reply within 1 business hour.