diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..962f8e1 --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,283 @@ +# Contributing to AStar Dev OneDrive Sync Client + +Thank you for your interest in contributing! This document provides guidelines for contributing to the project. + +--- + +## Code Review Checklist + +Before submitting a pull request, ensure your code meets these requirements: + +### Code Quality +- [ ] Code follows naming conventions and style guide ([style-guidelines](instructions/style-guidelines.instructions.md)) +- [ ] All public members have XML documentation comments +- [ ] No warnings (project has `TreatWarningsAsErrors = true`) +- [ ] Code is properly formatted (use IDE formatter) + +### Architecture & Design +- [ ] New services/repositories have interfaces for testability +- [ ] Business logic is abstracted behind interfaces (no `new` instantiation of services) +- [ ] Dependencies injected via constructor parameters +- [ ] Follows layered architecture (Core → Infrastructure → Presentation) + +### Testing +- [ ] TDD workflow followed (failing test committed in branch history) +- [ ] Tests cover happy path and error cases +- [ ] Unit tests for business logic (80%+ coverage) +- [ ] Integration tests for cross-service flows (where applicable) +- [ ] All existing tests pass locally + +### Database Changes +- [ ] Database changes have Entity Framework migrations +- [ ] Migration reviewed and tested +- [ ] Migration includes `Up()` and `Down()` methods for rollback + +### Async/Concurrency +- [ ] Async/await used throughout (no `Task.Wait()` or `Task.Result`) +- [ ] `CancellationToken` parameters added to async methods +- [ ] Proper disposal of resources (`using` statements) + +### Documentation +- [ ] README updated (if applicable) +- [ ] API documentation added for public interfaces +- [ ] Comments explain "why", not "what" (code should be self-explanatory) + +--- + +## Commit Message Style + + +Use conventional commits format for all commit messages. This enables automatic changelog generation and semantic versioning. + + +### Format +``` +(): + + + +