Moaz MuhammadAI Engineer
← All work
EdTech platform · Live productLive Private code

Eilm

An Arabic-first platform for independent academies. Each academy gets its own storefront, sells courses, teaches through lessons, assessments and live sessions, and takes payment into its own account.

Eilm English landing page — "Knowledge with your name. Progress with meaning."
155
Database migrations

Production ledger matches the repository with nothing pending (verified 24 Sep 2026).

~840 + 91
Automated tests

About 840 Vitest/Playwright cases plus 91 pgTAP database test files. A release gate blocks lint, type, translation-parity or build failures.

5 real · 3 demo
Academies

Five academies created by real users alongside three demonstration showrooms. No revenue is claimed.

2.7 s
Page p95 under load

25 simulated users on a 2-core cap. Published as a known gap, not hidden.

Problem

Independent academies in Egypt and the Gulf need more than a translated dashboard. They need their own identity, Arabic that holds up across every screen, and payment that lands in their account, not a platform's. Meanwhile most learning tools report views, not what learners actually achieved.

Approach

A greenfield Next.js and Supabase platform where tenancy lives in the database. Every table is guarded by deny-by-default row-level security, and pgTAP tests prove one academy can't read another's data.

Payments were designed around a hard constraint. Rather than pretend to be a payment platform, Eilm is never the merchant of record. Each academy connects its own Stripe (a restricted key) or Paymob account, and provider webhooks are treated as hints, re-verified against the provider before anything changes.

The AI layer follows the same rule as everything else I build. "Ask this lesson" answers only from the lesson transcript, must quote the passage it used, and treats "not covered in this lesson" as a successful answer. A quote that isn't actually in the transcript is treated as a fabrication and refused. AI is off by default for every academy, metered and capped.

Challenges

Breadth, alone. Storefronts, courses, assessments, live sessions, certificates, payments, support and analytics all have to survive Arabic RTL, two languages and real concurrency. A 25-user simulation on a 2-core cap found two races (both fixed) and a page p95 that is still too slow, and that number is published.

Outcome

Live at eilm.live with five academies created by real users alongside three demo showrooms. Built over 749 commits with 155 migrations, about 840 automated tests, 91 database test files and 195 written decisions. No revenue is claimed.

What I'd change

Bring the p95 under load down before adding features. Then prove the first live card payment end to end, since the recovery path for a checkout that succeeds at the provider while the app dies is built and unit-tested but hasn't yet run against a live provider.