I built a browser-based desktop environment (IP Linux) with React, TypeScript and Vite
I have been working on a project called IP Linux: a browser-based desktop environment that runs as a static web app.
- Live site: https://ip-os-linux.vercel.app/
- GitHub Repository: https://github.com/ikerperez12/IP-OS-LINUX
It is not a real Linux distribution, and it does not run native binaries. The idea is different: I wanted to explore how far a polished desktop-like experience can go inside a normal browser tab.
The result is a small web OS-style environment with:
- A splash / entry screen
- A desktop with icons, folders, and widgets
- A top panel with system controls
- A dock and app launcher
- Resizable and draggable windows
- Virtual workspaces
- Snap assist
- A global search / Spotlight-style command palette
- Local-first apps (Files, Terminal, settings, player)
- Reactive wallpapers
- Glass UI and visual effects
Why I built it
Most web demos are landing pages, dashboards, or small single-purpose apps. I wanted to build something that feels more like an environment.
I was interested in questions like:
- Can a web app feel physical and desktop-like?
- How should windows behave inside a browser viewport?
- How far can local-first storage go before a backend is actually needed?
- How do you organize many small apps without making the UI messy?
IP Linux became a way to test all of that in one project.
The app includes a catalog of built-in apps and tools: Files, Terminal, Browser, Settings, App Store, Music Player, Matrix Rain, games, developer tools, productivity apps, and visual utilities. The virtual file system and user preferences are stored locally in the visitor's browser with IndexedDB/localStorage. There is no backend, no account system, and no required environment variables for the public release.
Would love to get feedback on the interaction design, responsiveness, or features!
Top comments (0)