That offhand comment launched a 2-weeks learning journey from a simple React component to a full production SaaS.
This technical journey taught me that "just an LLM wrapper" is like saying a restaurant is "just a kitchen." Here's how I built it:
Stack: FastAPI + SQLAlchemy + Auth0 + Stripe + OpenAI API
- Multi-step wizard flow with session management
- Background audio generation with OpenAI TTS
- User auth, subscription tiers, usage tracking
- Rate limiting, input sanitization, secure file storage
- Database migrations, monitoring, deployment scripts
The non-obvious challenges: - Prompt engineering to make the child the hero of the stories
- Voice selection and prompts to find a tone that doesn't terrify kids at bedtime
- Session state across wizard steps without losing progress
- Handling OpenAI API failures gracefully
- Storage for generated audio files
- Making it parents and grandparent-friendly
Claude Code helped throughout, as a senior engineer to bounce ideas off and to write quite a bit of code. I reviewed, understood, and sometime rewritten every block of code. The learning was the point, in this case.The humbling realization: Yes, it's "just" an LLM wrapper. But so is ChatGPT. The value isn't in the AI call - it's in solving a specific problem for specific people and package it in a user-friendly way. Parents don't care about tech stacks. They care that bedtime takes 20 minutes instead of 2 hours.
Site: https://bedtimestories.pro/ (3 free stories, then paid)
Feedback is welcome.