Skip to content
Fahrul Alwan.
Back
Next.jsCode reviewScopingCivic

Six days, five people

A protest information site five of us built in six days. I brought the team in and decided what we built, more than I wrote the code.

Led it6 daysFive of us

In late August 2025 the protests in Indonesia produced a list of demands, seventeen immediate and eight longer-term, and a lot of people looking for information they could act on: which emergency number to call, what your rights are if you are detained, where to find a lawyer or a psychologist. Five of us built a site for it, start to finish, in six days.

All of the code is public, so anyone can see who wrote what. Of the three of us who wrote any, I wrote the second most. Only three of the five appear there at all, because that record counts people who typed code and not people who were on the thing. Mine was the front page and the section listing the people who were killed. The rest of my six days went on deciding what we would build, writing it down clearly enough to hand over, and reading everyone else’s work before it went live. See who wrote what

I brought the other four in: three from work, and a designer. The six days were not only the build: I asked around for ways to get more traffic, and messaged a few accounts who might share it. It drew four to five thousand visits in a week.

The link people were passing around stopped working

The emergency contacts page was the one page somebody might open in a hurry, and the short version of its address was the link being shared. A tidy-up changed how that address was handled, and the short version quietly started showing “page not found” instead. The longer version, with a region on the end, still worked, which is why nothing looked broken.

On the change that broke the link · src/app/kontak-darurat/[wilayah]/page.tsx

ini file direname dari `[[...wilayah]]` ke `[wilayah]` jadi kena error 404. expected: - /kontak-darurat -> bisa, default to nasional - /kontak-darurat/jakarta -> bisa, param ke jakarta actual: - /kontak-darurat -> error 404 - /kontak-darurat/jakarta -> bisa, param ke jakarta
Read the thread

I found two more of the same kind while I was there: a region nobody had put on the list, and an address that ended in nothing at all. The old handling had been quietly absorbing both. It went back the way it was, and all three of those links work today. Open the page

A section that would have depended on six other websites staying up

Someone added a section listing similar efforts, and filled it by having our page go and fetch each of those six sites every time a visitor opened ours, reading the titles and descriptions straight off them. It worked. It also meant our page could only load as reliably as six sites we did not run, in a week when staying reachable was the entire point.

Title: Lihat lainnya yang juga ikut berkontribusi list websites to be listed: - rakyatmenuntut.net Desc: Kompilasi 17+8 tuntutan dan dukungan karya perjuangan komunitas - indonesiademands.com Desc: 17+8 English version of rakyatmenuntut, with detailed description - 178tuntutanrakyat.id Desc: Community-driven progress update untuk masing-masing poin […three more]
What I wrote back instead of approving it
  1. 4 Sep, 13:19The first version goes up: our page fetches all six sites live, every time a visitor loads it.
  2. 4 Sep, 18:41I write the section out by hand instead: the heading and all six entries, each with its description.
  3. 4 Sep, 23:36Five hours later the live fetching is gone, replaced by a plain list held on our own side.
  4. 5 Sep, 06:12The work is withdrawn and started again cleanly.
  5. 5 Sep, 10:20It goes live, with the six written into our own code.

The tool it needed for reading other people’s pages never made it into the finished thing.

The section is on the site now, under that heading, all six of them. See it live

The work I wrote down and gave away

Update informasi kontak darurat

A fourteen-line checklist: the medical emergency number, the fire service, the cyber-attack helpline, the missing-persons contact, two legal aid funds, and the accounts posting live updates. Assigned to someone else.
Read the issue

Five pieces of work written up this way. Three went to specific people, one was left open for whoever got there first, and one I kept: the section listing the ten people who died during the protests, sourced from two national outlets. I wrote it, took it, and put it up on the last day. Getting a name or a number wrong there would not have been a bug, and I wanted that to be my mistake if it happened. The one I kept

If any of this resonated, say hi.