• Stars
    star
    137
  • Rank 266,121 (Top 6 %)
  • Language
    Go
  • License
    GNU General Publi...
  • Created about 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Zeit, erfassen. A command line tool for tracking time spent on activities.

Zeit

zeit

Zeit, erfassen. A command line tool for tracking time spent on tasks & projects.

Get some more info on why I build this here.

Download the latest version for macOS, Linux, FreeBSD, NetBSD, OpenBSD & Plan9 here.

Build

make

Info: This will build using the version 0.0.0. You can prefix the make command with VERSION=x.y.z and set x, y and z accordingly if you want the version in zeit --help to be a different one.

Usage

zeit

Please make sure to export ZEIT_DB=~/.config/zeit.db (or whatever location you would like to have the zeit database at).

zeit's data structure contains of the following key entities: project, task and entry. An entry consists of a project and a task. These don't have to pre-exist and can be created on-the-fly inside a new entry using e.g. zeit track --project "New Project" --task "New Task". In order to configure them, the zeit project and the zeit task commands can be utilised.

Projects

A project can be configured using zeit project:

zeit project --help

Examples:

Set the project color to a hex color code, allowing zeit stats to display information in that color (if your terminal supports colours):

zeit project --color '#d3d3d3' "cool project"

Task

A task can be configured using zeit task:

zeit task --help

Examples:

Setting up a Git repository to have commit messages automatically imported into the activity notes when an activity is finished:

zeit task --git ~/my/git/repository "development"

Info: You will have to have the git binary available in your PATH for this to work. zeit automatically limits the commit log to the exact time of the activity's beginning- and finish-time. Commit messages before or after these times won't be imported.

Track activity

zeit track --help

Examples:

Begin tracking a new activity and reset the start time to 15 minutes ago:

zeit track --project project --task task --begin -0:15

Show current activity

zeit tracking

Finish tracking activity

zeit finish --help

Examples:

Finish tracking the currently tracked activity without adding any further info:

zeit finish

Finish tracking the currently tracked activity and change its task:

zeit finish --task other-task

Finish tracking the currently tracked activity and adjust its start time to 4 PM:

zeit finish --begin 16:00

List tracked activity

zeit list --help

Examples:

List all tracked activities:

zeit list

List all tracked activities since a specific date/time:

zeit list --since "2020-10-14T00:00:01+01:00"

List all tracked activities and add the total hours:

zeit list --total

List only projects and tasks (relational):

zeit list --only-projects-and-tasks

List only projects and tasks (relational) that were tracked since a specific date/time:

zeit list --only-projects-and-tasks --since "2020-10-14T00:00:01+01:00"

Display/update activity

zeit entry --help

Examples:

Display a tracked activity:

zeit entry 14037730-5c2d-44ff-b70e-81f1dcd4eb5f

Update a tracked activity:

zeit entry --finish "2020-09-02T18:16:00+01:00" 14037730-5c2d-44ff-b70e-81f1dcd4eb5f

Erase tracked activity

zeit erase --help

Examples:

Erase a tracked activity by its internal ID:

zeit erase 14037730-5c2d-44ff-b70e-81f1dcd4eb5f

Statistics

zeit stats

zeit stats

Import tracked activities

zeit import --help

The following formats are supported as of right now:

tyme: Tyme 3 JSON

It is possible to import JSON exports from Tyme 3. It is important that the JSON is exported with the following options set/unset:

Tyme 3 JSON export

  • Start/End can be set as required
  • Format has to be JSON
  • Export only unbilled entries can be set as required
  • Mark exported entries as billed can be set as required
  • Include non-billable tasks can be set as required
  • Filter Projects & Tasks can be set as required
  • Combine times by day & task must be unchecked

During import, zeit will create SHA1 sums for every Tyme 3 entry, which allows it to identify every imported activity. This way zeit won't import the exact same entry twice. Keep this in mind if you change entries in Tyme and then import them again into zeit.

Examples:

Import a Tyme 3 JSON export:

zeit import --format tyme ./tyme.export.json

Export tracked activities

zeit export --help

The following formats are supported as of right now:

zeit: zeit JSON

The zeit internal JSON format. Basically a dump of the database including only tracked activities.

tyme: Tyme 3 JSON

It is possible to export JSON compatible to the Tyme 3 JSON format. Fields that are not available in zeit will be filled with dummy values, e.g. Billing: "UNBILLED".

Examples:

Export a Tyme 3 JSON:

zeit export --format tyme --project "my project" --since "2020-04-01T15:04:05+07:00" --until "2020-04-04T15:04:05+07:00"

Integrations

Here are a few integrations and extensions built by myself as well as other people that make use of zeit:

More Repositories

1

superhighway84

USENET-inspired, uncensorable, decentralized internet discussion system running on IPFS & OrbitDB
Go
580
star
2

journalist

Journalist. An RSS aggregator.
Go
246
star
3

neonmodem

Neon Modem Overdrive
Go
212
star
4

reader

reader is for your command line what the “readability” view is for modern browsers: A lightweight tool offering better readability of web pages on the CLI.
Go
166
star
5

canard

Canard. A command line TUI client for the journalist RSS aggregator.
Go
126
star
6

gomphotherium

