← Semua laporan MASJID APP

Rencana pembangunanLapisan webMASJID APP

Peta Jalan Web MASJID APP

Untuk platform seperti ini, web bukan brosur — web adalah produknya di mata publik. Di situlah jamaah pertama kali menaruh percaya, di situlah orang tua jamaah membuka laporan keuangan, dan di situlah mesin pencari — nanti asisten AI — membaca masjid Anda. Jadi keputusan Anda mendahulukan web sebelum dashboard bukan penundaan; itu urutan yang benar.

Dokumen ini memecah tahap web menjadi lima fase, dengan satu aturan yang dipegang di semuanya: apa pun yang mahal untuk diubah belakangan, dikunci di awal.

00Dasar pikir

Empat prinsip yang mengunci semua fase

  • Konten itu record, bukan halaman. Kegiatan, program, kajian, pengumuman, laporan — semuanya data bertipe. Satu record yang sama dipakai halaman web, TV display, aplikasi jamaah, dan asisten AI. Begitu Anda membiarkan pengurus menempel HTML bebas, tiga kanal lain kehilangan sumbernya.
  • Satu kontrak API untuk semua kanal. Web masjid tidak bicara langsung ke database; ia makan dari API yang sama dengan Flutter jamaah dan TV display. Kanal baru lima tahun lagi tinggal menempel.
  • AI dipasang di fondasi, bukan ditempel di akhir. Setiap record publik otomatis diindeks sejak fase 0. Fitur AI-nya baru muncul di fase 3, tapi tempatnya sudah disiapkan — karena memasang indeks setelah ribuan konten masuk jauh lebih mahal.
  • Web masjid penuh tetap butuh satu pintu admin — dan itu bukan dashboard manajemen. Kita pisahkan Konsol Konten (kecil, milik fase web) dari Dashboard Manajemen (besar, fase sesudahnya). Batasnya tegas: begitu menyentuh uang, data jamaah, atau peran berlapis, itu bukan urusan fase ini.
Peta±20 minggu
tim 3–4 orang

Lima fase, lalu serah terima

FaseDurasiYang dibangunHasil yang bisa dilihat
F03 mggFondasi arsitekturSatu masjid contoh hidup di staging
F14 mggWeb platform (situs induk)Masjid bisa daftar sendiri < 10 menit
F26 mggWeb masjid + konsol kontenHalaman yang pantas dipasang di spanduk
F34 mggLapisan masa depan (AI + TV display)Masjid bisa "ditanya", TV menyala
F43 mggPilot & serah terima5–10 masjid nyata, kontrak laporan dibekukan
F5—Dashboard manajemenBaru dimulai setelah F4 lulus

F03 minggu
Fondasi

Mengunci yang mahal kalau diubah nanti

Fase ini tidak menghasilkan apa pun yang bisa dipamerkan, dan justru itu gunanya. Setiap keputusan di sini adalah keputusan yang, kalau ditunda, akan menuntut migrasi besar di bulan keenam.

Yang dipasang

  • Monorepo & infra. web-platform, web-tenant, api, ui, contracts. Docker, CI, staging, object storage S3-compatible, pipeline gambar (varian ukuran, AVIF/WebP).
  • API NestJS + PostgreSQL/Prisma, kontrak dulu. OpenAPI ditulis sebelum implementasi, di-generate jadi tipe untuk SvelteKit dan nanti Flutter. Versi /v1 sejak hari pertama.
  • Isolasi tenant yang ditegakkan database. Satu database, tenant_id di setiap tabel, dijaga Row-Level Security PostgreSQL — bukan sekadar filter di kode. Satu where yang lupa ditulis tidak boleh bisa membocorkan data masjid lain.
  • Resolver domain. domain.id/<slug> sebagai kanonik, custom domain sebagai alias yang dipetakan ke tenant yang sama. Siapkan daftar slug terlarang sekarang (admin, api, masjid, login, blog, …) — merebut slug yang sudah dipakai orang itu mimpi buruk.
  • Skema konten terstruktur. Kegiatan, program, kajian, pengumuman, profil, laporan — masing-masing tabel dengan field bertipe, jadwal berulang (RRULE) untuk kajian rutin, dan status terbit/draf.
  • Indeks AI per tenant. Setiap record publik yang tersimpan memicu event → dipecah jadi potongan → di-embed ke content_index milik tenant itu. Belum ada fitur yang memakainya sampai F3; strukturnya tetap dipasang sekarang.
  • Skema keuangan yang belum dipakai. Tabel dana (fund), dimensi, dan kolom currency-aware dibuat sekarang meski modulnya beku di MVP. Laporan publik di F2 akan membaca dari sini; tanpa ini, F2 menciptakan bentuk data sementara yang harus dimigrasi.
  • Design system & token. Satu set token dipakai bersama landing, web masjid, dan TV display — termasuk mode terang/gelap dan kesiapan RTL untuk teks Arab.

Selesai bila: satu masjid percontohan hidup di staging pada /masjid-percontohan, dilayani SSR dari API, dan uji otomatis membuktikan permintaan dari tenant A tidak bisa membaca satu baris pun milik tenant B.


