Thank you for your interest in contributing. This document covers how to propose changes, coding standards, and the review process.
- Code of Conduct
- How to Contribute
- Development Setup
- Coding Standards
- Commit Message Format
- Pull Request Guidelines
- Reporting Bugs
- Requesting Features
This project follows the Contributor Covenant Code of Conduct. By participating, you agree to uphold it. Please report unacceptable behavior to the project maintainer.
- Search existing issues before opening a new one — your question or bug may already be tracked.
- Open an issue for non-trivial changes before writing code. This allows design discussion and avoids wasted effort.
- Fork the repository and create a dedicated branch from
main:git checkout -b feat/my-feature
- Implement your change following the coding standards below.
- Test your change — all existing tests must pass and new behavior should have test coverage.
- Push your branch and open a Pull Request against
main.
- .NET 8 SDK
- Git
git clone https://github.com/marioarce/PowerCSharp.CleanArchitecture.git
cd PowerCSharp.CleanArchitecture
dotnet restore
dotnet build
dotnet testAll packages resolve from nuget.org — no additional local feed setup is required.
This repo follows the conventions defined in .editorconfig. Key rules:
- File-scoped namespaces — required (
namespace Foo;notnamespace Foo { ... }). - Explicit accessibility modifiers — always required (
public,private, etc.). - Nullable reference types — enabled globally; no
!suppressions without justification. - No
this.prefix — avoid qualifying members withthis.. var— use only when the type is evident from the right-hand side.- XML doc comments — required on all
publicmembers. - No trailing whitespace, LF line endings, UTF-8 encoding.
The build enforces code style (EnforceCodeStyleInBuild = true). A build that introduces style violations will fail.
<scope>: <description>
<changes>
- Scope is required. Use the area being changed (e.g.
ci,docs,nuget,template,docker,chore,feat,fix). - Description is a short imperative sentence (no period at end).
- Changes are bullet points (
-) summarising what was done. - No emojis in commit messages.
Example:
feat: add IRetryPolicyProvider to Operational layer
- Add IRetryPolicyProvider interface with Execute overloads
- Add RetryPolicyProvider implementation using Polly
- Register in AddOperational DI extension
- Keep PRs focused — one logical change per PR.
- Fill out the PR template completely.
- Ensure all CI checks pass before requesting review.
- Update
CHANGELOG.mdunder the[Unreleased]section. - Do not force-push to a PR branch after review has started.
Use the Bug Report issue template. Include:
- Steps to reproduce
- Expected vs actual behaviour
- .NET SDK version and OS
Use the Feature Request issue template. Explain:
- The problem you are trying to solve
- The proposed solution
- Alternatives you have considered