← Home
Case study
Womaniya Yoga
Customer and admin apps for my wife's yoga studio, plus its website, built as a side project to learn mobile development with AI in languages I didn't know.
- Built for
- My wife's yoga studio. The studio and its work are hers; this is my learning project around it.
- Time
- 26 May – 24 Sep 2026 (about 4 months, 41 commits)
- AI tools
- Claude Code (Claude Sonnet 4.6, then Fable 5 and Sonnet 5), with a running change log the AI reads at the start of every session
- Stack
- Flutter and Dart for Android and iOS, Firebase (Auth, Firestore, Cloud Functions, Cloud Messaging), Next.js 16 and Tailwind CSS for the website
User stories
- As the studio admin, I want students, batches, fees and attendance in one app, so that the studio's records live in one place.
- As a student, I want my diet plan, weight log and attendance on my phone, so that I can follow my programme day to day.
- As the studio admin, I want to load a whole diet plan from an Excel sheet and preview it before it is saved, so that setting up a plan isn't one form at a time.
Situation & constraint
This is a learning project, not a client engagement. I wanted to improve my AI skills and see how fast I could pick up unfamiliar platforms, so I built these apps for my wife's studio, for both Android and iOS, in languages I did not know beforehand.
Architecture
- A monorepo with two Flutter apps, customer and admin, sharing one package for models, repositories and services. Neither app imports from the other.
- Screens never talk to Firestore directly. All reads and writes go through repositories in the shared package.
- Firebase Cloud Functions in TypeScript run the notification engine; Cloud Messaging delivers the notifications.
- Separate Firebase projects for development and production, so experiments never touch real data.
- Bulk diet-plan import: parse an Excel file, preview what would be created or updated per sheet, then commit. Importing the same file twice never duplicates data.