F14 minggu
Situs induk

Platform yang menjual posisi Anda dan mendaftarkan masjid tanpa Anda

Situs induk punya dua tugas dan hanya dua: meyakinkan segmen yang Anda pilih, lalu membawa mereka masuk sendiri.

Yang dibangun

  • Halaman utama dengan posisi yang tegas. Bahasa produk untuk pengelola masjid kampus, masjid perusahaan, dan yayasan — bukan "aplikasi masjid termurah". Segmen itu sudah dikuasai pemain lama; Anda menang di tempat lain.
  • Halaman "ke mana uang jamaah mengalir". Penjelasan gamblang bahwa donasi masuk langsung ke rekening masjid dan platform tidak memegang dana. Ini pembeda legal Anda sekaligus argumen kepercayaan terkuat yang Anda punya — taruh sebagai halaman utama, jangan disembunyikan di FAQ.
  • Halaman per modul, dengan yang belum jadi ditandai jujur "menyusul" beserta bulannya. Pengelola yayasan membaca janji kosong dari jauh.
  • Harga. Dasar gratis; berbayar untuk custom domain, konsolidasi antar-unit yayasan, dan modul premium. Biaya payment gateway ditulis apa adanya sebagai pass-through.
  • Direktori masjid publik di /masjid. Ini aset SEO yang menumpuk: setiap tenant baru menambah halaman terindeks dan menaikkan otoritas domain induk, yang lalu mengangkat semua masjid di dalamnya. Pemain yang menaruh tiap masjid di domain terpisah tidak dapat efek ini.
  • Pendaftaran mandiri. Form → verifikasi pengurus → pilih slug → tenant hidup. Dan hidup berarti sudah terisi: jadwal sholat otomatis dari koordinat, template halaman, checklist onboarding tujuh langkah.
  • Pusat bantuan & dokumentasi dalam struktur yang terbaca mesin — bahan mentah untuk asisten AI di F3, sekaligus SEO ekor panjang.

Selesai bila: orang yang belum pernah Anda temui bisa mendaftarkan masjidnya dari nol sampai halaman publik yang layak dibagikan di grup WhatsApp, tanpa satu pun intervensi manual dari tim.


F26 minggu
Jantung tahap ini

Web masjid dan konsol konten

Fase terpanjang, dan yang paling menentukan. Ukurannya sederhana: apakah pengurus mau memasang alamat ini di spanduk depan masjid.

Sisi publik

  • Beranda: jadwal sholat hari ini, kegiatan terdekat, program berjalan dengan progres, pengumuman terbaru.
  • Profil masjid: sejarah, pengurus, fasilitas, lokasi dan peta.
  • Kalender kegiatan & kajian rutin, termasuk jadwal berulang dan pembicara.
  • Program & donasi: tujuan, target, terkumpul, rincian rencana penggunaan, instruksi transfer bank plus konfirmasi bukti. Midtrans hanya muncul kalau masjidnya memang punya.
  • Arsip kajian: rekaman video/audio, catatan, penceramah, dapat dicari.
  • Laporan publik: ringkasan pemasukan-pengeluaran per periode dan per dana, ditulis dalam bahasa yang dimengerti jamaah biasa — bukan istilah akuntansi.

Konsol konten — dan hanya itu

  • Isinya: kelola konten di atas, pengaturan masjid, branding & tema, undang pengelola, atur domain. Titik.
  • Yang ditolak di sini: input kas, data jamaah, peran berlapis, laporan internal. Semua itu F5. Kalau ada permintaan "sekalian saja", jawabannya tidak — pembengkakan konsol konten adalah cara paling umum rencana seperti ini gagal.

SEO & performa

  • SSR penuh, sitemap per tenant, schema.org (PlaceOfWorship, Event, Article, VideoObject), OG image otomatis per halaman, target LCP di bawah 2,5 detik pada jaringan 4G.
  • Aturan kanonik. Selama masjid memakai domain.id/<slug>, otoritas menumpuk di domain induk. Begitu ia pindah ke domain sendiri, kanonik ikut pindah dan yang lama di-301. Ini pilihan sadar: menumpuk dulu, menyerahkan kemudian.

Selesai bila: tiga masjid nyata memakai halaman ini sebagai alamat resmi mereka, dan selama satu bulan penuh tim Anda tidak menyentuh konten mereka sama sekali.


F34 minggu
Sebagian paralel

Bagian yang membuatnya terasa datang dari sepuluh tahun lagi

