Skip to main content

Contributing to Synentra

Thank you for your interest in contributing! Synentra welcomes contributions of all kinds — bug fixes, documentation improvements, new features, and more.


Getting Started​

  1. Fork the repository on GitHub: synentra/synentra
  2. Clone your fork locally:
    git clone https://github.com/<your-username>/synentra.git
    cd synentra
  3. Create a feature branch:
    git checkout -b feature/my-feature
  4. Restore dependencies and build:
    dotnet restore
    dotnet build
  5. Run tests:
    dotnet test

Project Structure​

src/
├── Synentra # Host / entry-point
├── Synentra.Application # Use cases & abstractions
├── Synentra.Domain # Domain model
├── Synentra.Infrastructure # Implementations
├── Synentra.Infrastructure.Persistence.Sqlite
├── Synentra.Infrastructure.Persistence.Common
└── Synentra.BuildingBlocks # Shared utilities

tests/
├── Synentra.Application.UnitTests
├── Synentra.BuildingBlocks.UnitTests
├── Synentra.Domain.UnitTests
├── Synentra.Infrastructure.Persistence.Common.UnitTests
├── Synentra.Infrastructure.Persistence.Sqlite.UnitTests
└── Synentra.Infrastructure.UnitTests

Coding Standards​

  • Target .NET 10
  • Follow existing file and namespace conventions
  • Use the Result<T> / Error pattern (from Synentra.BuildingBlocks) for error handling — do not throw exceptions in handlers
  • Write unit tests for all new domain logic and application handlers
  • Keep infrastructure implementations behind interfaces defined in Synentra.Application

Submitting a Pull Request​

  1. Ensure all tests pass: dotnet test
  2. Ensure the build is clean: dotnet build
  3. Commit with a clear, descriptive message
  4. Push your branch and open a Pull Request against main
  5. Fill in the PR template describing the change and motivation

Good First Issues​

Looking for something to work on? Check out issues labelled good first issue on GitHub.


License​

By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.

Was this helpful?