Thank you for your interest in contributing to ModernWPF Enterprise Manager! This document provides guidelines and information for contributors.
- Visual Studio 2022 or JetBrains Rider
- .NET 9 SDK
- Git
- Basic knowledge of C#, WPF, and MVVM patterns
-
Fork the repository
git clone https://github.com/your-username/ModernWPF-Enterprise-Manager.git cd ModernWPF-Enterprise-Manager -
Install dependencies
dotnet restore
-
Build the project
dotnet build
-
Run tests
dotnet test
- Use the GitHub Issues page
- Search existing issues before creating a new one
- Use the appropriate issue template
- Provide detailed information including steps to reproduce
- Use the "Feature Request" issue template
- Clearly describe the feature and its benefits
- Include mockups or examples if applicable
- Discuss the feature in issues before implementing
feature/feature-name- New featuresbugfix/issue-number-description- Bug fixeshotfix/critical-issue- Critical fixesimprovement/area-description- Code improvements
-
Create a feature branch
git checkout -b feature/your-feature-name
-
Make your changes
- Follow coding standards (see below)
- Write tests for new functionality
- Update documentation as needed
-
Test your changes
dotnet test dotnet build --configuration Release -
Commit your changes
git add . git commit -m "feat: add employee search functionality"
-
Push to your fork
git push origin feature/your-feature-name
-
Create a Pull Request
- Use the provided PR template
- Link related issues
- Provide clear description of changes
- Include screenshots for UI changes
- Follow Microsoft C# Coding Conventions
- Use meaningful names for variables, methods, and classes
- Add XML documentation for public APIs
- Use
async/awaitfor asynchronous operations - Implement proper error handling and logging
- Keep ViewModels independent of Views
- Use data binding instead of direct UI manipulation
- Implement INotifyPropertyChanged for data binding
- Use Commands for user interactions
- Separate business logic into services
- Use consistent indentation (4 spaces)
- Group related properties together
- Use meaningful names for controls
- Leverage styles and templates for consistency
- Follow Material Design principles
- Follow SOLID principles
- Use dependency injection for loose coupling
- Implement repository pattern for data access
- Use proper separation of concerns
- Write unit tests for business logic
- Write tests for all business logic
- Use descriptive test method names
- Follow AAA pattern (Arrange, Act, Assert)
- Mock external dependencies
- Aim for 80%+ code coverage
- Test complete workflows
- Test database operations
- Test service interactions
- Test user workflows
- Test accessibility features
- Test responsive behavior
- Document all public APIs
- Include code examples for complex methods
- Update README.md for new features
- Maintain changelog
- Update user guides for new features
- Include screenshots and tutorials
- Maintain help system content
- Code follows project conventions
- Tests are included and passing
- Documentation is updated
- No breaking changes (or properly documented)
- Performance impact considered
- Security implications reviewed
- Accessibility requirements met
- Initial review within 2 business days
- Follow-up reviews within 1 business day
- Maintainer approval required for merge
We use Semantic Versioning:
- MAJOR version for incompatible API changes
- MINOR version for backward-compatible functionality
- PATCH version for backward-compatible bug fixes
By contributing, you agree that your contributions will be licensed under the same license as the project (MIT License).
We pledge to make participation in our project a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
- Using welcoming and inclusive language
- Being respectful of differing viewpoints
- Gracefully accepting constructive criticism
- Focusing on what is best for the community
- Showing empathy towards other community members
Project maintainers are responsible for clarifying standards and taking appropriate action in response to unacceptable behavior.
- GitHub Issues - Bug reports and feature requests
- GitHub Discussions - General questions and discussions
- Email - security@modernwpf.com for security issues
- Documentation improvements
- UI polish and styling
- Unit test additions
- Performance optimizations
- Accessibility improvements
- New feature implementations
- Architecture improvements
- Performance optimizations
- Security enhancements
- Platform integrations
Before submitting your contribution:
- I have read and followed the contributing guidelines
- My code follows the project's coding standards
- I have tested my changes thoroughly
- I have updated relevant documentation
- My commits have clear, descriptive messages
- I have linked my PR to relevant issues
- I have considered the impact on existing functionality
- I have added appropriate tests
Contributors will be recognized in:
- Project README.md
- Release notes
- Contributors section
- Annual contributor acknowledgments
Thank you for contributing to ModernWPF Enterprise Manager!