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
- Fork the repository on GitHub: synentra/synentra
- Clone your fork locally:
git clone https://github.com/<your-username>/synentra.git
cd synentra - Create a feature branch:
git checkout -b feature/my-feature - Restore dependencies and build:
dotnet restore
dotnet build - 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>/Errorpattern (fromSynentra.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
- Ensure all tests pass:
dotnet test - Ensure the build is clean:
dotnet build - Commit with a clear, descriptive message
- Push your branch and open a Pull Request against
main - 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.