Non-profit project · Sep 2026
Daarul Ummahaat Website
A website a foundation's administrator can run without a developer.
- Role
- Solo developer: build and deployment
- Period
- Sep 2026
- Stack
- Next.js · Payload CMS · PostgreSQL · Docker
- Status
- Live at daarulummahaat.com
Why I built it
The people who run the foundation are not developers. The site has to show their programs, events and donation details, and stay easy for them to update.
What I built
Public site
Home, about, programs, events, a gallery with filters, donation details (bank accounts, QRIS and e-wallets) and a contact form. The interface is in Indonesian.
Admin
Payload CMS inside the same Next.js app, so the administrator edits programs, events and photos in a generated admin panel. There is an admin guide in Indonesian, and a draft preview before anything goes public.
Deployment
Docker Compose on a VPS behind Caddy and Cloudflare. Pushing to the main branch runs the checks and deploys. Encrypted nightly backups to Cloudflare R2 are scripted, with a restore script.
Choices I made
- Payload inside Next.js. The site and the admin are one TypeScript codebase and one deploy, and the admin screens are generated from the content model.
- PostgreSQL. It takes a little more to run, but it suits the donor data the foundation may want later.
- Self-hosted behind Cloudflare. Caddy handles TLS on the server, and Cloudflare handles DNS, caching and DDoS protection.
- Made for the administrator. Sections with no content are hidden instead of showing empty headings. The admin guide is written for a non-technical reader, and the sitemap only lists published content.