Baby Book Tracker is on the App Store for iPhone and iPad.
Read more at https://babybooktracker.montalesi.dev/
Since before my son was born I was aware of the importance of reading to him.
While browsing online I stumbled upon the 1000 books before 5 challenge and looked for apps that would help me participate in it.
I found a couple but they didn't really satisfy my needs because many of the books that I own didn't appear when I tried scanning them and the app I was using wouldn't let me add my own.
I decided to use Notion for a while but that was not the best UX and was not very engaging.
My field of expertise is Enterprise SaaS, not really iOS development but with some help from GPT Codex and Claude Code I was able to quickly iterate and get a MVP done for my own app.
This was my first time "vibe coding" an entire app from scratch and overall it was an interesting experience.
I still had to do a lot of reading about React Native to ensure the LLMs were not doing something crazy but after a few back and forth I ended up with a product I was very satisfied with.
When setting up to create this app I wanted two things especially:
- privacy
- no need for an account
I wanted the user to own the data and also I wanted them to have something they could own and use forever once paid instead of being forced on a subscription plan or having to navigate through banner full of ads.
The app is pretty simple, I will now describe a bit what it does and the stack and UI.
What it does
- Baby profiles: one profile per child, supports multiple kids
- Book library: shared across all babies so you don't re-enter titles
- Barcode scanning: point at the ISBN on any book and it auto-fills everything from an open book database
- Manually add books: if you can't scan them, you can manually add them
- Reading log: pick the baby, book, reader, and date. Takes about 10 seconds
- Stats: streaks, total sessions, unique books, weekly activity chart
- Share card: exportable image with your baby's reading stats
- Privacy-first: everything stays on device by default, optional iCloud sync, no account needed
Tech stack
- React Native 0.81 with New Architecture enabled
- Expo SDK 54 and Expo Router v6
- React 19
- TypeScript
- i18next for localization (EN, IT, DE, FR, ES, JP, KO)
- RevenueCat for in-app purchases
- CloudKit for optional iCloud sync, no backend required
- Vitest for tests
- EAS Build for CI/CD and App Store releases
The screens
Home
Recent sessions, today's reading summary, and a big "Log a session" button. The goal was to make logging fast enough that you'd actually do it.
Books
Your full library with cover art and read counts. Tap a book to see who read it, when, and to which baby. The barcode scanner lives here too.
History
A full log of every session, filterable by baby, book, or reader. Useful for settling the "I read more than you" debate with your partner.
Stats
Current streak, total sessions, unique books, and a chart of activity over time. Probably the screen I open most.
Baby detail and share card
A profile page per baby with a shareable image card you can save or send.
A few technical decisions
Barcode scanning was the make-or-break feature. Manually entering a book title every single time would kill the habit fast. Scanning an ISBN takes two seconds and pulls the title, author, cover, and page count automatically. Built with expo-camera.
CloudKit instead of a backend was an easy call. Sync goes through the user's own iCloud account so I never touch the data, there's nothing to maintain, and it costs nothing to run.
i18n from day one paid off. Every string goes through i18next, so adding 6 more languages later was a translation job rather than a refactor. App Store metadata is kept in the same Markdown source and exported automatically during releases.
Scripted releases mean the whole pipeline runs in one command: bump version, build IPA with EAS, export metadata, upload to App Store Connect. No Xcode, no clicking around in App Store Connect.
On vibe coding a real app
AI-assisted development works surprisingly well for a project like this. The models have clearly seen a lot of Expo and React Native code. Things like wiring up routing, integrating third-party SDKs, scripting the release pipeline, most of it came out nearly ready to use.
Where it struggled was anything with complex local state or subtle iOS UI quirks like keyboard avoidance and bottom sheet interactions with system gestures. Those needed more back-and-forth or I just wrote them myself.
The main thing I learned is that prompting for code is a skill. Being specific about your setup and pasting in the relevant existing code makes a big difference. Think of it like onboarding a strong dev who just needs good context to do good work.
I found Codex to be better at reasoning and finding weird bugs and Claude better at doing most of the work.
Try it
Baby Book Tracker is on the App Store for iPhone and iPad.
Read more at https://babybooktracker.montalesi.dev/
Below is a short demo video of the app, it's not the most recent build but you get the idea of how it works
Cover image from: https://unsplash.com/photos/father-and-son-reading-a-book-together-on-couch-kWFA09iZmGI







Top comments (0)