Thank you for your interest in contributing to Rohas! This document provides guidelines and instructions for contributing.
- Rust 1.70 or higher
- Cargo
- Node.js 18+ (for TypeScript runtime testing)
- Python 3.9+ (for Python runtime testing)
# Clone the repository
git clone https://github.com/rohas-dev/rohas.git
cd rohas
# Build all crates
cargo build
# Run tests
cargo test
# Build CLI
cargo build --release -p rohas-cliThe project is organized as a Cargo workspace with the following crates:
rohas-parser: Schema parsing and ASTrohas-engine: Core engine and event systemrohas-runtime: Runtime executors (Python, Node.js)rohas-cli: Command-line interfacerohas-codegen: Code generationrohas-cron: Cron job schedulingrohas-dev-server: Development serverrohas-adapters/: Event adapters (Memory, NATS, Kafka, RabbitMQ, SQS)
We use the following branch naming conventions:
feat/- New featuresfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoringtest/- Test additions or improvementschore/- Maintenance tasks
Example: feat/add-postgres-adapter, fix/parser-validation-bug
We follow conventional commit format:
<type>(<scope>): <description>
[optional body]
[optional footer]
Types:
feat: New featurefix: Bug fixdocs: Documentation changestest: Test additions/changesrefactor: Code refactoringchore: Maintenance tasksperf: Performance improvements
Example:
feat(parser): add support for nested models
- Implement nested model parsing
- Add validation for circular references
- Update tests
Closes #123
Before submitting a PR:
# Run all tests
cargo test
# Run specific crate tests
cargo test -p rohas-parser
# Run with logging
RUST_LOG=debug cargo test
# Format code
cargo fmt --all
# Run clippy
cargo clippy --all-targets --all-features- Create a feature branch from
main - Make your changes following the coding standards
- Add tests for new functionality
- Update documentation if needed
- Run tests and linting to ensure quality
- Submit a PR with a clear description
- Address review feedback promptly
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Testing
Describe testing performed
## Checklist
- [ ] Tests pass locally
- [ ] Code formatted (cargo fmt)
- [ ] Lints pass (cargo clippy)
- [ ] Documentation updated- Follow Rust standard formatting (use
cargo fmt) - Use meaningful variable and function names
- Add comments for complex logic
- Keep functions focused and small
- Write unit tests for new functionality
If you have questions or need help:
- Open a GitHub issue
- Check existing documentation
By contributing, you agree that your contributions will be licensed under the project's license.