# TrackStr

TrackStr is a privacy-preserving time-tracking tool for organisations who pay remote staff on an hourly basis.


## Architecture

```mermaid
architecture-beta
    group user(internet)[End User]
    service browser(internet)[Browser] in user
    
    group home(logos:aws-s3)[Under the Desk]

    service dvm(logos:aws-ec2)[DVM] in home
    service k(logos:aws-ec2)[Kimai] in home
    service db(database)[Database] in home

    dvm:T -- B:db
    dvm:T -- B:k
    dvm:T -- B:relay
    dvm:T -- B:blossom

    group cloud(cloud)[Cloud VPS]
    service relay(disk)[Relay] in cloud
    service blossom(server)[Blossom] in cloud


    browser:L -- R:relay
    browser:L -- R:blossom


```

## Basic Flow

```mermaid
sequenceDiagram
    autoNumber

    actor u as User
    participant e as Electron App
    participant b as Blossom
    participant r as relay
    participant d as dvm

    u->>e: Choose project <br> & Start timer
    Note over u: Do work & <br> prepare PoW
    u->>e: Register PoW
    e->>b: Load encrypted<br> PoW to Blossom
    e->>r: Notify DVM
    Note over u: Snooze
    d<<->>r: Fetch notification
    Note over d: fetch & decrypt<br> data, add <br> to DB
    Note over d: stop timer after<br> interval



    
    
```