Thank you for your interest in contributing to Iris! This document provides guidelines and instructions for contributing.
- .NET 10 SDK (10.0.100 or later)
- Visual Studio 2022 or JetBrains Rider (recommended)
- Git for version control
-
Fork and clone the repository
git clone https://github.com/Mythetech/Iris.git cd Iris -
Restore dependencies
dotnet restore
-
Build the solution
dotnet build
-
Run the desktop application
cd Iris.Desktop dotnet run
# Run all tests
dotnet test
# Run specific test projects
dotnet test Iris.Components.Test
dotnet test Iris.Integration.Tests| Project | Description |
|---|---|
Iris.Desktop |
Main Hermes/Blazor desktop application |
Iris.Components |
Shared Blazor UI components |
Iris.Brokers |
Message broker abstractions and connectors |
Iris.Contracts |
Shared DTOs, commands, and events |
Services/ |
Backend services (Assemblies, History, Templates) |
- Follow the conventions in
.editorconfig - Use
_prefix for private fields (e.g.,_connectionManager) - Avoid inline comments describing obvious code; prefer well-named methods
- Use
ILogger<T>instead ofConsole.WriteLinefor logging
Iris follows these architectural patterns (see /docs/Architecture/):
- CQRS - Command Query Responsibility Segregation
- DDD - Domain-Driven Design
- REPR - Request-Endpoint-Response Pattern
- Create a new folder under
Iris.Brokers/(e.g.,Iris.Brokers/Kafka/) - Implement
IConnectorinterface for connection factory - Implement
IConnectioninterface for the connection - Register the connector in DI (auto-discovered via assembly scanning)
- Add components to
Iris.Components/in the appropriate folder - Follow the
IrisBaseComponentpattern for shared functionality - Write tests in
Iris.Components.Test/
- Use xUnit as the test framework
- Use NSubstitute for mocking
- Use FluentAssertions for readable assertions
- Use bUnit for Blazor component testing
- Integration tests use Testcontainers for real broker instances
- These tests may require Docker to be running
[Fact(DisplayName = "Can connect to docker RabbitMq")]
public async Task Can_Connect_ToRabbit()-
Create a feature branch from
maingit checkout -b feature/your-feature-name
-
Make your changes following the guidelines above
-
Write/update tests for your changes
-
Ensure all tests pass
dotnet test -
Commit with descriptive messages
git commit -m "Add support for Kafka broker connections" -
Push and create a Pull Request
- Code follows project conventions
- Tests added/updated and passing
- No
Console.WriteLinein production code (useILogger) - No hardcoded secrets or connection strings
- Documentation updated if needed
When reporting issues, please include:
- Iris version
- Operating system
- Steps to reproduce
- Expected vs actual behavior
- Relevant logs or screenshots
Feature requests are welcome! Please:
- Check existing issues first
- Describe the use case
- Explain why this would benefit other users
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to Iris! 🎉