Darija Pro helps people with a Moroccan family understand the messages they get in darija, and most importantly answer them.

Conflict of Interest Award. I'm a RevenueCat employee. Darija Pro is my side project. It was built and shipped during Shipaton: first commit on August 7, live on the App Store on September 2, and the "Darija Pro" 2.0.1 release on September 19.

The problem

Darija, Moroccan Arabic, is the language of the family table for millions of people in France, Belgium, Spain and beyond. Their children often understand it but don't dare answer. The family group chat arrives in arabizi: darija typed with Latin letters and digits (wach, 3la, 7na), with no standard spelling. The big language apps don't teach darija, and dictionary apps stop at a word list.

The app's own onboarding confirms it: 59% of the people who answer pick the "heritage" profile (they grew up around darija), and the first blocker they name is answering, ahead of pronouncing.

What it does

  • Translate. Paste a message from the family: it's decoded word by word, offline, from a hand-edited dictionary. Online, the app explains the tone and the intent, then suggests three replies, each with a Moroccan voice. The other way round, type English and get darija with the Arabic script, the word-by-word, and the right form for a man or a woman, family or polite.
  • Verified Every AI word is checked against the dictionary. The "Verified" badge appears only when every word is grounded. The AI never writes the dictionary.
  • The Coach. 14 real-life scenes (the café, a taxi, the family table, the souk…). It plays the other part, offers two verified lines each turn, corrects gently ("we'd rather say…") and speaks.
  • A Moroccan voice on every word. 4,029 entries, 387 phrases and 620 verb tables: 21,413 bundled clips, normal or slow speed, offline.
  • Learn. A three-minute daily dose (listen, build the sentence, complete the verb, say it out loud and get a verdict), a 14-scene path, a review of saved words and a short track to read arabizi.
  • Dictionary. Search in English, in arabizi (wach, wash, wesh) or in Arabic. The only darija conjugator: 620 verbs, 16,997 forms, with the feminine and the negation.
  • Décodeur share extension. Select darija in any app → Share → "Decode in darija": one card per word, with no network.
  • Works offline The dictionary, the decoder, the drills, the path and the review work in airplane mode.

How it makes money (RevenueCat)

  • Onboarding, then a hard paywall. An 11-step questionnaire (profile, goal, blockers, an offline demo on bundled content, a personalised close) ends on a hard paywall. A hard wall was a deliberate choice, backed by RevenueCat's State of Subscription Apps data on hard paywalls versus freemium.
  • RevenueCat Paywalls. The wall is a remote paywall rendered by RevenueCatUI's PaywallView from the current offering. I designed it in the paywall builder, iterated on it with the AI paywall editor and the RevenueCat MCP, and ship copy and layout changes without an app update.
  • One entitlement, three plans in one offering: monthly ($3.99, 7-day free trial), yearly ($14.99, 14-day free trial) and lifetime ($34.99). Lifetime matters: warm audiences buy it. Eight lifetime purchases came in the 43 hours after one creator video.
  • Customer Center handles subscription self-service. RevenueCat → PostHog joins purchases with the in-app funnel, and Apple Search Ads attribution shows in RevenueCat charts.
  • Costs under control. The AI runs on Gemini through Firebase AI Logic, protected by App Check, with Remote Config kill switches and client-side caps.

Traction: the first four weeks (RevenueCat, September 30)

  • 759 new customers, 154 trials started
  • $574 revenue ($411 proceeds) from 29 transactions
  • 14 active subscriptions and 120 active trials
  • 9 of the first 16 monthly trials converted to paid (as of September 29); the first yearly trials end on October 4
  • 4.9★ on the French App Store (9 ratings); #1 for "darija pro" and top 3 for "dictionnaire darija" and "traduction darija" in France

Growth: what worked, what didn't

  • Apple Search Ads from day one: $426 for 378 installs. Judged on cost per trial instead of cost per install, the generic keywords cost about $12.50 per trial, so I paused them and kept only the brand keyword.
  • One creator video (TikTok, 237K followers, flat fee) on September 20: 160 French and 30 Belgian first downloads that day (about 15 a day before), then 232 new customers, 70 trials and 8 lifetime purchases in the next two days. Most viewers searched "darija pro" in the App Store instead of using the link, and the brand ad caught them. A week later, a second wave of those users came back, and half of them paid.
  • darija.pro in English, French and Spanish, with guides and a promo-code page; the App Store keywords rebuilt from ranking and search-term data.

How I built it

  • Timeline: first commit August 7 · RevenueCat project August 9 · v1.0 live September 2 · Darija Pro 2.0.1 (new design, AI layers, Coach) live September 19. More than 750 commits, all during Shipaton.
  • App: native SwiftUI (iOS 17+), XcodeGen, a SQLite dictionary (GRDB) built by a Python pipeline from curated CSV files, with test vectors shared by the Python and Swift suites. 21,413 audio clips ship inside the app (433 MB, on purpose: offline is the promise).
  • Services: RevenueCat SDK + RevenueCatUI, Gemini via Firebase AI Logic, App Check (App Attest), Remote Config, PostHog. The share extension links no network code at all.
  • Design: "Zellige nuit": an always-dark ink ground with a faint zellige lattice, saffron as the only action colour, the khatim star as the brand mark, and Readex Pro for both Latin and Arabic. Animations respect Reduce Motion.

Challenges

  • No standard spelling: 97,252 search keys map arabizi variants (wach, wash, wesh), digits (3 = ع, 7 = ح) and the Arabic script to the same word.
  • Trustworthy AI for a dialect, especially for voices: I had to generate, then verify every word against the dictionary; no badge when anything is not grounded.

What's next

Pronunciation practice v2, more creators, the first yearly-trial conversions (October 4–9), paywall experiments with RevenueCat Experiments once the volume allows, and Android: people already joined the waitlist.

Built With

Share this project:

Updates

Submission history