"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
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.tssources.
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 👇

