A faithful recreation of the Windows XP startup, login, and desktop experience built with React. This project recreates the nostalgic Windows XP interface including the loader screen, login interface, and desktop environment with classic icons and taskbar.
- Authentic Loader Screen: Animated progress bar with Windows XP branding
- Classic Login Interface: User avatar, password field, and XP-styled login
- Desktop Environment:
- Bliss wallpaper recreation using CSS gradients
- Classic desktop icons (My Computer, My Documents, Recycle Bin, Internet Explorer)
- Functional taskbar with Start button and system clock
- Component-Based Architecture: Modular React components for easy maintenance
- Responsive Design: Desktop-first approach with mobile fallback
- Authentic Styling: Windows XP color palette, fonts, and visual effects
- Node.js (v14 or higher)
- npm or yarn package manager
-
Clone or download the project
git clone <repository-url> cd react-xp
-
Install dependencies
npm install
-
Start the development server
npm start
-
Open your browser Navigate to
http://localhost:3000to experience the Windows XP clone
npm run buildThis creates an optimized production build in the build folder.
src/
โโโ components/ # React UI components
โ โโโ Loader.jsx # Windows XP loading screen
โ โโโ Login.jsx # User login interface
โ โโโ Desktop.jsx # Main desktop environment
โ โโโ Taskbar.jsx # Bottom taskbar with Start button
โ โโโ Icon.jsx # Desktop icon component
โโโ assets/ # Static assets
โ โโโ images/ # Background images and graphics
โ โโโ icons/ # Desktop and application icons
โโโ App.js # Main application component
โโโ App.css # Global styles and XP theme
โโโ index.js # Application entry point
- App.js: Main application state management and screen navigation
- Loader.jsx: Animated loading screen with progress bar
- Login.jsx: User authentication interface (simulated)
- Desktop.jsx: Desktop environment with wallpaper and icons
- Taskbar.jsx: Bottom taskbar with Start button and system clock
- Icon.jsx: Reusable desktop icon component
The project uses authentic Windows XP colors defined in CSS variables:
:root {
--xp-blue-primary: #245fdb; /* Primary blue */
--xp-blue-secondary: #1941a5; /* Secondary blue */
--xp-blue-light: #3a6cf0; /* Light blue */
--xp-blue-dark: #0831d9; /* Dark blue */
--xp-green-primary: #22c55e; /* Progress bar green */
--xp-selection-blue: #0078d7; /* Selection highlight */
}- Primary Font: Segoe UI, Tahoma, Geneva, Verdana, sans-serif
- Sizes: 11px (default), 12px (mobile), 14px (headings)
- Weights: Normal (400), Bold (700)
- Gradients: Linear gradients for buttons and taskbar
- Shadows: Box shadows for depth and authenticity
- Borders: Inset/outset borders for 3D effect
- Transitions: Smooth hover and click animations
To add new icons to the desktop:
- Update the icons array in
src/components/Desktop.jsx:
const desktopIcons = [
// ... existing icons
{
name: 'New Application',
icon: '๐ฎ', // Use emoji or Unicode character
position: { x: 20, y: 460 }, // X, Y coordinates
onClick: () => console.log('New Application clicked')
}
];-
Icon Guidelines:
- Use emojis or Unicode characters for quick prototyping
- Position icons in a grid pattern (x: 20, y: increments of 110)
- Keep names concise (max 2 words)
- Add click handlers for future functionality
-
For custom icons:
- Place PNG/SVG files in
src/assets/icons/ - Import and use in the icon property
- Ensure 32x32px or 48x48px for optimal display
- Place PNG/SVG files in
Modify transition timing in src/App.js:
// Loader duration (progress bar speed)
setProgress(prev => prev + 2); // Change increment value
// Login delay
setTimeout(() => {
onLogin(username);
}, 1500); // Modify delay in millisecondsAdjust clock updates in src/components/Taskbar.jsx:
useEffect(() => {
const timer = setInterval(() => {
setCurrentTime(new Date());
}, 60000); // Change to 1000 for seconds, 60000 for minutes
}, []);- Loader screen displays and progresses to 100%
- Login screen accepts any password and transitions
- Desktop icons are clickable and selectable
- Taskbar Start button responds to clicks
- System clock displays current time
- Responsive layout works on different screen sizes
Tested on:
- โ Chrome 90+
- โ Firefox 88+
- โ Safari 14+
- โ Edge 90+
- Functional Start menu with applications list
- Right-click context menus for desktop and icons
- Draggable desktop icons with position persistence
- Window management system for opening applications
- Multi-user support with different avatars
- Settings panel for wallpaper and theme customization
- Local storage for user preferences and icon positions
- Simulated file system with folders and files
- Windows XP startup and event sounds
- Hover sound effects for buttons and icons
- Background music toggle
- Screen saver functionality
- Notepad clone
- Calculator application
- Paint application
- Minesweeper game
- Solitaire game
- Touch-friendly interface adaptations
- Mobile-specific navigation patterns
- Responsive icon grid layout
- Touch gestures for desktop interactions
- Use functional components with hooks
- Follow JSDoc commenting for all functions
- Implement PropTypes for type checking (future enhancement)
- Use meaningful variable and function names
- Keep components under 200 lines when possible
- Minimize re-renders with React.memo where appropriate
- Use CSS transforms for animations instead of changing layout properties
- Optimize images and assets for web delivery
- Implement lazy loading for future application components
- Add ARIA labels for screen readers
- Ensure keyboard navigation support
- Maintain color contrast ratios
- Provide alternative text for icons and images
- Bliss Recreation: CSS gradient simulation of the original Windows XP Bliss wallpaper
- Original: ยฉ Microsoft Corporation (used for educational/nostalgic purposes)
- Desktop Icons: Unicode emojis (public domain)
- System Icons: Custom CSS and Unicode characters
- Future Assets: Ensure proper licensing for any additional graphics
- Segoe UI: System font (Windows)
- Fallbacks: Tahoma, Geneva, Verdana (cross-platform compatibility)
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the existing code style and structure
- Add JSDoc comments for new functions
- Update README.md if adding new features
- Test across multiple browsers before submitting
- Include screenshots for UI changes
For questions, issues, or feature requests:
- Check existing issues in the repository
- Create a new issue with detailed description
- Include browser version and steps to reproduce
- Add screenshots or screen recordings when helpful
This project is created for educational and nostalgic purposes. Windows XP is a trademark of Microsoft Corporation. This project is not affiliated with or endorsed by Microsoft.
Built with โค๏ธ and nostalgia for the golden age of computing
Experience the classic Windows XP interface in your modern browser!