Saf
Co-founded under Darul Uloom Michigan. Saf gives each participating community its own portal covering Hifdh progress, attendance, assignments, admissions, and secure communication, alongside prayer times, events, donations, and Hajj/Umrah package management.
- Stack
- TypeScriptReactSupabasePostgreSQLTailwind CSSEdge FunctionsGit
- Impact
5
Products unified
200+
Users
300+
PRs shipped
43
Deploys
- Highlights
- Five products under one platform, each community on its own portal
- Password and role verification moved server-side into a Supabase edge function
- Postgres RLS enforced across 4 portals
- Typed CI and forward-only SQL migrations for 30+ educators and admins

The problem
Religious communities run on software that does not exist for them. A masjid with a Hifdh program tracks memorisation progress in spreadsheets, takes admissions on paper, announces prayer times on a whiteboard, and manages Hajj packages over WhatsApp. Each of those is a real product, and none of them are worth building alone for one community.
Saf grew out of the grading app I built for Darul Uloom Michigan. Once one community had working school management, the next question was immediate: what about admissions, what about prayer times, what about the pilgrimage packages.
Approach
Five products, one platform, per-community portals. Arshad handles school management. Tajul Haramain handles pilgrimage packages. Then admissions, prayer times, and staff time clock. Each participating community gets its own portal, but they share infrastructure — otherwise every new community means a new deployment to maintain.
Authorisation server-side, without exception. The most consequential thing I changed was moving password and role verification out of the client and into a Supabase edge function, with Postgres row-level security enforced across all four portals. Multi-tenant systems where clients assert their own role are one mistake away from a community's student records being readable by another community.
Migrations forward-only, CI typed. 300+ PRs and 43 deploys across a live system used by 30+ educators and admins. Forward-only SQL migrations mean no deploy can silently roll a schema backwards under live data, and typed CI catches the class of error that only shows up when a real admin clicks the thing at 9pm.
Where it stands
Live with 200+ users. Currently integrating AI features and an investor demo hub ahead of a venture raise and a scholar-backed public launch.
The codebase is private. If you want a walkthrough, send me a message.