Building Sakinah: Lessons From My First Product

React Native TypeScriptSupabase

Monday, January 12, 2026

For the past year I've been building Sakinah, a mobile app that helps Muslims memorise the Quran and connect that memorisation to their daily prayers. It's approaching beta. This post is what I've learned so far building a product from scratch as a solo developer.

Like a lot of Muslims, I've wanted to be more consistent with Quran memorisation. I'd go through phases of progress, then lose momentum. The frustrating part was that I was already praying five times a day, and every prayer is a chance to recite what you've learned, but I'd default to the same short surahs out of habit.

I looked for an app that could bridge memorisation and prayer. The market was fragmented. Tarteel AI handles memorisation well. Pillars does prayer tracking well. Nothing meaningfully connected the two. So I decided to build it.

Early on I was tempted to do too much. AI learning paths, gamification, social features. I kept coming back to one principle: the best tool is the one people actually use. The 3x3 method is a proven approach to Quran memorisation that scholars have used for generations. Building a polished digital version of something already trusted felt more valuable than inventing something unproven.

So the MVP does two things. Structured memorisation with audio support, and prayer tracking with spaced repetition recommendations. That's it. No dua library, no Ramadan mode. Those can come later once the core works.

A few technical decisions made a real difference to how the project moved.

I originally planned the backend on AWS, with Amplify, Cognito, DynamoDB, and Lambda. I wrote a full architecture with CloudFormation templates. In practice it was overkill for shipping an MVP. Supabase gave me authentication, a Postgres database, and cloud sync with a fraction of the setup. The developer experience is much better for a small team, and I can add complexity later if the user base demands it.

I also tried to perfect the experience across iOS, Android, and web at the same time. Progress was slow. Focusing on iOS first meant I could move three times faster. The React Native codebase makes Android straightforward to add after launch.

The biggest technical investment was refactoring early. The original memorisation session was a 1,400-line monolithic component, with audio, progress tracking, UI state, and API calls all tangled together. Spending a week breaking it into custom hooks and a service layer felt like lost time. It's paid for itself many times over since. Every new feature now slots in cleanly instead of risking something else breaking.

One thing that's been different about this project compared to my professional work is the cultural sensitivity involved. This isn't a productivity app, it's a tool people use for worship. Quranic text needs respectful presentation with proper Arabic rendering and RTL support. The Bismillah behaves differently across surahs and needs careful handling. Prayer times need to be accurate for any location globally. These aren't nice-to-haves. They're baseline expectations users will notice immediately if you get wrong.

The design reflects this too. Traditional greens and golds, generous whitespace, clean typography. An app for spiritual practice shouldn't compete for attention the way most apps do.

A few things I'd say to anyone building their first product.

Start with a method, not a feature list. The 3x3 method gave Sakinah a clear identity from day one. Everything else, the UI, the algorithm, the audio, serves that method. Without it I'd have built a generic Quran app with no reason to exist.

Choose boring technology. React Native, TypeScript, Supabase, Expo. Nothing bleeding-edge. Everything well-documented with large communities. When you're building alone, you can't afford to debug your tools as well as your product.

Ship one platform first. Trying to launch everywhere at once is a trap. Pick one, get it right, expand later.

Refactor before it hurts. The week I spent refactoring felt unproductive. Every week since has been more productive because of it.

Sakinah is approaching beta on iOS. I'll write more once it ships and once there's something real to say about how it performs in the hands of actual users.