Buku Masjid adalah sistem pengelolaan finansial dan jadwal pengajian masjid berbasis web yang dibuat dengan framework Laravel.
- Meningkatkan transparansi laporan keuangan masjid/mushalla.
- Memungkinkan akses online bagi jamaah dan masyarakat umum untuk melihat laporan kas.
- Mempermudah bendahara masjid/mushalla dalam mencatat transaksi keuangan.
- Otomatisasi pembuatan laporan kas setiap kali ada transaksi.
- Mempermudah pengurus masjid/mushalla dalam mengelola jadwal khatib dan pengajian.
- Meningkatkan kepercayaan jamaah/masyarakat terhadap pengelolaan dana infak masjid/mushalla.
- Memudahkan masyarakat dalam memutuskan untuk berinfak ke masjid tertentu.
- Mengurangi beban tugas bendahara dalam pembuatan laporan kas masjid/mushalla.
- Memungkinkan masyarakat/jamaah untuk memantau jadwal pengajian secara online.
Kami ingin berterima kasih kepada sponsor yang mendukung development Buku Masjid.
Jika anda tertarik untuk menjadi sponsor/mitra, silakan hubungi Whatsapp Tim Buku Masjid pada halaman Kontak Buku Masjid.
- Pengelolaan buku catatan: Setiap kegiatan dapat dicatat di buku catatan kas yang terpisah.
- Pengelolaan kategori/kelompok pemasukan dan pengeluaran untuk setiap buku catatan.
- Input pemasukan dan pengeluaran.
- Laporan:
- Laporan kas Bulanan
- Laporan kas per Kategori
- Laporan kas Mingguan
- Pengelolaan jadwal khatib Jumat.
- Pengelolaan jadwal pengajian rutin.
Aplikasi ini dapat diinstal pada server lokal maupun online dengan spesifikasi berikut:
- PHP 8.1 (dan sesuai dengan persyaratan server Laravel 10.x).
- Database MySQL atau MariaDB.
- SQLite (digunakan untuk pengujian otomatis).
- Clone repositori ini dengan perintah:
git clone https://github.com/buku-masjid/buku-masjid.git - Masuk ke direktori buku-masjid:
$ cd buku-masjid - Instal dependensi menggunakan:
$ composer install - Salin berkas
.env.exampleke.env:$ cp .env.example .env - Generate kunci aplikasi:
$ php artisan key:generate - Buat database MySQL untuk aplikasi ini.
- Konfigurasi database dan pengaturan lainnya di berkas
.env.APP_URL=http://localhost APP_TIMEZONE="Asia/Makassar" DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret MASJID_NAME="Masjid Ar-Rahman" MASJID_DEFAULT_BOOK_ID=1 AUTH_DEFAULT_PASSWORD=password MONEY_CURRENCY_CODE="Rp" MONEY_PRECISION=2 MONEY_DECIMAL_SEPARATOR="," MONEY_THOUSANDS_SEPARATOR="." - Jalankan migrasi database:
$ php artisan migrate --seed - Buat tautan penyimpanan:
$ php artisan storage:link - Instal dependensi frontend:
$ yarn install --frozen-lockfile - Compile asset frontend:
$ npm run dev - Mulai server:
$ php artisan serve - Buka web browser dengan alamat web: http://localhost:8000, kemudian masuk dengan akun bawaan:
email: admin@example.net password: password
Catatan: sumber JavaScript/CSS aplikasi berada di
resources/assetsdanresources/vendor. Berkas hasil build dipublic/jsdanpublic/cssdibuat oleh Laravel Mix, tidak diedit langsung.
Untuk menggunakan docker silahkan jalankan perintah ini di terminal:
- Buat file .env
$ cp .env.example .env
- Update untuk mengubah env
DB_HOST:Atau Anda dapat mengotomatiskan proses ini menggunakan perintah ini.DB_HOST=mysql_host
COPY .env.example .env.tmp sed 's/DB_HOST=127.0.0.1/DB_HOST=mysql_host/' .env.tmp > .env && rm .env.tmp
- Build docker images dan jalankan container:
docker-compose build docker-compose up -d
- Jalankan database migration:
docker-compose exec server php artisan migrate --seed - Buka web browser dengan alamat web: http://localhost:8000, kemudian login dengan default user:
email: admin@example.net password: password - Untuk masuk ke docker container shell:
docker-compose exec server sh docker-compose exec mysql bash
Ketika sudah ter-install di localhost, kita bisa generate data dummy untuk simulasi sistem buku masjid. Datad demo dapat di-generate dengan perintah berikut:
Generate demo data (3 bulan terakhir):
$ php artisan buku-masjid:generate-demo-dataHapus semua demo data (yang created_at nya NULL)
$ php artisan buku-masjid:remove-demo-dataLengkapnya dapat dilihat pada: Dokumentasi buku-masjid/demo-data.
Aplikasi menyediakan API (base URL /api) untuk mengakses data transaksi, kategori, dan buku kas. Autentikasi API menggunakan token pribadi milik user (users.api_token), bukan sesi cookie.
Kirim email dan password user ke endpoint login. Respons berisi data user beserta api_token (24 karakter). Token yang sudah ada akan dikembalikan ulang; jika user belum punya token, aplikasi membuatkannya secara otomatis.
curl -X POST http://localhost:8000/api/login \
-H "Accept: application/json" \
-d "email=admin@example.net" \
-d "password=password"Contoh respons:
{
"data": {
"id": 1,
"name": "Admin Masjid",
"email": "admin@example.net",
"status": "Aktif"
},
"api_token": "Kb8xWz1sVq7pLm4nRt6yA2cD"
}Sertakan token pada header Authorization: Bearer <api_token> di setiap request:
curl http://localhost:8000/api/user \
-H "Accept: application/json" \
-H "Authorization: Bearer Kb8xWz1sVq7pLm4nRt6yA2cD"Token juga dapat dikirim sebagai query parameter api_token:
curl "http://localhost:8000/api/user?api_token=Kb8xWz1sVq7pLm4nRt6yA2cD" \
-H "Accept: application/json"Jika token tidak dikirim, tidak cocok, atau bukan berupa string (misalnya berupa array), API membalas 401 Unauthorized.
Endpoint berikut membutuhkan API token:
| Method | Endpoint | Keterangan |
|---|---|---|
| POST | /api/logout |
Logout: mengganti api_token user, token lama langsung tidak berlaku |
| GET | /api/user |
Profil user yang sedang login |
| GET/POST/PUT/DELETE | /api/transactions |
Data transaksi |
| GET/POST/PUT/DELETE | /api/categories |
Kategori pemasukan/pengeluaran |
| GET/POST/PUT/DELETE | /api/books |
Buku kas |
Endpoint logout mengganti api_token milik user dengan token baru. Karena satu user hanya punya satu token, semua aplikasi yang memakai token lama ikut logout dan harus login ulang.
curl -X POST http://localhost:8000/api/logout \
-H "Accept: application/json" \
-H "Authorization: Bearer Kb8xWz1sVq7pLm4nRt6yA2cD"Respons: {"message": "Anda telah logout."}
Setiap buku kas memiliki data terpisah. Untuk memilih buku kas aktif pada request API, tambahkan query parameter active_book_id=<id_buku>. Jika tidak diisi, API memakai buku kas default (MASJID_DEFAULT_BOOK_ID).
curl "http://localhost:8000/api/transactions?active_book_id=2" \
-H "Accept: application/json" \
-H "Authorization: Bearer Kb8xWz1sVq7pLm4nRt6yA2cD"Endpoint publik yang tidak membutuhkan token antara lain /api/schedules, /api/masjid_profile, dan /api/shalat_time (jika fitur jadwal shalat aktif).
Jika Anda ingin berkontribusi pada proyek ini, kami sangat menghargainya. Berikut beberapa yang dapat Anda lakukan:
- Laporkan issue jika Anda menemui kesalahan atau bug.
- Sampaikan diskusi jika Anda ingin mengusulkan fitur baru atau perubahan pada fitur yang sudah ada.
- Ajukan pull request untuk perbaikan bug, penambahan fitur baru, atau perbaikan label.
Untuk Diskusi:
Untuk pengumuman dan update:
Proyek Buku Masjid merupakan perangkat lunak open-source yang dilisensikan di bawah Lisensi MIT.
Proyek ini menggunakan bunyi bip dari Pixabay oleh transcendedlifting (Pixabay License)