dart-studio
← All writing
·2 min read·Alex Kargin

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.

stackengineeringboring-tech

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=on for 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.

Next step

Thirty-minute scoping call. No pitch, no retainer.

Tell us what eats your week. We'll tell you, honestly, whether AI can help — and if it can't, we'll say so.

Book a scoping callOr use the contact form →

Serving Broward & Palm Beach County, FL.