How to Contribute
Contributions to Web XP are welcome! Whether you’re fixing bugs, adding features, or improving documentation, your help is appreciated.Getting Started
- Fork the repository on GitHub
- Clone your fork locally:
- Install dependencies:
- Create a branch for your changes:
- Make your changes and test them
- Commit your changes with a clear message
- Push to your fork:
- Open a Pull Request on GitHub
Code Style Guidelines
Web XP uses ESLint and Prettier to maintain consistent code style.Prettier Configuration
The project uses the following Prettier settings (.prettierrc):
- Use single quotes for strings
- Add trailing commas in objects and arrays
- Let Prettier handle formatting automatically
ESLint Configuration
The project extends:react-app- Standard React rulesplugin:prettier/recommended- Prettier integration
Running the Linter
Before committing, run the linter:Code Formatting
To ensure your code matches the project style:- Use an editor with Prettier integration (VS Code, WebStorm, etc.)
- Enable format on save in your editor
- Or manually format before committing
Coding Standards
React Component Guidelines
Use functional components with hooks:Styled Components
Use styled-components for all styling:- Use PascalCase for styled component names
- Name components descriptively (e.g.,
Container,Header,Button)
File Organization
Component files:- Use
.jsxextension for components - One component per file
- Export default at the end
- Place new apps in
src/WinXP/apps/ - Place reusable components in
src/components/ - Place assets in
src/assets/organized by type
Import Order
Organize imports in this order:- React imports
- Third-party library imports
- Local component imports
- Asset imports
- Style imports
Path Aliases
Use configured path aliases instead of relative imports:Pull Request Process
Before Submitting
-
Test your changes thoroughly:
- Test in multiple browsers if possible
- Test on different screen sizes
- Check console for errors
-
Run the linter:
Fix all errors and warnings
-
Build the project:
Ensure the build succeeds
-
Review your changes:
- Remove any console.log statements
- Remove commented-out code
- Check for accidental file inclusions
Pull Request Guidelines
Write a clear PR description:- What does this PR do?
- Why is this change needed?
- How does it work?
- Are there any breaking changes?
- Include screenshots for UI changes
- One feature or fix per PR
- Avoid mixing unrelated changes
- Split large changes into multiple PRs
- Address reviewer comments promptly
- Ask questions if feedback is unclear
- Update your PR based on suggestions
Testing Changes
Manual Testing Checklist
When adding or modifying features, test:-
Window operations:
- Open, close, minimize, maximize
- Drag and resize
- Window focus and z-index
- Taskbar button behavior
-
Icon interactions:
- Single click to select
- Double click to open
- Drag-to-select (rubber band)
-
Start menu:
- Menu opens and closes
- Submenu navigation
- App launches from menu
-
Power operations:
- Log off dialog
- Shutdown dialog
- Cancel buttons work
-
Mobile compatibility:
- Warning dialogs appear
- Layout adapts to small screens
Browser Testing
Test in multiple browsers:- Chrome/Edge (Chromium)
- Firefox
- Safari (if on macOS)
Screen Size Testing
Test at different viewport sizes:- Desktop (1920x1080)
- Laptop (1366x768)
- Tablet (768x1024)
- Mobile (375x667)
Reporting Bugs
If you find a bug:- Check if it’s already reported in GitHub Issues
- Create a new issue with:
- Clear description of the bug
- Steps to reproduce
- Expected behavior
- Actual behavior
- Screenshots if applicable
- Browser and OS information
Feature Requests
To suggest a new feature:- Check existing issues to avoid duplicates
- Create a new issue with:
- Clear description of the feature
- Why it would be useful
- How it might work
- Any design considerations
Questions?
If you have questions:- Open a GitHub Issue with the
questionlabel - Check the existing documentation
- Review the source code for examples
License and Copyright
By contributing to Web XP, you agree that your contributions will be licensed under the project’s license. Important: The Windows XP name, artwork, and trademark are property of Microsoft. This project is for educational purposes only.Code of Conduct
Be respectful and constructive:- Be welcoming to newcomers
- Provide helpful feedback
- Focus on the code, not the person
- Respect different opinions and approaches
