First off, thank you for considering contributing to TypeSync! 🎉
This document provides guidelines and steps for contributing. Following these guidelines helps communicate that you respect the time of the developers managing and developing this open source project.
- Code of Conduct
- Getting Started
- How to Contribute
- Development Setup
- Coding Standards
- Commit Messages
- Branch Naming
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
- Fork the repository on GitHub
- Clone your fork locally
- Set up the development environment (see Development Setup)
- Create a branch for your changes
- Make your changes
- Push your branch and submit a pull request
Before creating a bug report, please check existing issues to avoid duplicates.
When creating a bug report, include:
- A clear and descriptive title
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Your environment (.NET version, OS, etc.)
- Code samples if applicable
Feature suggestions are welcome! Please:
- Use a clear and descriptive title
- Provide a detailed description of the proposed feature
- Explain why this feature would be useful
- Include code examples if applicable
- Update your fork: Make sure your fork is up to date with the main repository
- Create a branch: Create a branch with a descriptive name (see Branch Naming)
- Make changes: Implement your changes following our Coding Standards
- Write tests: Add or update tests as necessary
- Update documentation: Update the README or other docs if needed
- Commit: Use meaningful commit messages (see Commit Messages)
- Push: Push your branch to your fork
- Submit PR: Create a pull request with a clear description
- .NET 10 SDK
- Visual Studio 2022 or VS Code with C# extension
- Git
# Clone the repository
git clone https://github.com/Pawankumar9090/TypeSync.git
cd TypeSync
# Restore dependencies
dotnet restore
# Build the solution
dotnet build
# Run tests
dotnet test# Run all tests
dotnet test
# Run tests with coverage
dotnet test --collect:"XPlat Code Coverage"- Follow C# naming conventions
- Use meaningful variable and method names
- Keep methods small and focused
- Write XML documentation for public APIs
- Use nullable reference types appropriately
- Follow SOLID principles
- Use 4 spaces for indentation (no tabs)
- Use
varwhen the type is obvious - Place opening braces on the same line
- Keep lines under 120 characters when possible
We follow the Conventional Commits specification:
<type>(<scope>): <subject>
<body>
<footer>
feat: A new featurefix: A bug fixdocs: Documentation changesstyle: Code style changes (formatting, etc.)refactor: Code refactoringtest: Adding or updating testschore: Maintenance tasks
feat(mapping): add support for async mapping
fix(flattening): resolve null reference when nested property is null
docs(readme): update installation instructions
Use descriptive branch names following this pattern:
| Type | Pattern | Example |
|---|---|---|
| Feature | feature/<description> |
feature/async-mapping |
| Bug fix | fix/<description> |
fix/null-reference |
| Documentation | docs/<description> |
docs/api-reference |
| Refactor | refactor/<description> |
refactor/internal-cache |
Feel free to open an issue with your question or reach out to the maintainers.
Thank you for contributing! 💜