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. Not a single framework you haven't heard of. Here's why we're proud of that.

stackengineeringboring-tech

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.

See our services · Book a scoping call

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 call

Serving Broward & Palm Beach County, FL.