tl;dr: Rust, SQLite, Documentation

Tick Screenshot Help


Tick is a time-tracking CLI tool written in Rust using SQLite as the data store. I use a script called Tux to automate creating, attaching, detaching Tmux sessions.

I set out on a new learning journey to teach myself Rust. I didn’t, and still don’t, know many Rustaceans. But, the community seemed friendly enough that it allowed me to jump into something so new & different without any hesitation.

I hit many walls in my development of Tick, but after a year of working on it in my spare time I finally was able to ship it as version 0.2.0 2017. I’ve been using it myself ever since. I really like how much faster it is than my previous time-tracking tool. I still have more features that I’m going to work into it in the future, but for now I’m in extended beta mode.


Tick Screenshot Usage

$ tick [ -v ] start --name my-timer [ --message "I can do the thing!" ]
$ tick [ -v ] status
$ tick [ -v ] stop --name my-timer [ --message "I did the thing!" ]
$ tick [ -v ] stop [ --message "I did the thing!" ] # without a name argument stops the latest running timer
$ tick [ -v ] list
$ tick [ -v ] remove --id $( tick list | tail -1 | awk '{ print $1 }' ) # delete the latest timer by Timer ID

Note about first time you start using Tick.

There’s a reason I didn’t ship the base functionality as 1.0.0 as I would have preferred. The thing is, in order to create the database and run the initial migration you’ll need to do a few things first.

  1. Set an environment variable called $DATABASE_URL as a path to a SQLite database. I like to use, ~/.tick/db/main.db.
  2. Clone the repository and install the diesel_cli from Cargo
  3. Run diesel setup from within the cloned repository to create the database at the $DATABASE_URL path and run the necessary migrations.

😑 In a future version of Tick, this will all be either automatic or done by the user using tick init.

Download the release for macOS, or check out the source and build Tick for our platform of choice.