A small terminal task manager written in Rust.
Tasks are stored as plain Org files in ~/.local/share/taskin/ and edited
using your $EDITOR. The idea is to keep everything simple, hackable, and
easy to inspect without relying on a database or a complicated file format.
This project is mostly an excuse to learn Rust by building something I actually want to use.
Most of the projects I’ve written before were things like simulations or other fun stuff like nnart. They were fun, but after finishing them I rarely opened them again. This time, I wanted to try to build a tool that I might actually use every day.
Rust also seemed like a cool language to learn. So this is a project for also learning it.
The code is still rough in places, but that’s kind of the point. I’m writing this project myself as a way to become a better programmer, not as an exercise in prompting AI to perfect this thing in one try.
Current features include:
- creating tasks
- editing tasks in your favourite text editor
- listing tasks
- marking tasks as done/deleting them
- storing every task as an Org file
- stable UUIDs for every task
Planned ideas:
- interactive REPL-like mode
- fuzzy search
- tags
- priorities
- deadlines
- filtering
- better terminal interface
- maybe a full TUI one day
Every task is stored as a separate Org file. For example:
:PROPERTIES:
:ID: de706a6a-f63f-4c99-9691-09ba20dbf0a2
:END:
#+title: Math exam
Solve the practice problems from chapter 7.
Because everything is plain text (or, I guess, plain org), tasks are easy to edit, back up, version with Git, or manipulate using other tools.
cargo build --releaseor
cargo run new Read Rust BookThe editor used is taken from the $EDITOR environment variable. If it isn’t
set, it defaults to nano.
This project is under active development and is mostly a learning project. Expect questionable code, refactors, and ideas that may disappear a day later (if I am even going to be that active).