I built the whole system from scratch and run it on my own. A colleague built the billing API.
Platforms
Web. A public site, a staff workspace and a dashboard for the agency's leaders
Stack
Laravel, MySQL, Bank Jatim Virtual Account API, QRIS
Built
Since 2022
The problem
BPKAD, Surabaya City Government’s finance and asset agency, was formed in 2022 with no system of its own. For residents, paying a levy meant a trip to the city office, waiting for the amount to be worked out by hand, then a second stop at a bank.
What I built
Levy payments. Residents see what they owe and pay by virtual account or QRIS, from any bank app or e-wallet.
A payment gateway that other city websites use to take the same payments, with a sandbox to test against.
A workspace for staff, with one sign-in for letters, supplies, leave, revenue and assets, and access set per user and module.
Dashboards for the agency’s leaders, from revenue to staff, plus a map of the city’s assets.
Feature map
6 areas
BPKADOne system, one sign-in
Public services
IPT and IPR levies
Hall booking
Bill and receipt check
Land letters (Suket)
Help center
Payments
Bank Jatim VA and QRIS
Instalments
Gateway for city sites
Reconciliation
Assets
City asset map
Asset registers
Field surveys
Certificates and disputes
Staff workspace
Letters and dispositions
Supplies and inventory
Leave and permits
Meetings and knowledge
Leaders
Revenue against target
Staff overview
Asset overview
Planning documents
Administration
Users and access
Access templates
Magic links
Audit log
Results
Rp130 billion (~$8M) processed through the payment app
33,000 transactions in 18 months
Paying a levy went from 30+ minutes to under 5, from anywhere
Walkthrough
Screens
4 screens
Levy payment · WebsiteCity asset map, by land use · WebsiteRevenue dashboard · WebsiteStaff dashboard · Website