Inspiration

We were inspired by the nostalgia of Windows 98—the iconic operating system that defined computing for millions in the late 90s. We wanted to recreate that authentic retro experience in a modern web browser, complete with the quirky charm of Clippy and classic games like Minesweeper and Pinball. The goal was to build something that brings back childhood memories while showcasing cutting-edge web technologies like real-time multiplayer chat, AI assistance, and WebGL gaming—all running in your browser with pixel-perfect accuracy.

What it does

Windows XD is a fully functional Windows 98 recreation that runs entirely in your web browser. It features:

  • 🖥️ Authentic Windows 98 Desktop: Complete with draggable/resizable windows, taskbar, Start menu, and desktop icons
  • 📝 Classic Applications: Notepad, File Explorer, Internet Explorer 5, Media Player, and Task Manager
  • 🎮 Retro Games: Minesweeper, Solitaire, 3D Pinball Space Cadet (all fully playable!)
  • 💬 Real-time Multiplayer Chat: Connect with other users via WebSocket-powered chatroom
  • 🤖 AI-Powered Clippy and paint: An intelligent assistant powered by Google Gemini that offers context-aware help. A paint application that creates AI-generated images based on user prompts.
  • 😈 Virus Prank: A hilarious 5-stage "infection" sequence with butterflies, BonziBuddy sprites, screen glitches, Blue Screen of Death, and fake ransomware screen (100% safe and cosmetic!)

How we built it

  • Modern tools can recreate retro experiences: React, Next.js, TypeScript, and Tailwind are well-suited for building pixel-perfect retro UIs
  • State Management is Critical: Using Zustand for centralized window/taskbar state made complex interactions manageable and debuggable
  • WebSocket Socket.io deployment is tricky: Socket.io requires hosting a dedicated server—we learned to use PartyKit for automatic WebSocket when deploying to Vercel
  • API Security Matters: Even in fun projects, protecting API keys with proxy endpoints and rate limiting is essential to prevent abuse

Challenges we ran into

Real-time Chat Deployment: Integrating Socket.IO with Next.js required a custom server setup, and deploying WebSocket functionality to Vercel (which doesn't support WebSockets) forced us to migrate to PartyKit for real-time features.

Game Integration: Initially, we attempted to build games like Pinball and Solitaire from scratch, which would have taken weeks. We pivoted to embedding authentic Windows 98 games via iframe from 98.js.org, reducing 1000+ lines of game engine code to just ~60 lines while maintaining authenticity.

API Key Security: Protecting the Google Gemini API key while allowing client-side Clippy interactions required building a secure proxy API endpoint with rate limiting and input validation.

Performance Optimization: The virus prank's glitch phase initially caused severe performance issues with hundreds of DOM manipulations per second. We implemented DOM query caching and reduced the update interval to maintain smooth performance.

Accomplishments that we're proud of

  • ✨ Pixel-Perfect Recreation: We achieved an authentic Windows 98 look that genuinely feels like using the original OS
  • 🎮 11 Fully Functional Applications: From Notepad to Internet Explorer to Space Cadet Pinball, everything works smoothly
  • 🤖 AI Integration: Successfully integrated a modern LLM (Google Gemini) into a retro interface, making Clippy actually useful for once!
  • 😂 Hilarious Virus Prank: The 5-stage infection sequence with ~77 animated sprites, glitch effects, and fake BSOD is both technically impressive and genuinely funny
  • ⚡ Modern Performance: Despite the retro aesthetic, the app is fast and responsive thanks to React 19 and Next.js optimization
  • 🌐 Real-time Multiplayer: Built a working WebSocket chatroom where multiple users can interact in real-time 📚 Comprehensive Documentation: Created extensive planning documents, deployment guides, and code style guidelines for future contributors We went from a basic desktop shell to a feature-complete Windows 98 simulator in record time, and every feature works exactly as it should.

What we learned

Embedding vs. Building from scratch: Sometimes the smartest solution is to embed existing implementations rather than rebuilding everything. By using authentic Windows 98 games from 98.js.org (Pinball, Solitaire), we saved weeks of development time and ensured perfect authenticity—reducing what would have been 1000+ lines of game engine code to just ~60 lines of iframe integration.

State management is critical for complex UIs: Using Zustand for centralized window/taskbar state was essential. Managing multiple draggable windows, z-index ordering, minimize/maximize states, and taskbar synchronization would have been chaotic without a robust state management solution.

WebSocket deployment has platform constraints: Not all hosting platforms support WebSockets out of the box. We learned that Vercel's serverless architecture doesn't support persistent WebSocket connections, leading us to integrate PartyKit for scalable real-time multiplayer features.

API security matters even in fun projects: Protecting the Google Gemini API key required building a secure proxy endpoint with rate limiting, input validation using Zod, and proper error handling. Client-side API keys can be easily extracted and abused, costing real money.

What's next for Windows XD

  • 💬 Enhanced Chatroom: Add typing indicators, message timestamps, user profiles, and emoji reactions
  • 🤖 Smarter Clippy: Expand AI capabilities with memory of user interactions, more contextual suggestions, and integration with all applications
  • 🔧 System Features: Add Control Panel with display settings, theme customization, and actual file operations in File Explorer
  • 📱 Mobile Support: Optimize the experience for touch devices with responsive layouts
  • 🌐 Save State: Implement localStorage persistence so users' desktop layouts and settings are saved between sessions
  • 🤝 Collaborative Features: Allow multiple users to see each other's cursors and interact with shared desktops

Our goal is to make Windows XD the definitive web-based Windows 98 experience—nostalgic, fully functional, and surprisingly useful!

Built With

Share this project:

Updates