Every time I wanted to build a text-to-image SaaS, it started the same way:
Set up auth.
Set up database.
Figure out how to run AI models.
Add background jobs.
Patch together email flows.
Not hard — just mentally exhausting.
After the third time doing this, I realized something:
The problem wasn’t the AI models.
The problem was everything around them.
The problem everyone building AI products runs into
Most text-to-image demos look simple on the surface.
You send a prompt.
You get an image.
But the moment you try to turn that into a real SaaS, things get messy fast:
Long-running jobs blocking requests
Model execution that doesn’t fit traditional request/response
No clean place to store generations
Automation logic scattered everywhere
Email workflows bolted on at the end
You spend 80% of your time on glue code instead of product logic.
The path I took instead
Instead of starting from scratch again, I asked:
“What if I only solved this problem once — properly?”
So I focused on a few principles:
Treat AI generation as async-first
Keep model execution completely decoupled
Make database + automation the default, not optional
Assume emails and workflows will be needed from day one
Once I had that mental model, everything clicked.
A small but important technical shift
One thing that helped a lot was treating model runs as jobs, not requests.
// pseudo example
await enqueueGeneration({
prompt,
model,
userId
})
The UI doesn’t wait.
The server doesn’t block.
The result appears when it’s ready.
That single decision removed a ton of complexity.
What I’d do differently if I started today
If you’re building anything AI-powered:
Don’t prototype with sync flows if production is async
Don’t “add emails later” — they always matter
Don’t underestimate how much time infra repetition costs
Optimize for iteration speed, not cleverness
Most burnout comes from rebuilding the same foundation, not from the product itself.
Final thought
I didn’t build this because I wanted another starter kit.
I built it because I was tired of rebuilding the same invisible parts
and wanted to spend my time on things users actually notice.
If you’re building AI products in public,
you’re probably fighting the same battle — just with different tools.
Happy to swap notes 👋
SOCIAL SHARE CARD GENERATOR