Thank you for your interest in ReadyStackGo! This document describes how you can contribute to the project.
- Clean Architecture in the backend (API/Application/Domain/Infrastructure)
- Dispatcher Pattern instead of MediatR
- Clear responsibilities per layer
- Consistent naming (Namespaces
ReadyStackGo.*, Configrsgo.*.json) - Testability: Business logic in Handlers, not in Endpoints
See SETUP.md for details on:
- .NET 9 Setup
- Node/Tailwind Setup
- Docker Requirements
- Debugging
ReadyStackGo uses trunk-based development:
main– single source of truthfeature/*– feature branchesbugfix/*– bugfix branches
PR Workflow:
- Create issue or reference existing issue
- Create branch
feature/<short-description>frommain - Implement changes
- Run tests
- PR to
mainwith description & screenshots (if UI)
-
Language: C# (.NET 9)
-
Project Structure:
ReadyStackGo.Api– FastEndpointsReadyStackGo.Application– Commands/Queries/HandlersReadyStackGo.Domain– Entities/ValueObjectsReadyStackGo.Infrastructure– Docker/Files/TLS
-
No direct logic in Endpoints – always use
IDispatcher -
Define Services as Interfaces in
ApplicationorDomain -
Implementations in
Infrastructure
- Language: TypeScript + React
- Styling: Tailwind, based on TailAdmin
- API calls via clearly typed client modules
- State preferably via React Query / SWR
- Forms with clear validations
- Unit tests for:
- Commands/Queries Handlers
- DeploymentPlan generation
- Manifest validation
- Later: Integration tests for API
Important architecture decisions should be documented as ADR (Architecture Decision Records), e.g.:
- Choice of Dispatcher Pattern
- Structure of Manifest Schemas
- TLS Handling in Gateway instead of Admin Container
- C#: Use
dotnet format - Prettier/ESLint for TypeScript
- No unused
usings / Imports - Consistent naming of Commands:
VerbNounCommand
Thank you for your contribution to ReadyStackGo!