On a Roll
On a Roll is a command-line and terminal user interface (TUI) project management tool built using Rust. It is designed for fellow developers to manage tasks and projects efficiently without needing to switch tools, providing an interactive experience with easy-to-use keyboard shortcuts and a clean interface.
The main goal of this project was to learn and improve my Rust skills, applying my existing knowledge of task management systems and exploring the power of Rust’s concurrency and safety features.
Key Contributions
- Created both CLI and TUI interfaces for task and project management, providing flexibility in how users interact with the tool.
- Implemented custom components for the TUI using Ratatui, a library inspired by Elm architecture, allowing modularity and easy handling of UI events.
- Built a SQLite-backed persistence layer using Diesel ORM, leveraging
Rc
andRefCell
for a shared connection between components, exploring my skills in integrating databases into Rust applications. - Leveraged state management to efficiently update and display tasks without repeatedly querying the database, optimizing performance in the TUI.
- Implemented unit tests decoupled from the database and integration tests using an in-memory SQLite database to ensure reliability of commands.
- Planned Git integration to link tasks with Git branches and create or switch branches automatically when starting or resuming tasks.
- Planned integration with existing project management tools like Jira, Linear, or Notion via API calls to seamlessly incorporate tasks into established workflows.
Technologies
- Language: Rust
- Frontend (TUI): Ratatui
- CLI Framework: Clap
- Database: SQLite, Diesel