When I started building, I had to make a few foundational choices fast. Here's what I picked and why.
FastAPI (Python) for the backend
The core of LumiPost is AI, vector embeddings, similarity scoring, summarization. Python has the best ecosystem for that, and FastAPI makes it easy to build a clean API without ceremony. No regrets.
Nuxt 3 for the frontend
I went with Vue over React mostly for the community. The Nuxt ecosystem felt more opinionated in a good way, less time debating architecture, more time building.
Supabase + pgvector
Postgres with vector search built in. Being able to store embeddings and run cosine similarity queries in the same database was a huge simplification.
The hardest part: I'm not a designer
Picking the stack was easy. Making the UI actually feel coherent and readable? That took way longer than I expected. No framework saves you from taste.
The choice I'd make again without hesitation: Mistral AI
Mistral lets you enforce structured JSON output natively. For a product where the AI pipeline is the core feature, that's not a nice-to-have. It's the difference between a reliable product and a fragile one. No prompt-hacking to parse responses, no edge cases blowing up in production.
If you're building anything AI-powered, that alone is worth the switch.