Case study · In production
SIM Wisma Asuhan Yatim Nurul Huda
An information system for finances, donations, reports, and education records at a foundation that runs an orphanage and an Islamic boarding school in Kartasura, Indonesia. I build and run it.
- Role
- Backend, web, mobile, servers
- In use
- Since 2025, 20 users
- Stack
- Go · React · Flutter · MySQL
- Operations
- VPS · Docker · GitHub Actions
Context
I’ve worked at this foundation since 2016, starting in administration. So before writing any code, I already knew how donations were recorded, how reports were put together, and where the process kept getting stuck.
The problem
Everything was manual. Finances and donations were recorded apart from the reports, and the children’s education records lived somewhere else again. Monthly reports often disagreed, and human errors only surfaced when the numbers didn’t add up at the end of the month.
What I built
One system with three modules sharing the same data: finances and donations, reporting, and education records.
A single Go API is the path for reading and writing data in MySQL. Office staff use a React web admin; staff on the move use a Flutter app. Because both call the same API, there are no longer two versions of the same number.
Finance & donations
Recording income, expenses, and donations.
Reports
Built from the same transaction data, not copied between files.
Education records
Managing the children’s education data.
Deployment and operations
The API and database run in Docker containers on a VPS. Code lives in a private GitHub repository; every change is built and shipped to the server by GitHub Actions instead of being copied over SSH by hand.
For a foundation with no IT team, that matters: releases happen the same way every time and don’t depend on one person remembering the steps.
Outcome
The system has been in use since 2025 by 20 users. Because reports come from one database, the out-of-sync monthly reports are handled at the source.
A note on privacy: the system holds children’s data, so I don’t publish its code or real screens.