Thank you for your interest in contributing to EnvelopeCLI! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to abide by our Code of Conduct.
Before creating a bug report, please check existing issues to avoid duplicates. When creating a bug report, include:
- A clear, descriptive title
- Steps to reproduce the issue
- Expected behavior vs actual behavior
- Your environment (OS, Rust version, EnvelopeCLI version)
- Any relevant error messages or logs
Feature suggestions are welcome! Please:
- Check existing issues and discussions first
- Describe the problem your feature would solve
- Explain your proposed solution
- Consider how it fits with the project's goals
- Fork and clone the repository
- Create a branch for your changes:
git checkout -b feature/your-feature-name - Make your changes following our coding standards
- Write or update tests as needed
- Run the test suite:
cargo test - Run lints:
cargo clippy - Format code:
cargo fmt - Commit your changes with a descriptive message
- Push to your fork and create a pull request
- Rust 1.70 or later
- Git
git clone https://github.com/KayleeBeyene/EnvelopeCLI.git
cd EnvelopeCLI
cargo buildcargo test # Run all tests
cargo test -- --nocapture # See test outputcargo clippy # Run lints
cargo fmt # Format code
cargo doc --open # Generate and view documentation- Follow the Rust API Guidelines
- Use
rustfmtfor consistent formatting - Address all
clippywarnings - Write documentation for public APIs
Use clear, descriptive commit messages:
- Start with a verb (Add, Fix, Update, Remove, Refactor)
- Keep the first line under 72 characters
- Reference issues when applicable:
Fix #123
Examples:
Add budget rollover command
Fix category deletion when transactions exist
Update TUI keyboard shortcuts documentation
- Write unit tests for new functionality
- Ensure existing tests pass
- Test edge cases and error conditions
- TUI code may be excluded from coverage requirements
src/
├── cli/ # CLI command handlers
├── tui/ # Terminal UI (ratatui)
├── models/ # Data models
├── services/ # Business logic
├── storage/ # JSON persistence
├── reports/ # Report generation
├── export/ # CSV, JSON, YAML export
├── crypto/ # Encryption
├── backup/ # Backup management
└── audit/ # Audit logging
- Bug fixes
- Documentation improvements
- Test coverage
- Performance optimizations
- Accessibility improvements
- New export formats
- Import from other budgeting tools
Feel free to open an issue for any questions about contributing.
By contributing, you agree that your contributions will be licensed under the MIT License.