Thank you for your interest in contributing to Valir! This document provides guidelines and information for contributors.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
Before creating a bug report, please check existing issues to avoid duplicates.
When creating a bug report, include:
- Clear, descriptive title
- Steps to reproduce the issue
- Expected vs actual behavior
- Environment details (.NET version, OS, Redis version)
- Relevant logs or error messages
Feature requests are welcome! Please:
- Check existing issues and discussions first
- Describe the use case clearly
- Explain why this would benefit other users
- Fork the repository
- Create a branch from
developfor your changes - Write tests for new functionality
- Follow coding standards (see below)
- Update documentation if needed
- Submit a PR with a clear description
# Clone your fork
git clone https://github.com/Taiizor/Valir.git
cd Valir
# Restore dependencies
dotnet restore
# Build
dotnet build
# Run tests
dotnet test- Use C# 14 language features appropriately
- Follow Microsoft's C# Coding Conventions
- Use file-scoped namespaces
- Write XML documentation for public APIs
- Keep methods focused and small
- Prefer explicit types for clarity in public APIs
src/
├── Valir.Abstractions/ # Core interfaces (IJobQueue, IRecurringJobQueue, IJobHandler, etc.)
├── Valir.Core/ # Worker runtime and core implementations (SchedulerWorker, MisfirePolicy)
├── Valir.Redis/ # Redis implementation with Lua scripts for recurring jobs
├── Valir.AspNet/ # ASP.NET integration and DI extensions
├── Valir.EntityFrameworkCore/ # EF Core integration with Outbox pattern
├── Valir.Brokers.Kafka/ # Kafka event broker adapter
├── Valir.Brokers.RabbitMQ/ # RabbitMQ event broker adapter
├── Valir.Brokers.AzureSB/ # Azure Service Bus event broker adapter
└── Valir.Extensions.Serilog/ # Serilog logging integration for job context enrichment
samples/
├── Valir.Sample.WebApi/ # ASP.NET Web API example
└── Valir.Sample.Worker/ # Background worker service example
tests/
└── Valir.Tests/ # Unit & integration tests
- Write unit tests for new logic
- Use Testcontainers for integration tests
- Ensure all tests pass before submitting PR
# Run unit tests only
dotnet test --filter "FullyQualifiedName!~Integration"
# Run all tests (requires Docker)
dotnet testOpen a Discussion for questions or ideas.
Thank you for contributing! 🚀