The job
In 2023 I spent three months at Ombudsman Republik Indonesia as a software engineering intern, working directly for the institution, and I led the team on the project. Ombudsman needed an inventory system to track its items. It had to support role-based access and handle data securely. It was meant for Ombudsman's administrative offices across the country.
One requirement shaped most of the work. Records had to hold up under audit. That meant transaction history could not be removed by a normal delete action.
What I built
We built the system with React and TypeScript on the front end, TanStack Query for data fetching, Tailwind CSS for styling and Laravel on the back end. It gave Ombudsman one place to track its items and assets. On top of that I added role-based access control, reporting features and the database workflows behind them.
For the audit requirement, I wrote audit records to an immutable log, kept separate from normal delete actions. Users could still manage items day to day, but the history stayed intact for audits and reporting.
For access, I applied strictly scoped role rules to every action, not just to what the screen showed. That way a user could not run a database operation their role did not allow.
I also deployed the system in Docker containers with automated process supervision, since offices across the country would rely on it.
How it went
Within the three months, the team delivered the full application and got it deployed to production. It was used by Ombudsman administrative offices across the country. The audit history stayed protected from deletion and unauthorized changes, and reports and records stayed consistent with each other.
What I took away: leading a team as an intern taught me that a clear plan matters more than speed. We agreed on the scope in the first weeks and split it by person. With a fixed three-month window, we shipped the core first (tracking, roles, audit) and left polish for last, so there was always something working to deploy. And working directly with a state institution, I learned to settle the rules early, like what must never be deleted, because changing them late is expensive.
