# Contributing ## Prerequisites - rust 1.85+ (edition 2024) - sqlite development libraries install the rust toolchain via [rustup](https://rustup.rs/) and make sure sqlite headers are available for your platform. ## Development ```sh cargo build cargo test cargo clippy cargo fmt ``` run all checks before submitting changes: ```sh cargo fmt && cargo clippy && cargo test && cargo build ``` ### Database data is stored in a sqlite file at `$XDG_DATA_HOME/todo/todos.db` (override with `TODO_DB`). migrations in `migrations/` are applied automatically at startup. ## Project layout ``` src/ main.rs - entry point cli.rs - clap argument definitions commands.rs - command handlers db.rs - database access layer model.rs - data types display.rs - output formatting mcp.rs - mcp server tests/ - integration tests migrations/ - sqlite migrations build.rs - shell completion generation ``` ## Submitting changes 1. create a feature branch from `main` 2. keep commits small and focused 3. ensure `cargo fmt`, `cargo clippy`, and `cargo test` all pass 4. open a merge request with a clear description of what changed and why