Windows 98 Community Simulator - Devpost Submission

🖥️ Bringing the Classic Desktop Experience to Reddit

A comprehensive Windows 98 desktop simulator built on Reddit's Developer Platform that delivers an authentic retro computing experience complete with boot sequences, desktop environment, and fully playable Klondike Solitaire - all within a Reddit post.

https://www.reddit.com/r/win_98_v3_dev

https://github.com/ShannonCanTech/win-98-v3


💡 Inspiration

The inspiration came from a simple question: What if we could share the magic of Windows 98 with a new generation of Reddit users?

For many of us who grew up in the late 90s and early 2000s, Windows 98 was our gateway to the digital world. The satisfying click of desktop icons, the therapeutic card dealing in Solitaire during lunch breaks, the anticipation of the boot sequence - these experiences defined an era of computing.

With Reddit's Devvit platform enabling immersive experiences directly in posts, we saw an opportunity to recreate this nostalgic computing environment as a community experience. The goal wasn't just to build a simulator - it was to create a time machine that could transport users back to 1998, whether they lived through it or are discovering it for the first time.

Drawing inspiration from several outstanding open-source projects in the retro computing community (98.js, React95, winclassic, and various Windows 98 recreations), we set out to build something that honored the authenticity of the original while leveraging modern web technologies to make it accessible on today's mobile-first platform.

🎮 What It Does

Complete Windows 98 Experience

Authentic Boot Sequence

  • Blue Screen of Death (BSOD) entrance with authentic error message
  • Classic DOS boot screen with POST messages
  • Windows 98 startup animation with iconic boot.gif
  • Press any key to skip or auto-advance through stages

Interactive Desktop Environment

  • Fully functional Windows 98 desktop with authentic UI chrome
  • Working Start menu with application launcher
  • System tray with live clock and date
  • Desktop icons for quick application access (Notepad, Calculator, Solitaire, AOL IM, Minesweeper)

