Dawood Ahmed
Email me
← all work

case study · Community · 2025–26

E-Masjid

My BS IT final-year project: a platform that helps local mosques run donations, prayer times, events, nikah bookings and community fund requests.

E-MasjidRecorded from the live demo server
My role
Backend developer · team of two (frontend: Haris Ehsan)
For
BS IT final-year project · University of the Punjab
Status
Demo retired · code on GitHub · code ↗
Stack
Node.js · Express · MongoDB (Mongoose) · JWT (httpOnly cookie) · Stripe (test mode) · Resend · PM2 + Caddy

The demo server retires in October 2026; the code and full documentation stay on GitHub.

the problem

Local mosques run donations, events and requests for financial help on paper and by word of mouth. The project put a mosque's daily work in one place — with each mosque's data kept strictly separate.

what I built

  • Roles: a manager over several masjids, an admin per masjid, committee members and community users
  • Isolation: an admin can't see or change another masjid's data — enforced everywhere in the backend
  • Registration with a 6-digit email code, donations (Stripe test mode), prayer times, events and nikah bookings
  • A committee vote on every fund request, with email notifications for votes and decisions
  • Auth with a JWT in an httpOnly cookie and bcrypt-hashed passwords
  • Deployed on a server behind Caddy, run with PM2

decisions that mattered

Isolation first

An admin's access is limited to their own masjid throughout the backend, so one mosque's records never reach another's.

A committee, not one person

Fund requests go to the masjid's committee for a vote; every vote and final decision is emailed.

Tokens out of reach

The JWT lives in an httpOnly cookie, where page scripts can't read it.

inside

  1. InterfaceReact + Vite (frontend by Haris Ehsan)Community, admin and committee screens
  2. APINode.js + ExpressRoles, per-masjid isolation, voting, email
  3. DataMongoDB + MongooseMasjids, users, donations, events, requests
  4. OpsPM2 + Caddy · Stripe · ResendServer, payments (test) and email

result

  • Built and defended as a BS IT final-year project, supervised by Mr. Muhammad Kamran.
  • Code, proposal, SRS and SDS are public on GitHub.