← Back to Projects
Web · Government

Info Covid-19 Aceh

Built with Laravel and MySQL — replaced a manual spreadsheet process with a live regional dashboard that served real-time case data to residents across every district in Aceh.

Role
Full Stack Developer
Client
Pemko Banda Aceh
Timeline
3 months · 2023
Status
Live
19
01 · Overview

During the pandemic, regional health authorities needed a single source of truth for case data that could update daily and be trusted by both officials and the public. I designed and built a web dashboard that pulls daily figures into a structured database, visualizes trends over time, and presents a clean public-facing summary alongside a protected admin panel for data entry and corrections.

02 · The Problem

A process held together by spreadsheets

The existing process relied on figures manually compiled into spreadsheets and shared as static images across WhatsApp groups — slow, easy to mistype, and impossible to audit after the fact. By the time a number reached the public, it was often a day old and already contested.

Health workers needed a way to log figures that was simple enough to use on a shared tablet at the end of a long shift, while residents needed a page that stayed legible and fast even on low-end phones and patchy connections — a real constraint across parts of Aceh.

03 · Research & Approach

Starting from the data-entry desk, not the dashboard

Before writing any code, I spent time with the two health staff who would actually enter data daily, watching how they currently compiled the spreadsheet. That shaped three decisions:

  • Data entry needed to take under a minute per district, or it wouldn't get done consistently.
  • The public page had to render useful content even before charts finished loading.
  • Corrections needed an audit trail — health staff had been burned before by "who changed this number."
04 · Architecture

How it's put together

A deliberately simple, server-rendered architecture — fewer moving parts to keep online during a crisis.

Admin Panel (Blade + Alpine.js)
Laravel App
MySQL — daily case records
Public Dashboard (Chart.js)
05 · Tech Stack

Built with

06 · Challenges

What got in the way

Challenge

Health staff needed to correct yesterday's numbers without losing a record of what changed.

Solution

Added a lightweight audit log on every edit — old value, new value, who, and when.

Challenge

Public page needed to stay usable on patchy 3G connections in rural districts.

Solution

Server-rendered Blade views with Alpine.js sprinkles — no heavy JS bundle to download first.

Challenge

Officials distrusted a single aggregate number without district-level context.

Solution

Added a regional breakdown view so local outbreaks were visible before they became provincial news.

07 · Screenshots

A closer look

Impact

Results

0
Public visits in year one
0
Districts covered
0
Uptime during peak use
08 · Lessons Learned

What I'd carry into the next project

  • Talking to the people entering data first would've saved a redesign — the admin panel's first version was built around what I assumed they needed, not what they actually did.
  • An audit trail is cheap to add early and expensive to retrofit once people rely on the data.
  • "Fast on a bad connection" is a real constraint, not a nice-to-have, for public infrastructure in the region.

Have a similar project in mind?

Contact Me