Professional Window Management System

  • Advanced draggable windows with proper title bar controls
  • Minimize, maximize, and close buttons with authentic styling
  • Z-index management for proper window stacking
  • Smart boundary constraints (windows can't be dragged off-screen)
  • Edge snapping for intuitive window positioning
  • Focus management - click any window to bring it to front
  • Taskbar buttons for easy application switching

Fully Playable Klondike Solitaire 🎴

The centerpiece application featuring:

Complete Game Mechanics

  • Full Klondike Solitaire rules implementation
  • 52-card deck with proper shuffling algorithm
  • Deck clicking to deal 3 cards at a time
  • Waste pile with automatic deck reset when empty
  • Four foundation piles (Ace to King by suit)
  • Seven tableau columns with proper building rules
  • Automatic face-down card flipping

Interactive Gameplay

  • Drag-and-drop card movement between all game areas
  • Click-to-move automation for valid moves
  • Foundation auto-placement when possible
  • Card validation preventing invalid moves
  • Win condition detection
  • Move counter tracking every action
  • Live game timer in MM:SS format

Authentic Windows 98 Styling

  • Original Windows 98 card sprites (71x96 pixels)
  • Classic green felt background
  • Proper window chrome with menu bar
  • Responsive scaling that maintains card proportions
  • Sound effects for card flips, placements, and win celebration

Mobile Optimization

  • Touch-enabled drag-and-drop
  • Responsive layout for Reddit's mobile-first audience
  • Viewport containment system
  • Dynamic scaling with container queries

Classic Applications Suite

Notepad

  • Full-featured text editor with authentic Windows 98 styling
  • Working textarea with proper focus management
  • Classic window chrome and menu bar

Calculator

  • Functional calculator with standard arithmetic operations
  • Authentic button layout and LCD-style display
  • Green monospace font matching Windows 98 aesthetic
  • Proper calculation engine with operator precedence

AOL Instant Messenger

  • Retro chat interface with classic AOL IM styling
  • Buddy list with online/offline states
  • Authentic late-90s messaging experience
  • (Real-time chat features planned for future updates)

System Features

Taskbar

  • Start button with authentic Windows 98 icon
  • Running application buttons with click-to-focus
  • System tray with live updating time/date
  • Proper 12-hour time format with AM/PM

Responsive Retro Design

  • Dynamic scaling system using CSS custom properties
  • Container queries for component-level responsiveness
  • Touch gesture support for mobile devices
  • Maintains pixel-perfect Windows 98 authenticity across all screen sizes

🛠️ How We Built It

Technology Stack

Frontend Framework

  • React 18: Component-based UI architecture
  • TypeScript: Full type safety throughout the application
  • Vite: Lightning-fast build tooling and development server
  • Tailwind CSS: Utility-first styling with custom Windows 98 theme extensions

Backend & Platform

  • Reddit Devvit: Reddit's developer platform for building immersive experiences
  • Express: Backend logic and API endpoints
  • Node.js 22: Runtime environment

Development Tools

  • Cursor: AI-powered IDE with Devvit MCP integration for enhanced development
  • Kiro: Asset management and workflow optimization
  • ESLint + Prettier: Code quality and formatting
  • TypeScript Compiler: Type checking and compilation

Architecture & Design Patterns

Component Architecture

Windows98Desktop (Root)
├── BootSequence (BSOD → DOS → Windows Boot)
├── Desktop (Main environment)
│   ├── DesktopIcons
│   ├── Taskbar
│   │   ├── StartButton
│   │   └── SystemTray
│   └── WindowManager
│       ├── Solitaire
│       ├── Notepad
│       ├── Calculator
│       └── AIM

State Management

  • React hooks for local component state
  • Context API for global application state (window management)
  • Custom hooks for window lifecycle management
  • Game state architecture for Solitaire logic

Asset Management Strategy

  • Initially attempted S3 bucket hosting for external assets
  • Pivoted to local asset bundling within Vite's public directory
  • Implemented asset preloading system with fallback logic
  • Optimized sprite sheets for minimal bundle size (~32KB for cards)

Responsive Scaling System

  • CSS custom properties for dynamic scaling
  • Transform-based scaling for maintaining aspect ratios
  • Container queries for component-level responsiveness
  • Touch event handlers for mobile compatibility

Key Implementation Highlights

Solitaire Game Engine

// Card shuffling using Fisher-Yates algorithm
// Drag-and-drop system with collision detection
// Win condition validation checking all foundations
// Move validation with proper color/rank checking

Window Management System

// Z-index stack management for window focus
// Boundary constraints with minimum visible area
// Edge snapping with proximity detection
// Touch and mouse event unification

Boot Sequence State Machine

// BSOD → DOS → Windows98Boot → Desktop
// Auto-advance timers with manual skip capability
// Asset loading with error handling

References & Inspiration

This project was built with inspiration and techniques learned from several outstanding open-source projects:

98.js by Isaiah Odhner

  • Reference for authentic Windows 98 UI components
  • Studied window chrome styling and menu bar implementations
  • Learned approaches to desktop icon positioning

React95 by React95 Team

  • Modern React component library for Windows 95 UI
  • Reference for button styles, window borders, and taskbar design
  • Studied responsive approaches for retro UI

winclassic by tpenguinltg

  • CSS styling reference for classic Windows UI elements
  • Learned techniques for pixel-perfect border rendering
  • Reference for system color schemes

Windows 98 Solitaire Recreation by Brittany Walker (ramenhog)

  • Studied card sprite implementation and layout
  • Reference for Klondike Solitaire game rules
  • Learned drag-and-drop patterns for card games

Clippy.js by clippyjs

  • Inspiration for future assistant features
  • Reference for animated character integration
  • (Planned for future development)

Special thanks to these developers for sharing their work and keeping retro computing alive!

🚧 Challenges We Ran Into

HTTP Fetch Domain Restrictions

The Problem: Initially designed the asset architecture around AWS S3 for hosting images, GIFs, fonts, and audio files. This seemed ideal for keeping bundle sizes small and avoiding package limit issues.

The Challenge: Hit Devvit's HTTP fetch policy restrictions. While S3 is on the approved cloud provider list, getting domain approval and properly configuring CSP (Content Security Policy) headers proved more complex than anticipated.

The Solution: Pivoted to bundling all assets locally within Vite's public directory. While this increased bundle size, it eliminated external dependencies and simplified the deployment pipeline. Implemented aggressive optimization:

  • Sprite sheet compression (32KB for full card deck)
  • Lazy loading for non-critical assets
  • Asset preloading system with fallback URLs

Lesson Learned: When building for constrained platforms, start with the most restrictive architecture first. External asset hosting should be an optimization, not a core dependency.

Real-Time Chat Implementation

The Problem: Wanted to implement functional real-time chat in AOL Instant Messenger for community interaction within the simulator.

The Challenge:

  • WebSocket connections in Devvit environment proved tricky
  • State synchronization across multiple users in same post
  • Message persistence and retrieval
  • Privacy and moderation concerns for in-app chat

Current Status: AOL IM currently features the UI and buddy list but lacks real-time messaging. This is a known limitation that will be addressed in future updates.

Future Approach: Planning to leverage Reddit's real-time features or implement a polling-based system with proper rate limiting and moderation tools.

Solitaire Game Logic Complexity

The Problem: Implementing a fully functional Klondike Solitaire with all proper rules turned out to be significantly more complex than anticipated.

The Challenges:

  • Card movement validation (alternating colors, descending ranks)
  • Tableau building with proper sequence validation
  • Foundation placement rules (ascending by suit)
  • Drag-and-drop collision detection
  • Auto-flip face-down cards
  • Win condition checking across all four foundations
  • Move counter accuracy
  • Undo/redo system (partially implemented)

Current Status: Solitaire is fully playable but the code is admittedly messy. The game works correctly, but the component could benefit from refactoring into smaller sub-components and cleaner state management.

What Works Well:

  • ✅ Full game rules implementation
  • ✅ Drag-and-drop with validation
  • ✅ Click-to-move automation
  • ✅ Win detection and celebration
  • ✅ Move counting and timing

Areas for Improvement:

  • Code organization (needs component extraction)
  • State management (could use useReducer pattern)
  • Animation smoothness
  • Performance optimization for mobile

The Lesson: Sometimes "done is better than perfect" - the game is fully functional and players are enjoying it, but technical debt was accumulated to meet the deadline. This will be refactored post-hackathon.

Mobile Touch Event Handling

The Challenge: Making a desktop-first interface feel natural on touch devices without breaking the authentic Windows 98 experience.

Specific Issues:

  • Touch drag events conflicting with scroll
  • Double-tap zoom interfering with double-click actions
  • Touch target sizes too small for mobile
  • Window dragging not working consistently on mobile

Solutions Implemented:

  • Unified touch and mouse event handlers
  • Proper preventDefault() usage to stop unwanted browser behaviors
  • Increased hit boxes while maintaining visual design
  • Touch-specific CSS for better tap targets
  • Container queries for responsive component scaling

Asset Loading Race Conditions

The Problem: Boot sequence assets (especially boot.gif) sometimes wouldn't load before the boot screen appeared, breaking immersion.

The Solution:

  • Implemented comprehensive asset preloading system
  • Added loading states and fallback images
  • Created error boundaries for asset failures
  • Fallback to colored divs if images fail to load

🎯 Accomplishments That We're Proud Of

🏆 Authentic Retro Recreation

  • Pixel-perfect Windows 98 UI with authentic fonts, colors, and styling
  • Three-stage boot sequence that captures the complete startup experience
  • Sound effects that transport users back to 1998
  • Successfully captured the feel of Windows 98, not just the appearance

🎮 Full Solitaire Implementation

  • Complete game mechanics with proper Klondike rules
  • Drag-and-drop that works on both desktop and mobile
  • Win detection and celebration effects
  • Built from scratch without game engine dependencies

🪟 Professional Window Management

  • Advanced window system with focus management, z-index stacking, and boundary constraints
  • Smooth dragging with edge snapping and constraints
  • Multi-window support allowing users to run multiple apps simultaneously
  • Responsive system that maintains functionality on mobile devices

📱 Mobile-First Retro Computing

  • Successfully adapted a desktop-centric interface for mobile without losing authenticity
  • Touch gestures work naturally despite simulating mouse-based UI
  • Responsive scaling maintains Windows 98 aesthetics across all screen sizes
  • Achieves the rare feat of being both nostalgic and modern

🚀 Reddit Platform Integration

  • Built entirely within Reddit's Devvit framework
  • Shareable gaming experience within Reddit posts
  • Community-ready architecture for future social features
  • Demonstrates Devvit's capabilities for complex applications

🛠️ Clean Technical Architecture

  • TypeScript throughout for type safety
  • Component-based architecture for maintainability
  • Efficient asset management despite constraints
  • Performance optimized for Reddit's diverse audience

📚 What We Learned

Platform-Specific Development

  • Learned Devvit's capabilities and limitations intimately
  • Understanding when to work within constraints vs. pushing boundaries
  • The importance of fallback strategies for external resources

Game Development Patterns

  • Implementing complex game logic in React
  • State management for interactive card games
  • Collision detection and drag-and-drop mechanics
  • Win condition validation algorithms

Responsive Retro Design

  • Techniques for adapting fixed-size interfaces to responsive layouts
  • Container queries for component-level responsiveness
  • Touch event handling in desktop-first interfaces
  • Maintaining authenticity while ensuring usability

Asset Management at Scale

  • Optimizing sprite sheets for web delivery
  • Preloading strategies for seamless UX
  • Fallback systems for asset loading failures
  • Balancing bundle size vs. external dependencies

TypeScript in Complex Applications

  • Type safety for game state management
  • Interface design for window management systems
  • Discriminated unions for application state
  • Generic components for reusability

🔮 What's Next for Windows 98 Community Simulator

🎮 Additional In-App Games & Experiences

Minesweeper (High Priority)

  • Classic mine-sweeping puzzle game
  • Multiple difficulty levels (Beginner, Intermediate, Expert, Custom)
  • Flag placing and chord clicking
  • Time tracking and mine counter
  • Win/loss detection with smiley face indicator

MS Paint (High Priority)

  • Image editing with authentic Windows 98 Paint interface
  • Drawing tools: pencil, brush, eraser, fill bucket, text
  • Shape tools: line, rectangle, ellipse, polygon
  • Color picker with classic palette
  • Save/load functionality for community sharing

Internet Explorer 4.0 (Medium Priority)

  • Simulated web browser with authentic IE4 interface
  • Address bar and navigation buttons
  • Favorites/bookmarks system
  • Sample "websites" from 1998 era
  • Easter eggs and hidden pages

Pinball (Space Cadet) (Medium Priority)

  • Recreation of Windows 95/98/XP Pinball game
  • Physics simulation for ball movement
  • Flipper controls and bumpers
  • Score tracking and high score table
  • Authentic sound effects

Media Player (Low Priority)

  • Classic Windows Media Player interface
  • Audio visualization
  • Playlist management
  • Simulated music playback

💬 Social & Community Features

Real-Time AOL Instant Messenger

  • Full chat functionality between users in same post
  • Buddy list with online/offline indicators
  • Away messages and status updates
  • Chat history and conversation persistence
  • Moderation tools for community safety
  • Private messaging between Reddit users

Community Leaderboards

  • Solitaire completion times (fastest wins)
  • Minesweeper speed records
  • Pinball high scores
  • Daily/weekly/all-time rankings
  • Reddit username display with opt-in

Social Sharing

  • Post achievements to subreddit
  • Share high scores with custom formatted posts
  • Screenshot functionality for desktop workspace
  • Achievement badges and flair integration

Multiplayer Modes

  • Head-to-head Minesweeper races
  • Collaborative Paint sessions
  • Solitaire tournaments with brackets
  • Community challenges and events

🎨 Customization & Personalization

Desktop Themes

  • Multiple wallpaper options (Bliss, Abstract, Nature)
  • Custom color schemes (Windows 98, Plus! themes)
  • Icon pack options (Classic, High Color, Custom)
  • Sound scheme selection

User Profiles

  • Persistent desktop layout (saved icon positions)
  • Application preferences and settings
  • High score and statistics tracking
  • Achievement collection

Accessibility Features

  • High contrast mode
  • Larger text options
  • Keyboard navigation support
  • Screen reader compatibility

🐛 Technical Improvements & Polish

Code Refactoring

  • Clean up Solitaire component architecture
  • Extract reusable game logic into hooks
  • Implement proper state management patterns
  • Add comprehensive unit tests

Performance Optimization

  • Lazy load application components
  • Optimize render cycles
  • Improve asset loading strategy
  • Better mobile performance

Bug Fixes

  • Window management edge cases
  • Touch event reliability on various devices
  • Asset loading race conditions
  • Memory leak prevention

Developer Experience

  • Better TypeScript type definitions
  • Comprehensive documentation
  • Component storybook
  • Contribution guidelines

📖 Additional System Features

Help System

  • Windows 98 style help topics
  • Interactive tutorials for each app
  • "What's This?" cursor help tool
  • Clippy integration (planned)

System Settings

  • Display properties (resolution simulation)
  • Mouse settings (cursor speed, trails)
  • Date/Time configuration
  • Control Panel access

File System Simulation

  • My Computer exploration
  • File save/load dialogs
  • Document persistence
  • Recycle Bin functionality

🌟 Easter Eggs & Hidden Features

  • Secret desktop shortcuts
  • Hidden games and apps
  • Classic Windows 98 sounds and animations
  • Throwback error messages
  • Community-submitted Easter eggs

🏗️ Built With


🙏 Acknowledgments

Huge thanks to:

  • Reddit Devvit Team for creating an amazing platform for immersive experiences
  • Open-source retro computing community for keeping Windows 98 alive
  • Hackathon organizers for the opportunity to build something nostalgic
  • All the developers of the reference projects mentioned above
  • Windows 98 users worldwide who inspired this project

📝 Legal


🚀 Try It Out

https://www.reddit.com/r/win_98_v3_dev


Built with ❤️ and nostalgia during Reddit x Kiro 2025

Built With

  • devvit
Share this project:

Updates