Case study · Wasilah

The app I refuse to make money from.

A free, offline-first Islamic companion, built solo in Flutter. A study in treating the absence of monetization as the brand's moat.

Role
Solo: brand, product, build, growth
Stack
Flutter, fully client-side
Status
Live on App Store & Google Play, free
01 · The brief

The brief I wrote for myself.

Walk the Islamic app category for ten minutes and the pattern is obvious: interstitial ads on the prayer-time screen, a "Pro" tier that locks the Tasbih counter, dark-pattern notifications, and a Zakat calculator that hardcodes US dollars and silently breaks for everyone else.

The audience deserves better, and is more design-literate and more skeptical than most playbooks assume. The gap: there is no mainstream Islamic app built like a well-funded, well-mannered consumer product, but with the economics of charity instead of extraction. So I built it, not as a startup, but as sadaqah jariyah, ongoing charity.

The reward is not in the dashboard. That sentence is the brief. Everything else followed from it.
02 · The constraint

The constraint that did the heavy lifting.

Never monetizing wasn't a flourish. It was the single most useful product constraint I could give myself. It forced:

  • No ads. Every screen is the actual product. Nothing to skip, dismiss, or wait through.
  • No IAP, no Pro tier. Every feature is free from install. No upgrade prompt, ever.
  • No dark-pattern notifications. Alerts fire only for prayers the user opted into. Engagement is structural, not manufactured.
  • No account, no email capture. Wasilah doesn't know who you are. There is no funnel.

Every trade-off where a normal product optimizes for revenue, I optimized for dignity. The result is a brand position no competitor holds: one product in the category whose message is genuinely "we do not want anything from you." That is the moat.

03 · Brand

The brand decisions.

Champagne gold on emerald green, never gold on cream. The rule lives in the codebase as a theme constraint that refuses to render gold text on the cream surface. Finicky, and the reason every screen reads as one brand. Emerald is the Madinah association; gold is the tadhhib gilding of Mamluk and Ottoman manuscripts. Centuries old, and almost no Islamic app uses it well.

The hardest call was illustration. My first three attempts at figurative SVG (Kaaba scenes, mosque silhouettes) were rejected in review, mine and others'. The lesson, now a standing rule: stop drawing the architecture. Use Arabic calligraphy and mihrab geometry as the visual language, because calligraphy is what the tradition has always been about.

And bilingual is not translated. English and Bangla from day one, Arabic in v1.1. Each language gets its own creative treatment, written native, not run through a translator.

04 · The build

Built solo, in the open.

Flutter, fully client-side, no backend of my own. That was deliberate: no backend means no data collection, no servers, no recurring cost, no security surface beyond what the platforms provide. Privacy and terms pages sit on GitHub Pages at wasilah.site; prayer and audio data come from open APIs.

The work was AI-augmented from week one, as a review-decide-ship loop, not autopilot. The discipline that made it hold: I never shipped a feature I hadn't read and understood line by line. The audio architecture is the example I'd give in an interview, gapless Quran recitation across surahs needs the player's state and current-index streams merged into one provider, because the naive implementation silently misses track-advance events. Small fix; the difference between audio that "works" and audio that works.

A solo, non-CS-degree marketer shipping a polished cross-platform product in months is the meta-insight here. The tools are here. The bar has moved.

05 · Launch

The launch, and the App Store cycle.

The first builds were rejected, once on the location pre-prompt UX. The fix was a single screen: a brand-styled explainer that appears before the native permission dialog and says, in plain language, why location is needed (prayer times, Qibla) and what is not done with it (no tracking, no transmission off-device). Reframed, not re-architected.

App Store rejections feel catastrophic at 2 AM and look routine at 10 AM. If the feature is sound, the fix is usually UX scaffolding around the same code.

In parallel I built the marketing system: a daily bilingual content rhythm on a principle I call "calling, not converting." The posts are not about Wasilah; they are about the tradition. The store badges sit in the footer, structural, never an in-body "download now." A custom HTML-to-image renderer turns one markdown file into square, story, and thumbnail in a single command, saving hours of design labour a week.

06 · What it taught me

Marketing to Muslim audiences, at scale.

1. The audience is sophisticated and undermarketed-to. Treat them like adults. Sincerity is read through specifics and restraint, not performative reverence. Assume your audience already knows what Maghrib is.

2. Bilingual is not translated. The same caption in three languages reads as machine-translated to native speakers in all three. The right pattern is parallel writing, native in each. A hiring problem, not a tooling one.

3. "Calling, not converting" compounds; ask-driven content corrodes. Posts that ask for nothing build a trust account. The badge in the footer is enough. Uncomfortable for direct-response training, and the only thing that works in faith-adjacent verticals at scale.

07 · What it proves

What Wasilah stands for.

One product, end to end: a brand position held under a self-imposed quality bar, a polished cross-platform build, a daily bilingual content system, and an App Store review cycle survived without breaking voice or velocity. Made for the global Muslim consumer market, an audience I understand rather than have to learn.

It is live, it is free, and it will stay free.

See it for yourself.