I built my own web-based OS simulation called VoidOS a complete desktop environment that runs entirely in the browser from a single HTML file, no build tools, no npm, no backend. It’s got draggable, resizable windows, a taskbar, boot/login sequences, and a full suite of over 30 apps: Terminal, Files, Text Editor, Calculator, Music Player, Notes, Gallery, Mail, Calendar, Kanban, Weather, Settings, a few games (Tetris, Pong, Breakout, even a Doom-like FPS), and more. It leans hard into a retro CRT aesthetic scanlines, screen curvature, phosphor glow, chromatic aberration all done with pure CSS so it stays performant. The whole thing is vanilla JavaScript around 3,500 lines, ~85KB, zero dependencies organized into clean logical modules (an event bus, an IndexedDB wrapper, a virtual filesystem, a window manager, etc.) that mimic how a real OS is architected. I’m especially proud of the boot sequence and sound design I used the Web Audio API to synthesize authentic old-chip system sounds instead of using sample files. Being dysgraphic made this project harder than it might look writing and organizing all the code, comments, and documentation takes me a lot more effort and time than it does for most people, so just pushing through devlog after devlog was its own challenge. On the technical side, getting the CRT effects to look authentic without tanking performance was tricky too I ended up building a “Retro Inspector” devtool so I could toggle individual effects and watch the frame-cost impact in real time. Persistence was another hard one: making windows, files, notes, and settings survive a page reload without a backend meant building my own filesystem layer on top of IndexedDB. I also had to track down some nasty bugs along the way, like a memory leak in the music player’s beat interval and a mousemove listener firing on every frame until I throttled it. You can try it live in the browser, no install needed everything (files, notes, settings) is saved locally via IndexedDB, so it’ll persist between visits on the same browser. Try dragging windows around, snapping them to screen edges, opening a few apps from the dock/desktop, and poking around Settings to switch themes and wallpapers. The full source and devlog history are on GitHub if you want to see how it’s built.
- 11 devlogs
- 81h
- WebOS 1