Mosque Management System: Open-Source Laravel Platform

Mosque Management System: Open-Source Laravel Platform

7 min read Mohamed Said Mohamed Said

Introduction

The Mosque Management System is a free, open-source, full-stack Laravel application for mosque websites and day-to-day digital operations. It combines a public website, a Filament-powered admin panel, multilingual content management, prayer-time automation, Islamic content publishing, contact management, media galleries, and a flexible page builder in one production-ready codebase.

The project was built by Engineer Mohamed Saiedmsaied.com — and is offered as ongoing charity, صدقة جارية, for the Muslim community. Contributions, improvements, translations, and forks are warmly welcomed.

Repository: github.com/EG-Mohamed/Mosque

Built for Real Mosque Websites

The system is designed to cover the common needs of a mosque’s online presence without requiring every mosque to build a custom CMS from scratch.

Public website sections

The frontend includes routes and content areas for:

  • Home page with dynamic page-builder blocks
  • Prayer times with daily and monthly schedules
  • Special prayers such as Ramadan, Eid, weekly, and other grouped prayers
  • Events for programs and activities
  • Announcements for community notices
  • News archive with categories and detail pages
  • Media gallery with collection filters
  • Islamic library for Quran verses and hadith content
  • Jumu'ah khutba archive with category filters and detail pages
  • Staff profiles for scholars and mosque team members
  • Contact page with a live form and Google Maps embed
  • Custom pages powered by the reusable page builder

Example public routes:

/                    # Home
/page/{slug}         # Custom pages
/prayer-times        # Prayer schedule
/events              # Events listing
/announcements       # Announcements
/news                # News archive
/news/{slug}         # News detail
/gallery             # Media gallery
/islamic-library     # Quran & hadith
/khutba              # Khutba archive
/khutba/{slug}       # Khutba detail
/staff               # Team & scholars
/contact             # Contact form

Laravel 12 + Filament 5 Admin Panel

The admin panel is built with Filament 5 on top of Laravel 12, giving mosque administrators a powerful interface for managing content and operations.

Key admin capabilities include:

  • Dashboard with mosque settings
  • Full CRUD for the main content sections
  • Dedicated resources for news, news categories, khutbas, and khutba categories
  • Prayer time management with configurable adjustment factors and offsets
  • Special prayer management with type classification and recurring support
  • Contact submission inbox
  • Language management from the UI
  • Translation string management from the admin panel
  • Dynamic navigation links for published non-home pages
  • Home page toggle that forces the home slug, published state, and navigation visibility
  • Model caching support through a Cacheable trait

The admin experience also includes practical field components such as:

  • Phone input with country picker via ysfkaya/filament-phone-input
  • Map picker for mosque location via salemaljebaly/filament-map-picker
  • Font Awesome Blade icons via owenvoke/blade-fontawesome

Dynamic Multilingual Architecture

One of the strongest parts of the project is its database-driven language system. Languages are not hardcoded in config files. They can be added, removed, and managed directly from the admin panel.

The project ships with Arabic, English, and Polish preconfigured, including automatic RTL/LTR layout switching. Arabic works out of the box with proper right-to-left support.

The localization stack includes:

  • spatie/laravel-translatable for translatable model fields
  • bezhansalleh/filament-language-switch for switching the Filament language context
  • statikbe/laravel-filament-chained-translation-manager for editing translation strings in the admin panel
  • abdulmajeed-jamaan/filament-translatable-tabs for clean translation tabs in forms
  • coding-socks/lost-in-translation and eg-mohamed/laravelmissingtranslations for detecting missing translations during development

Adding a new language is intentionally simple:

  1. Open the admin panel.
  2. Go to Languages.
  3. Click Add Language.
  4. Add a language such as French, Urdu, Turkish, or any other required locale.

No code changes are required for that workflow.

Flexible Page Builder with 25+ Blocks

The project includes a reusable page builder powered by redberry/page-builder-plugin. This gives mosque teams the flexibility to build pages without changing Blade templates for every new layout.

Available blocks include:

  • Hero
  • Slider
  • Prayer Times
  • Special Prayers
  • Events
  • Announcements
  • News
  • Quran Verse
  • Hadith
  • Staff
  • Gallery
  • Rich Text
  • Contact Map
  • Custom HTML
  • Spacer
  • Khutba Archive
  • Donation
  • Testimonial
  • FAQ
  • CTA
  • Video
  • Counter
  • Contact Form
  • Qibla Direction
  • Islamic Calendar
  • Ramadan Schedule
  • Live Stream
  • Zakat Calculator
  • Iframe

