A simple offline first web app to track time spent on projects of different customers
The idea of this application is to support individuals with tracking the time they worked. It is supposed to be deployed on a self owned on premise server with no access from the public internet. This is a deliberate decision for keeping the application minimal and simple, e.g. by not supporting multiple users or complex authentication. If this is needed a reverse proxy in front of the app should take care of auth.
The design of the App is intended to be offline first. All data is stored within an on device database powered by pouchdb. This local db is synced with a remote CouchDB instance. If the remote db isn't reachable e.g. because the user is outside of the trusted network the local first paradigm will make sure all information is stored and can be synced back to the db once it's reachable again.
- Full offline support thanks to pouchdb
- Support for different operating systems thanks to it being a PWA
- Simple logging of working time with the option of assigning a customer & project to the log
- Reporting for individual projects for easy accounting
- Calendar sync via the exposed
/api/icsendpoint
The recommended way of installation is by using docker. E.g. this is an example docker compose config for running both the PowerLog image together with a CouchDB:
services:
powerlog:
image: ghcr.io/mashupmark/powerlog:latest
container_name: powerlog
ports:
- 3000:3000
environment:
- NUXT_COUCH_DB_URL=http://couchDB:5984/
- NUXT_COUCH_DB_USER=admin
- NUXT_COUCH_DB_PASSWORD=admin
couchDB:
image: couchdb:3.5.1
container_name: powerlog-db
ports:
# - 5984:5984 # Optionally expose the CouchDB interface to the host as well
volumes:
- powerlog-data:/opt/couchdb/data
configs:
- source: db_config
target: /opt/couchdb/etc/local.ini
configs:
# Config for the CouchDB to start up automatically without manual setup
db_config:
content: |
[couchdb]
single_node = true
[admins]
admin = admin
volumes:
powerlog-data: