DEV Community

Cover image for I rebuilt a 2003 Indonesian internet cafe in the browser (zero deps, no build)
Kelvin
Kelvin

Posted on

I rebuilt a 2003 Indonesian internet cafe in the browser (zero deps, no build)

"Mas, nambah sejam!" ("One more hour, please!")

If you grew up in Indonesia in the early 2000s, you know the warnet: a small internet cafe with a dolphin screensaver on the billing screen, a voucher on a yellow sticky note, Winamp blasting, someone in the corner yelling at Ragnarok, and the dial-up handshake you could hear from the street.

I rebuilt it so you can walk back in. It runs in the browser, it's free, and it works on phones.

▶ Play: https://warnet-nusantara.pages.dev/
⭐ Code: https://github.com/kelvindesman/warnet-nusantara

Warnet Nusantara.Net

What's inside

  • Billing lock screen with dolphins, a voucher and a running Rupiah meter
  • Three PC eras: a Windows XP-style 2003 desktop, a Win7-style 2011 one and a Win10-style 2015 one. Each changes the theme, the BIOS lines, the hourly rate and the year the browser travels to
  • A time-travel browser powered by the Wayback Machine: Friendster 2003, Kaskus, detik.com, and the old Indonesian sites of Ragnarok, GunBound, Point Blank, DotA and PES
  • Winamp (via Webamp), mIRC with bots that ask "asl pls", a Messenger with BUZZ!!! that shakes the window, Minesweeper (Ranjau), Snake (Ular HP) and a Task Manager
  • Game Warnet: 40 games that play right in a window, a "rental PS" corner, and 18 shrines for warnet classics that are still sold. Those open the old site and a fake "server under maintenance" message instead of anything pirated

How it's built

  • Zero runtime dependencies, no build step. Vanilla ES modules served as-is. Each app is lazily import()ed when you open it.
  • One small window manager (wm.js) handles focus, drag, resize, minimize and the taskbar.
  • Every sound is synthesized with WebAudio, including the dial-up modem. There are no audio files in the repo.
  • Every icon is inline SVG.
  • Types via JSDoc checked by tsc --checkJs, with no .ts sources.

The old web fights back

While recording the demo video, the archived 2004 Ragnarok page frame-busted out of the in-app browser and replaced the whole warnet. The fix is a sandboxed iframe without allow-top-navigation, plus an e2e test that serves a page doing top.location = ... and checks the desktop survives.

Being careful with nostalgia

Old sites come from the Internet Archive. Still-sold games get shrines, not downloads. Fan ports only open in a new tab, behind a clear "not affiliated" note. The code is AGPL-3.0 and the content is CC BY-NC-SA 4.0.

Come in

Want to add an old Indonesian site, a game or an IRC bot line? Most contributions are a JSON edit. See CONTRIBUTING.md.

Kenangan warnet kamu apa? What's your warnet memory? Tell me in the comments 👇

Top comments (0)