First off, thank you for considering contributing to this project! It's people like you that make the open-source community such a great place to learn, inspire, and create.
By participating in this project, you are expected to uphold our Code of Conduct. Please be respectful and professional in all interactions.
- Docker and Docker Compose
- Node.js (for local linting)
- Windows Users: Must use WSL or Git Bash to run shell-based test scripts locally.
- Fork the repository and create your branch from
main. - Install dependencies:
npm install. - Make your changes: Ensure you follow our architectural principles (SRP, one class per file, no magic values).
- Write tests: Any new feature or fix must include corresponding tests.
- Verify locally:
- Run linting:
npm run lint - Run cross-platform tests:
npm test(requires Docker)
- Run linting:
- Commit: Use Conventional Commits (e.g.,
feat: ...,fix: ...). - Submit a Pull Request: Provide a clear description of the changes and link to any relevant issues.
- Hexagonal Architecture: Keep the domain pure. Infrastructure details stay in
adapters. - Value Objects: Use Value Objects for all domain concepts (SHAs, Refs, Signatures).
- Security First: All shell commands must be sanitized via
CommandSanitizer. - Environment Agnostic: Use
TextEncoder/TextDecoderand avoid runtime-specific APIs in the domain layer.
- Use the GitHub issue tracker.
- Provide a minimal reproducible example.
- Include details about your environment (OS, runtime version).
By contributing, you agree that your contributions will be licensed under its Apache-2.0 License.