Dan letaknya di web — terlihat publik — bukan tersembunyi di dashboard. Ini yang membedakan "sistem masjid yang didigitalkan" dari "platform masjid yang dibangun untuk masa depan".

  • Asisten masjid di halaman publik. "Kapan kajian subuh?", "program pembangunan sudah terkumpul berapa?", "bagaimana cara donasi?" — dijawab dari indeks konten masjid itu sendiri, dengan tautan ke halaman aslinya. Kalau tidak tahu, ia bilang tidak tahu dan menunjuk kontak pengurus.
  • Mesin konten dari kajian. Rekaman → transkrip → ringkasan → artikel siap tayang + potongan pendek. Satu kajian jadi tiga aset. Masjid aktif menghasilkan puluhan kajian per bulan; ini mesin SEO yang tidak dimiliki siapa pun di segmen ini.
  • Bantuan AI untuk pengelola. Draf pengumuman, alt-text gambar otomatis, saran program dari pola kehadiran dan donasi.
  • Terbaca oleh agen, bukan hanya manusia. Feed terstruktur dan endpoint publik per masjid, supaya asisten AI pihak ketiga bisa menjawab "ada kajian apa malam ini di dekat sini" dengan data masjid Anda. Ini taruhan sadar pada dunia di mana orang bertanya ke asisten, bukan mengetik ke Google.
  • TV Display v1 berbasis web. Jadwal sholat dan hitung mundur, adzan otomatis, running text pengumuman, pemutaran video kajian. Karena sumbernya record yang sama, TV display di fase ini hampir gratis — inilah bayaran dari keputusan "konten itu record" di F0. Soal web vs Flutter: mulai dari web; Flutter hanya kalau nanti benar-benar butuh kontrol perangkat keras dan offline penuh.

Selesai bila: pengurus menambahkan satu kajian, dan dalam sepuluh menit kajian itu muncul di halaman masjid, tampil di TV masjid, dan bisa ditanyakan ke asisten — tanpa satu pun langkah tambahan.


F43 minggu
Gerbang

Pilot, lalu serah terima ke dashboard

  • Lima sampai sepuluh masjid pilot dari segmen kampus, perusahaan, dan yayasan — bukan yang paling mudah dibujuk, tapi yang paling mirip pelanggan yang Anda tuju.
  • Yang diukur: waktu dari daftar sampai halaman terisi layak, jumlah konten baru per masjid per minggu, halaman terindeks per masjid, dan donasi terkonfirmasi yang datang lewat halaman program.
  • Bekukan kontrak laporan publik. Bentuk data yang dibaca halaman laporan dikunci di sini. Dashboard keuangan nanti tugasnya hanya mengisi kontrak ini — dan itulah alasan teknis kenapa mendahulukan web tidak menjadi kerja sia-sia.
  • Baru setelah gerbang ini dashboard manajemen dimulai: keuangan MVP di atas skema yang sudah berdiri sejak F0, data jamaah, peran & izin.

RisikoEnam jebakan

Enam cara rencana ini gagal

Halaman kosong lebih merusak daripada tidak punya halaman

Masjid yang halamannya kosong tiga bulan terlihat mati, dan itu merusak kepercayaan yang justru ingin Anda bangun. Karena itu seeding otomatis di F1 — jadwal sholat, template, checklist — bukan fitur tambahan, itu syarat hidup.

Editor bebas membunuh tiga rencana sekaligus

Begitu pengurus bisa menempel HTML apa saja, TV display, asisten AI, dan aplikasi jamaah kehilangan sumber datanya. Editor kaya boleh, tapi di dalam field yang bertipe.

Konsol konten yang membengkak jadi dashboard

Permintaannya akan datang, dan terdengar masuk akal setiap kali. Batasnya: kalau menyentuh uang, data jamaah, atau peran berlapis — bukan fase ini.

Custom domain terlalu dini

Setiap custom domain memecah otoritas SEO yang sedang Anda tumpuk dan menambah beban sertifikat. Jadikan fitur berbayar di F5, bukan janji di F1.

AI yang mengarang

Asisten publik hanya menjawab dari indeks masjid itu, selalu dengan tautan sumber, dan berani bilang tidak tahu. Satu jawaban salah soal waktu sholat atau nominal donasi menghapus kepercayaan yang dibangun berbulan-bulan.

Menunda modul keuangan disangka menunda skemanya

Modulnya beku di MVP — skemanya tidak. Tabel dana, dimensi, dan kolom currency-aware dipasang di F0. Tanpa itu, laporan publik di F2 akan menciptakan bentuk data sementara yang menuntut migrasi besar tepat saat Anda mulai punya pelanggan.

MulaiMinggu depan

Tiga hal yang saya kerjakan lebih dulu

  1. Tulis skema konten dan kontrak API sebagai dokumen, sebelum satu baris kode. Sepuluh entitas publik, field-nya, dan endpoint yang melayaninya. Ini artefak paling berharga di seluruh proyek dan biayanya hanya beberapa hari.
  2. Putuskan struktur URL dan daftar slug terlarang sekarang. Termasuk apakah masjid duduk di domain.id/<slug> langsung atau di bawah prefiks. Ini keputusan yang tidak bisa dibatalkan setelah masjid pertama membagikan tautannya.
  3. Rancang satu halaman masjid contoh secara utuh — dengan konten nyata dari masjid yang Anda kenal. Bukan wireframe. Halaman itu jadi target visual F2 sekaligus bahan jualan di F1, dan akan langsung menunjukkan field apa yang ternyata kurang di skema Anda.