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 Saied — msaied.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
homeslug, published state, and navigation visibility - Model caching support through a
Cacheabletrait
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-translatablefor translatable model fieldsbezhansalleh/filament-language-switchfor switching the Filament language contextstatikbe/laravel-filament-chained-translation-managerfor editing translation strings in the admin panelabdulmajeed-jamaan/filament-translatable-tabsfor clean translation tabs in formscoding-socks/lost-in-translationandeg-mohamed/laravelmissingtranslationsfor detecting missing translations during development
Adding a new language is intentionally simple:
- Open the admin panel.
- Go to Languages.
- Click Add Language.
- 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:
HeroSliderPrayer TimesSpecial PrayersEventsAnnouncementsNewsQuran VerseHadithStaffGalleryRich TextContact MapCustom HTMLSpacerKhutba ArchiveDonationTestimonialFAQCTAVideoCounterContact FormQibla DirectionIslamic CalendarRamadan ScheduleLive StreamZakat CalculatorIframe
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.jpgas a placeholder. Restore it before runningmigrate:fresh --seedif 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.