{"id":47826690,"url":"https://github.com/coko7/boat-cli","last_synced_at":"2026-04-03T19:45:31.718Z","repository":{"id":346311971,"uuid":"1185266094","full_name":"coko7/boat-cli","owner":"coko7","description":"⛵ Basic Opinionated Activity Tracker, a command line interface inspired by bartib. ","archived":false,"fork":false,"pushed_at":"2026-04-02T19:36:02.000Z","size":72,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T00:45:48.172Z","etag":null,"topics":["bartib","boat","boat-cli","clap-rs","cli","command-line","jq","json","productivity","rusqlite","rust","sqlite","time-tracker","time-tracking"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/boat-cli","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coko7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-18T12:06:41.000Z","updated_at":"2026-04-02T21:50:12.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/coko7/boat-cli","commit_stats":null,"previous_names":["coko7/boat"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/coko7/boat-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Fboat-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Fboat-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Fboat-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Fboat-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coko7","download_url":"https://codeload.github.com/coko7/boat-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coko7%2Fboat-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31374021,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T17:53:18.093Z","status":"ssl_error","status_checked_at":"2026-04-03T17:53:17.617Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bartib","boat","boat-cli","clap-rs","cli","command-line","jq","json","productivity","rusqlite","rust","sqlite","time-tracker","time-tracking"],"created_at":"2026-04-03T19:45:31.073Z","updated_at":"2026-04-03T19:45:31.706Z","avatar_url":"https://github.com/coko7.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⛵ boat\n\n`boat` - A **B**asic **O**pinionated **A**ctivity **T**racker, inspired by [bartib](https://github.com/nikolassv/bartib).\n\n![](./docs/boat-cli.png)\n\nLike its name implies, `boat` allows you to track the time you spend on everyday tasks.\n\nIt has mainly been designed to be easy to embed in custom bash scripts so that you can augment it with fuzzy-finding.\nThat said, if you plan to use the CLI directly (without external scripts), it also benefits from a [variety of handy aliases](#-usage).\n\n`boat` stores its data in a SQLite database file which is kept in the config directory by default (`.config/boat/boat.db`).\n\nThis repository contains only the code for the command line application.\nIt relies on [`boat-lib`](https://github.com/coko7/boat-lib) for core functions.\n\n[![Crates info](https://img.shields.io/crates/v/boat-cli.svg)](https://crates.io/crates/boat-cli)\n[![License: GPL-3.0](https://img.shields.io/github/license/coko7/boat-cli?color=blue)](LICENSE)\n![Rust](https://img.shields.io/github/languages/top/coko7/boat-cli?color=orange)\n[![Tests](https://github.com/coko7/boat-cli/actions/workflows/rust.yml/badge.svg)](https://github.com/coko7/boat-cli/actions/workflows/rust.yml)\n\n## Contents\n\n- [🚀 Demo](#-demo)\n- [🤔 Why was this tool created?](#-why-was-this-tool-created)\n- [🛠️ Installation](#%EF%B8%8F-installation)\n    - [Install with a bundled version of SQLite](#install-with-a-bundled-version-of-sqlite)\n- [⚙️ Configuration](#%EF%B8%8F-configuration)\n- [✨ Usage](#-usage)\n\n## 🚀 Demo\n\n![demo](https://github.com/user-attachments/assets/007809ee-fda9-4848-bc1c-ccd0131a3616)\n\n\u003e [!TIP]\n\u003e The `mp4` version of the demo is available [here](https://github.com/user-attachments/assets/919cb800-1d65-4c3f-bbae-a3195db3b3f6)\n\n## 🤔 Why was this tool created?\n\nThe [`bartib`](https://github.com/nikolassv/bartib) cli is what inspired me to create `boat`.\nIt's a feature-full tool that I used for a while, but I found it quite limiting for my usage due to its [lack of support for machine-readable output](https://github.com/nikolassv/bartib/pull/26).\nAnd that's it. All I wanted was an activity tracker that I could combine easily with [`jq`](https://github.com/jqlang/jq) and so I decided to make my own tool.\n\n## 🛠️ Installation\n\nThe easiest way to install is through [crates.io](https://crates.io/crates/boat-cli):\n```sh\ncargo install boat-cli\n```\n\nThe other option is to build from source:\n```sh\ngit clone https://github.com/coko7/boat-cli.git\ncd boat-cli\ncargo build --release\n```\n\n### Install with a bundled version of SQLite\n\nIf you are on Windows or you do not have SQLite on your system, you can install `boat` with the `bundled-sqlite` feature.\nThis will increase the compilation time but guarantees a working out-of-the-box exprience.\n\nWhen using cargo:\n```sh\ncargo install boat-cli --features bundled-sqlite\n```\nWhen building from source:\n```sh\ngit clone https://github.com/coko7/boat-cli.git\ncd boat-cli\ncargo build --release --features bundled-sqlite\n```\n\n## ⚙️ Configuration\n\nBy default, `boat` will create a configuration file in one of the following dirs:\n- 🐧 **Linux:** `/home/\u003cuser\u003e/.config/boat/config.toml`\n- 🪟 **Windows:** `C:\\Users\\\u003cuser\u003e\\AppData\\Roaming\\boat\\config.toml`\n- 🍎 **macOS:** `/Users/\u003cuser\u003e/Library/Application Support/boat/config.toml`\n\nIt will also store the SQLite database file `boat.db` in the same directory (unless specified otherwise in config):\n```toml\ndatabase_path = \"/home/\u003cuser\u003e/.config/boat/boat.db\"\n```\nYou can override the default configuration file path by setting the `BOAT_CONFIG` environment variable.\n\n## ✨ Usage\n\nIf you have ever used [`bartib`](https://github.com/nikolassv/bartib), then `boat` is going to feel very familiar.\nTry `boat help` for a quick list of commands:\n```help\nboat 0.6.0\n\nBasic Opinionated Activity Tracker\n\nUsage:\nboat [OPTIONS] \u003cCOMMAND\u003e\n\nCommands:\n  new     Create a new activity\n  start   Start/resume an activity\n  cancel  Cancel the current activity\n  pause   Pause/stop the current activity\n  modify  Modify an activity\n  delete  Delete an activity\n  get     Get the current activity\n  list    List activities\n  help    Print this message or the help of the given subcommand(s)\n\nOptions:\n  -v, --verbose...  Increase logging verbosity\n  -q, --quiet...    Decrease logging verbosity\n  -h, --help        Print help\n  -V, --version     Print version\n```\n\n\u003e [!TIP]\n\u003e `boat` comes bundled with many command aliases:\n\u003e - new: `n`, `new`, `create`\n\u003e - start: `s`, `st`, `start`, `sail`, `continue`, `resume`\n\u003e - cancel: `c`, `can`, `cancel`\n\u003e - pause: `p`, `pause`, `stop`\n\u003e - modify: `m`, `mod`, `modify`\n\u003e - delete: `d`, `del`, `delete`, `rm`, `rem`, `remove`\n\u003e - get: `g`, `get`\n\u003e - list: `l`, `ls`, `list`\n\u003e - help: `h`, `help`, `-h`, `--help`\n\u003e\n\u003e Prefer using the full length command names in scripts as they are more explicit and unlikely to be changed (unlike shorter aliases).\n\nI really wanted to have each command start with a different character so that I could assign a single-char alias to all of them.\nThat explains why some of the commands do not use a more fitting keyword.\n\nLike `stop` would have been a better command than `pause` but since it shares the same starting charcter as the `start` command, I could not use it.\nMaybe I will drop this in the future, let's see.\n\n*I have included some fallback in case you type `stop`/`remove` instead of `pause`/`delete` 👀*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoko7%2Fboat-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoko7%2Fboat-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoko7%2Fboat-cli/lists"}