This block-based approach makes the system useful for many types of mosque pages: a Ramadan landing page, a donation page, a khutba archive page, a youth program page, or a general information page.

Prayer Times and Scheduler Automation

Prayer time management is a core feature. The system supports daily and monthly schedules, configurable adjustment factors, auto-generated iqamah times, Jummah scheduling, Taraweeh offsets, and a dedicated special-prayer module.

The automatic prayer-time generation job is scheduled in routes/console.php:

use Illuminate\Support\Facades\Schedule;

Schedule::command('mosque:generate-prayer-times')->dailyAt('00:05');

For local development, the scheduler must be running:

php artisan schedule:work

For production, configure cron to run Laravel’s scheduler every minute:

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

If the scheduler is not running, the automatic prayer-time generation command will not execute.

Testing with Pest 4

The project ships with a near-complete Pest 4 test suite covering both the public frontend and the Filament admin panel.

Run the tests with:

php artisan test
# or
./vendor/bin/pest

The suite covers:

  • Public page rendering
  • Form submissions
  • Admin CRUD operations
  • Page builder blocks
  • Frontend routes and admin resources in separate test files

The test environment uses an in-memory SQLite database for fast feedback, with Laravel-specific testing helpers from pestphp/pest-plugin-laravel and clean failure output through nunomaduro/collision.

Tech Stack

| Layer | Package | Version | |---|---|---| | Language | PHP | ^8.2 | | Framework | Laravel | ^12.55 | | Admin Panel | Filament | ^5.4 | | Settings | outerweb/filament-settings | ^2.3 | | Localization | spatie/laravel-translatable | ^6.13 | | Language Switch | bezhansalleh/filament-language-switch | ^4.1 | | Translation Manager | statikbe/filament-chained-translation-manager | ^4.2 | | Translation Tabs | abdulmajeed-jamaan/filament-translatable-tabs | ^5.0 | | Page Builder | redberry/page-builder-plugin | ^3.0 | | Map Picker | salemaljebaly/filament-map-picker | ^1.0 | | Phone Input | ysfkaya/filament-phone-input | ^4.1 | | Icons | owenvoke/blade-fontawesome | ^3.2 | | Testing | pestphp/pest | ^4.4 | | Frontend | Vite + Tailwind CSS | latest |

Installation

Quick setup

The fastest setup path is the Composer script:

composer run setup

This installs PHP dependencies, copies .env, generates the application key, runs migrations, installs npm dependencies, and builds frontend assets.

Manual setup

Clone the repository:

git clone https://github.com/EG-Mohamed/Mosque.git
cd Mosque

Install dependencies:

composer install
npm install

Create the environment file and generate the app key:

cp .env.example .env
php artisan key:generate

Configure your database in .env:

APP_NAME="Mosque"
APP_URL=http://127.0.0.1:8000

DB_CONNECTION=mysql
DB_DATABASE=mosque
DB_USERNAME=root
DB_PASSWORD=

Run migrations, seed the database, and link storage:

php artisan migrate --seed
php artisan storage:link

The demo seeder requires public/images/ph.jpg as a placeholder. Restore it before running migrate:fresh --seed if it has been removed.

Start development:

composer dev

This starts the Laravel server, queue worker, Pail log viewer, and Vite dev server concurrently.

Demo Admin Access

After seeding, the admin panel is available at /admin.

| Field | Value | |---|---| | Email | admin@mosque.test | | Password | password |

Why This Project Matters

Many mosques need reliable digital infrastructure, but not every community has the budget or engineering team to build and maintain a custom platform. This project addresses that gap by providing a free, extensible, multilingual Laravel application that can be adapted to different communities, languages, and operational needs.

Because it is open source, developers can:

  • Add new features
  • Improve existing modules
  • Contribute translations
  • Fix bugs
  • Extend the page builder
  • Adapt the system for local mosque workflows

Conclusion

The Mosque Management System is more than a Laravel and Filament application. It is a practical open-source tool for Muslim communities and a form of صدقة جارية designed to keep benefiting others over time.

If you work with a mosque, contribute to Islamic open-source software, or want to help improve multilingual community platforms, this project is worth exploring, using, and supporting.

Found this useful?

Continue reading

More Articles

View all