A nostalgic, anime-styled desktop simulator that runs entirely in the browser — draggable windows, a taskbar, a Start menu, and a handful of built-in mini-apps. Built with plain HTML, CSS and JavaScript (no build step, no dependencies).
- Window manager — open, close, minimize, maximize, drag, and resize windows; taskbar shows every open app.
- 📷 Photobooth — take a 3-shot photo strip using your webcam, choose between two frame styles, retake individual shots, and download the result as PNG or JPG.
- 🎧 Music Player — a YouTube-powered player with a fully editable playlist, play/pause, next/previous, and a volume slider (uses the official YouTube IFrame API).
- 📇 Contact — a simple contact card list (Instagram, Facebook, WhatsApp, Email, GitHub) with one-tap links.
- 🎮 Games — two built-in casual games:
- Whack-a-Mochi — classic whack-a-mole with mochi, bombs, and rare golden bonus mochi.
- Anime Snake — grid-based Snake with a cat-head snake and sakura-petal food, playable with arrow keys or an on-screen D-pad.
- 🌸 Sakura petal animation — decorative, non-interactive, always-on background effect.
- 🖥️ Auto-scaling / mobile support — on phones and narrow screens, apps automatically open full-screen for a native-app feel; layouts, fonts, and touch targets adapt to smaller viewports.
- Live visitor counter & IP display — a fun, purely client-side visitor counter and a taskbar readout of your own public IP (visible only to you, not stored anywhere by the page).
nostalgios-app/
├── index.html # Page structure & markup for every window/app
├── style.css # All styling, organized into numbered sections
└── script.js # All application logic (window manager + apps)
The project intentionally has no build tools, bundlers, or frameworks — just open index.html in a browser, or host the three files as static assets anywhere.
Just open index.html in your browser. (Camera access in Photobooth requires either localhost or HTTPS — it won't work from a plain file:// path in most browsers, so for camera testing use a local server, e.g.:)
python3 -m http.server 8000
# then visit http://localhost:8000Any static host works: GitHub Pages, Netlify, Vercel, Cloudflare Pages, etc. Just upload/push all three files (they must stay in the same folder).
Open script.js, find YOUTUBE_PLAYLIST near the Music Player section, and edit the title / url fields:
const YOUTUBE_PLAYLIST = [
{ title: 'Your Song Title', url: 'https://www.youtube.com/watch?v=VIDEO_ID' },
// add as many as you like
];Tip: pick videos from channels that explicitly allow embedding (e.g. NoCopyrightSounds) so playback never gets blocked.
Edit the .contact-item blocks in index.html (inside #win-contact) — update the handle text and the window.open(...) URL in each button.
See the big comment block above #wallpaper in style.css — it explains how to swap the current gradient for a static image, a GIF, an animated video, or even a <canvas>-driven wallpaper.
- Add a desktop icon and a
<div class="window" id="win-yourapp">block inindex.html(see the comment inside#desktop). - Register it in the
titlesobject near the top ofscript.js:yourapp: { icon: '🎮', label: 'yourapp.exe' }
- Optional: add a Start Menu entry (
<div class="item" data-open="yourapp">).
Open/close/drag/minimize/maximize work automatically for any element with the .window class — no extra JS needed unless your app has custom behavior.
- Fonts: Baloo 2 & Quicksand via Google Fonts.
- Music: YouTube IFrame Player API.
- IP lookup: ipify (free, no API key).
- Visitor counter: uses the host platform's built-in key-value storage (shared, so the count is global across visitors).
- Browser support: any modern evergreen browser (Chrome, Edge, Firefox, Safari). Camera features require
getUserMediasupport and a secure context (HTTPS or localhost).
No license has been set yet.