# Jobber
_Jobber_ is a minimalistic work time management program for the command line.
## Quick Tour
### Initialize New Database
Initialize the database into the application directory (e.g. `~/.config/jobber/jobber.json`):
```plain
▶ jobber init
```
### Initialize the Standard Templates
Install the standard invoice templates into the application directory (e.g. `~/.config/jobber/default/invoice.typ`):
```plain
▶ jobber init templates
```
### Create Company
Create (your) _company_.
```plain
▶ jobber create company
```
### Create Workers
Create one or more _workers_:
```plain
▶ jobber create worker
```
### Create Clients
Create one or more _clients_ with the `create` command and add some information like address, VAT and a payment rate:
```plain
▶ jobber create client
```
### Jobs
Create a _job_:
```plain
▶ jobber create job
```
### Track Your Work
Then track your _work_ with simple shell commands like:
```plain
▶ jobber start
```
or
```plain
▶ jobber end
```
Or be more precise and add a time:
```plain
▶ jobber start 12:15
```
### List Work
```plain
▶ jobber list work
Job ID: ▶ 0
Worker: My Self (me)
Client: Late Capitalism Ltd. (lc)
Subject: work to do
Rate: $80.00 / hour
Interval: 15 min
Billing: -
Work: 60:00 hrs
Revenue: $4,800.00
╭─────┬──────────────────────┬───────┬───────────┬──────────────────────────────┬───────────╮
│ Pos │ Start │ End │ Duration │ Subject │ Tags │
├─────┼──────────────────────┼───────┼───────────┼──────────────────────────────┼───────────┤
│ 0 │ 2025 Wed Jun 4 21:30 │ 21:45 │ 15 min │ last year │ - │
│ 1 │ 2026 Mon May 4 21:30 │ 21:45 │ 15 min │ last month │ - │
│ 2 │ Thu Jun 4 14:00 │ 16:00 │ 2:00 hrs │ meeting in room #1 │ meeting │
│ │ │ │ │ second line │ │
│ 3 │ 16:15 │ 19:45 │ 3:30 hrs │ whole day │ - │
│ 4 │ 18:00 │ 18:15 │ 15 min │ work in the middle │ - │
│ 5 │ 21:30 │ 21:45 │ 15 min │ work in the middle but │ - │
│ │ │ │ │ with a very long subject │ │
│ │ │ │ │ which shall be wrapped │ │
│ │ │ │ │ automatically when displayed │ │
│ 6 │ 22:00 │ 23:30 │ 1:30 hrs │ work in the evening │ - │
│ 7 │ Fri Jun 5 10:00 │ 19:30 │ 9:30 hrs │ too long │ - │
│ 8 │ Sat Jun 6 02:00 │ 02:00 │ 24:00 hrs │ way too long │ - │
│ 9 │ Sun Jun 7 06:00 │ 07:00 │ 1:00 hrs │ one hour │ meeting │
│ 10 │ 09:45 │ 19:30 │ 9:45 hrs │ long work │ - │
│ 11 │ Tue Jun 9 01:00 │ 09:00 │ 8:00 hrs │ eight hours │ - │
╰─────┴──────────────────────┴───────┴───────────┴──────────────────────────────┴───────────╯
Use jobber show work to view a work unit.
Use jobber start to start work.
```
### Calendar View
```plain
▶ jobber calendar
06/2026
╭────────────────────────────────────────────────────────────────╮
│ Day Sun Mon Tue Wed Thu Fri Sat Week │
│ - - - 7.5 9.5 22 39 │
│ 7 12.75 - 8 - - - - 20.75 │
│ 14 - - - - - - - - │
│ 21 - - - - - - - - │
│ 28 - - - - │
│ Jun 2026: 59.75 hrs │
╰────────────────────────────────────────────────────────────────╯
Job: 0
```
### Create an Invoice
```plain
▶ jobber create invoice
```
On the first page it shows the list of jobs and on the following daily time sheets listing the working hours more exactly.
### Generate PDF Invoices using _typst_ template
```plain
▶ jobber export invoice 0
```
The output can look like this (using the template `:marx_and_friends`):

### ANSI Color Support
Jobber supports [ANSI Codes](https://en.wikipedia.org/wiki/ANSI_escape_code)
which colorize the output in the terminal for better readability.
Use `jobber --no-ansi` to turn them off.
## Documentation
- [Complete Command-Line Help](commands.md)