OSOsama SolimanSoftware Engineer
All work ↑
Case study · Mobile platformNOV 2025—PRESENT

Masajidna

Designing one coherent mosque platform across three Flutter applications—without losing reliability, affordability, or ease of use.

RoleOwner · sole developer
Architecture4 software components
Experiences3 user-facing apps
StatusWorking · actively maintained
Actual product

Live experiences for mosques and their communities.

These are real screens from the working platform, which I independently built, own, maintain, and update. It is published under Muhkam Limited.

One community. Three very different interfaces.

Mosque administrators needed a practical way to manage information. Community members needed trustworthy prayer times and discovery. Public display screens needed a clear, glanceable presentation that stayed useful when connectivity became unreliable.

The engineering challenge was to create three focused experiences backed by one consistent data model—while keeping database reads, operational cost, and maintenance complexity under control.

System map

A shared source of truth.

ADMIN APPManage mosque data
MASJID COREProvider-independent domain
FIREBASEAuth · Firestore · Functions
COMMUNITY APPDiscover & plan
DISPLAY APPInform at a glance

Model the data around real usage—not theoretical purity.

Prayer times were embedded within mosque documents so common screens could load the information they needed without triggering a chain of extra reads. Firestore persistence supported an offline-first experience and reduced repeated network activity for returning users.

Fewer readsCost-aware document structure
Faster returnsLocal persistence and caching
Clear boundariesRiverpod-managed application state
Engineering scale

Concrete system rules.

Numbers drawn directly from the product and implementation specifications.

4Architectural components

Shared domain core, admin app, customer app, and display web app.

6Permission roles

Super admin, applicant, admin, manager, viewer, and customer/guest.

3Schedule modes

Manual entry, automatic calculation, and validated CSV import.

5 minPairing-code lifetime

Random six-digit display codes rotate and expire automatically.

12 secAnnouncement rotation

Simultaneously active display announcements rotate on a fixed cadence.

650 msAddress-search debounce

Photon search begins after three characters and returns up to five results.

Signature feature

Can I reach a mosque before prayer starts?

The “Catch Prayer” experience combines the user's location, upcoming prayer times, and the Google Distance Matrix API. It filters options by realistic travel time instead of showing the nearest mosque in a straight line.

  • Location-aware mosque candidates
  • Travel-time calculation through Google APIs
  • Prayer-window comparison
  • Useful fallback and error states
CURRENT TIME+TRAVEL TIME<PRAYER STARTREACHABLE ✓

Security and resilience were product features.

Firebase App Check, query-size restrictions, and rate limiting helped protect backend resources. Offline persistence made the applications useful through intermittent connectivity. Each safeguard was designed around the way the platform would actually be used.

Outcome

A working product system—not a collection of screens.

3Working Flutter applications
6Implemented permission roles
2Languages with RTL support

All capabilities described in this case study are implemented and working. I continue to maintain and update the product. Usage and performance metrics are omitted unless they can be supported by analytics or another verifiable source.