Gomphotherium (/ˌɡɒmfəˈθɪəriəm/; "welded beast"), a command line Mastodon client.
Go
85
star
7

mercator

OpenStreetMap but as terminal user interface (TUI) program
Go
63
star
8

kiwi

Pimoroni Keybow based, WiFi-enabled Macro Pad (a.k.a. poor-man's Elgato Stream Deck)
Elixir
54
star
9

planor

The Cloud Aviator: TUI client for cloud services (AWS, Vultr, Heroku, Render.com, Fleek, ...)
Go
49
star
10

dotfiles

dotfiles
Vim Script
48
star
11

lemon

Lemon – LED Monitor – is a $79.43 opensource alternative to LaMetric that supports GitHub-, IFTTT- and Zapier-webhooks and even integrates with Pushover!
Python
47
star
12

snoo

A Reddit command line client written in Node.js, using modern ES-features
JavaScript
41
star
13

ninjaberry

Ninjaberry: Raspberry Pi UI for @Bettercap
Python
39
star
14

palm-webos-development-tmbundle

Palm webOS (formerly Palm Pre) Development Bundle for TextMate
33
star
15

geld

Geld. A command line tool for tracking money and budgets.
Go
32
star
16

xbsapi

Alternative xBrowserSync API that is a single binary and supports SQLite3, PostgreSQL and MySQL
Go
27
star
17

addrb

addrb: A lightweight CLI / TUI address book that supports CardDAV
Go
26
star
18

conclusive

Conclusive. A command line client for Plausible Analytics.
Rust
24
star
19

node-socket-laravel-session

This is an example of how to check a Laravel request for a valid session within Node.js/Socket.io
JavaScript
22
star
20

wth

What The Heck: The better personal information dashboard for your terminal
Go
22
star
21

caldr

A lightweight CLI / TUI calendar that supports CalDAV
Go
20
star
22

lbaction-npm

NPM (LauchBar 6 Action)
JavaScript
17
star
23

cexec

Execute any command, cache its output and get cached output on subsequent execution
Go
14
star
24

synology-btsync-fix

Synology BitTorrent Sync (btsync) Fix
Shell
12
star
25

torqer

Ready-to-use Tor proxy Docker container, with privoxy on top.
Shell
10
star
26

cloudcash

Check your cloud spending from the CLI, from Waybar, and from the macOS menu bar!
Go
9
star
27

hue2influx

Sync Philips Hue component states to InfluxDB.
Python
9
star
28

bookmarkdown

A super lightweight tool for accessing links from a markdown file
Go
6
star
29

melon

Melon – Multimedia- & Entertainment Linking and Operation Node – is a daemon that allows linking media devices (e.g. Sonos, Televisions) and operating them through one API
Python
5
star
30

lbaction-stockprice

Stock Price (LaunchBar 6 Action)
JavaScript
5
star
31

pushover-to-xmpp

Tiny Pushover to XMPP bridge written in Go
Go
5
star
32

paperknife.js

paperknife.js is a RFC 2822 compliant e-mail address parser/validator developed with PEG.js.
PEG.js
5
star
33

go-poolsuite

Poolsuite FM player as Go module
Go
5
star
34

uveira

Offline Wikipedia CLI for dumpster-dive MongoDB imports
Go
4
star
35

mrusme

@mrusme
4
star
36

tdrs

Weltraum TDRS is a lightweight ZeroMQ-based event hub.
C++
4
star
37

lbaction-ssh

SSH (LaunchBar Action)
JavaScript
4
star
38

fpmail

Fetch- & Procmail Docker Container
Dockerfile
4
star
39

marine_diesel

Elixir client library for the Docker API.
Elixir
4
star
40

primacorn

Test your crappy [Primacom](https://www.primacom.de) cable internet connection for packet losses and automatically report them to Primacom.
Ruby
4
star
41

RIOT-drivers

This repository contains of implementations of various sensor/device drivers for @RIOT-OS
C
3
star
42

tdrs-node

TDRS Node.js client reference implementation
JavaScript
3
star
43

symmetry454

A Go implementation of the Symmetry454 calendar.
Go
3
star
44

cmdr

A minimalistic single-binary tool that can be used as Docker ENTRYPOINT to run multiple commands simultaneously
Rust
3
star
45

deb-builder

Idiomatic Debian Package Builder
Dockerfile
2
star
46

distccd

distcc (daemon) docker container
Dockerfile
2
star
47

mrusme.github.io

About @mrusme
2
star
48

xbscli

Command line interface for xbsapi and the official xBrowserSync API
Go
2
star
49

aieq

Adafruit/Arduino Indoor Environmental Quality
C++
2
star
50

go-fleek

Tiny Go client library for the Fleek API
Go
2
star
51

go-render

Tiny Go client library for the Render.com API
Go
2
star
52

pieq

(Raspberry) Pie Indoor Environmental Quality
Python
2
star
53

image2kiwi

Converter from Images (JPEG, PNG, GIF, ...) into Kiwi `frames` JSON-arrays.
Python
2
star
54

overpush

A self-hosted, drop-in replacement for Pushover, that uses XMPP as delivery method and offers the same API for submitting messages, so that existing setups (e.g. Grafana) can continue working and only require changing the API URL.
Go
2
star