Thank you for your interest in contributing to Tasky, a simple Rust CLI for managing to-do lists! We aim to make this project welcoming to beginners, especially those new to Rust or open-source. Whether you're fixing a typo, adding a feature, or improving documentation, every contribution counts. This guide will help you get started.
- Why Contribute?
- Getting Started
- How to Contribute
- Good First Issues
- Code Style and Guidelines
- Community and Support
- License
Tasky is designed to be a beginner-friendly project,
- Learn Rust: Practice structs, file I/O, CLI parsing, and JSON handling in a small codebase.
- Build Your Portfolio: Your contributions (even small ones!) will be visible on GitHub.
- Join a Welcoming Community: We aim for 90%+ beginner contributors, so you’re in good company.
- Make an Impact: Add features or fixes to a tool people can use in CMD, PowerShell, or any terminal.
No prior open-source experience? No problem! We’ll guide you through your first pull request (PR).
- Install Rust:
- Download and install Rust via rust-lang.org:curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
On Windows, this runs rustup-init.exe. Choose the default stable toolchain.
- Verify:
rustc --version(should show ~1.70.0 or later).
- Set Up an Editor:
- We recommend VS Code with the
rust-analyzerextension for code completion and error checking.
- Clone the Repository:
- git clone https://github.com/MrGranday/tasky.git
- cd tasky
- Build and Test:
- Build:
cargo build - Run:
cargo run -- add "Test task" - Test commands:
cargo run -- listorcargo run -- remove 0 - On Windows, ensure CMD supports colors:
reg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1
Follow these steps to submit your first contribution:
- Find an Issue:
- Check the Issues tab on GitHub.
- Look for issues labeled
good first issueorhelp wanted—perfect for beginners! - If you have an idea, open a new issue to discuss it first.
- Fork the Repo:
- Click the “Fork” button on GitHub to create your own copy.
- Clone your fork:
git clone https://github.com/yourusername/tasky.git
- Create a Branch:
git checkout -b my-fix-or-feature- Use a descriptive name (e.g.,
add-due-dates).
- Make Changes:
- Edit files in
src/(e.g.,main.rsfor code,README.mdfor docs). - Keep changes small and focused (e.g., one feature or bug fix per PR).
- Test:
cargo run -- <your-command>andcargo test(if tests exist).
- Commit and Push:
- Commit:
git commit -m "Add due date support" - Push:
git push origin my-fix-or-feature
- Submit a Pull Request:
- Go to your fork on GitHub and click “Compare & pull request.”
- Describe your changes clearly (e.g., “Added
--donecommand to mark tasks as complete”). - Link to the issue you’re addressing (e.g., “Fixes #5”).
- Respond to Feedback:
- Maintainers may suggest changes. Update your branch and push again.
- Don’t worry—we’re here to help beginners!
Tips:
- Run
cargo checkorcargo clippyto catch errors early. - Keep PRs small to make reviews faster.
- Ask questions in the issue or PR comments if stuck.
Here are examples of beginner-friendly tasks to start with:
- Documentation:
- Fix typos in
README.mdor this file. - Add usage examples (e.g., for PowerShell).
- Features:
- Add priority tags (e.g.,
tasky add "Call mom" --priority high). - Add a
clearcommand to delete all tasks. - Add a
sortcommand to sort tasks by due date. - Add a
filtercommand to show only done/undone tasks. - Output Improvements:
- Add JSON output for PowerShell (
tasky list --json). - Colorize tasks by priority (e.g., red for high).
- Bug Fixes:
- Improve error messages (e.g., for invalid indices).
- Handle file permission errors for
tasks.json. - Tests:
- Write unit tests for new commands using
#[test].
Check the Issues tab for specific tasks. Comment on an issue to claim it (e.g., “I’d like to work on this!”).
- Rust Formatting: Run
cargo fmtto auto-format code (follows Rust’s standard style). - Linting: Use
cargo clippyto catch common issues. - Commit Messages: Use clear messages (e.g., “Add
--donecommand” or “Fix typo in README”). - Keep It Simple: Tasky is meant to be minimal. Avoid complex dependencies or features unless discussed.
- Testing: Test your changes in CMD and PowerShell. Ensure
tasks.jsonis readable/writable. - Windows Focus: Ensure features work in CMD (
tasky list) and PowerShell (tasky list | ConvertFrom-Jsonfor JSON).
We’re here to help! If you’re new to Rust or open source:
- Ask Questions: Comment on GitHub issues or PRs.
- Join the Rust Community:
- Rust Discord (beginner channels).
- r/rust on Reddit.
- Share your progress on X with #rustlang or #tasky!
- Contact Maintainers: Reach out via GitHub issues for guidance.
No question is too small—beginners are our priority!
By contributing to Tasky, you agree to license your contributions under the MIT License. This keeps the project open and accessible for everyone.
Happy contributing! Let’s make Tasky a great tool together! 🦀