Case study · Aug – Dec 2025 · Backend Developer (internship)
TowerTrack
A public map of the regency's telecom towers and fiber-optic routes, rebuilt from spreadsheet records.
- Client
- Dinas Komunikasi dan Informatika Kabupaten Semarang
- Role
- Backend Developer (internship), Aug – Dec 2025
- Stack
- Laravel, Inertia.js, MySQL, Docker
- Status
- Delivered, public map
Context
Semarang Regency is moving its overhead fiber-optic cables into underground ducting. Cables on the existing poles can only be cut once the underground route is live, so the work depends on knowing exactly what is already installed and where. That inventory sat in spreadsheets with no map view.
What I built
- Modeled the tower and fiber-optic route data and migrated it out of spreadsheets into a relational schema, making the records searchable and mappable.
- Built the query layer behind the map: filters by district, provider, point type, permit status and road side, plus coverage-radius and distance calculations.
- Implemented public reporting endpoints so residents and providers can submit complaints and corrections against specific towers or routes.
- Shipped it as a Laravel + Inertia.js monolith, containerized with Docker for repeatable deployment.
Architecture
Decisions
- 01
Spreadsheets to a relational schema
The records had to be searchable and drawable on a map, and the spreadsheets supported neither.
- 02
Public reporting endpoints
Residents and providers can correct the data after handover, so the inventory stays current without the original team.
- 03
One Laravel + Inertia.js monolith in Docker
The project had to ship quickly. A single Laravel + Inertia.js codebase was the fastest way to deliver the map, the reporting forms and the admin pages together, and Docker kept the deployment repeatable.
Outcome
The towers and fiber routes are on one public map with filters and coverage-radius search: 168 towers across 19 districts.



