# Jobber

_Jobber_ is a minimalistic work time management program for the command line.

## Quick Tour

### Initialize New Database

Create one or more _clients_:

```plain
▶ jobber init
```

### Create Company

Create (your) company.

```plain
▶ jobber create company "Marx & Friends" \
      "Engelsplatz 42" 12345 Berlin \
      billing@marx_engels.org +987654321 DE12345 \
      "Marx' Bank" DE123456890123456890 JOBBER1UXXX \
      "Registered Company"
```

### Create Workers

Create one or more _workers_:

```plain
▶ jobber create worker engl "Friedrich Engels"
```

### 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 lc "Late Capitalism Ltd." \
      "42 Wall St" 12345 "New York, NY" USA DE123456 80usd/hour
```

### Jobs

Create a _job_:

```plain
▶ jobber create job dd comp "work to do"
```

### 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

Database has been updated.
Successfully created invoice 0 of job 0.

Use jobber show invoice 0 to take a look.
```

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 (depending on the template):

![Invoice](images/invoice.png)

### 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)
