Find a file
2024-04-09 18:29:26 +03:00
.docker chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
.husky chore: setup project config, add dependencies 2023-02-14 10:08:10 +01:00
app fix: change app shell layout to non fixed 2024-04-09 18:29:26 +03:00
prisma chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
public chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
.dockerignore chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
.editorConfig chore: setup project configs 2023-02-14 10:07:37 +01:00
.env.example chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
.eslintrc.js Initial commit 2023-02-11 03:14:14 +01:00
.gitignore chore: update gitignore 2023-06-23 12:28:07 +02:00
.npmrc chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
.yarnrc.yml chore: migrate to yarn@3, update remix 2023-04-05 19:50:37 +02:00
CHANGELOG.md chore: setup project configs 2023-02-14 10:07:37 +01:00
commitlint.config.js chore: setup project configs 2023-02-14 10:07:37 +01:00
Dockerfile chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
LICENSE Initial commit 2023-02-11 03:14:14 +01:00
package-lock.json chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
package.json chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
README.md docs: update readme 2023-06-22 15:13:30 +02:00
remix.config.js Initial commit 2023-02-11 03:14:14 +01:00
remix.env.d.ts feat: add db models, setup prisma + utils 2023-02-14 10:10:10 +01:00
start.sh chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00
tsconfig.json Initial commit 2023-02-11 03:14:14 +01:00
yarn.lock chore!: migrate to docker environment 2023-06-22 13:11:03 +02:00

WorkTimer

WorkTimer

Time tracking app built with Remix, supports authentication, projects management, and monthly or custom reports.

Built for self-hosting: host it anywhere you want, and use it for free. Your time, your data.

View on DockerHub.

Table of contents

Features

  • Time entries management
  • Authentication
  • Multi-user support, with admin role
  • Projects management
  • Monthly or custom reports
  • Import/Export to CSV

Screenshots

Pre-built Docker Image

docker pull nzambello/work-timer

If you want to use the pre-built Docker image, you can run it with:

docker run -d -p 8080:8080 -v /path/to/data:/data/data.db nzambello/work-timer

If you want to use different defaults, you can build your own image. See Running with docker

Docker compose

Basic example:

version: '3.8'

services:
  work-timer:
    image: nzambello/work-timer
    container_name: work-timer
    restart: always
    ports:
      - 8080:8080
    volumes:
      - ./dockerData/work-timer:/data # Path to data for DB persistence

Example of docker-compose.yml with Traefik as reverse proxy:

work-timer:
  depends_on:
    - watchtower
  image: nzambello/work-timer
  container_name: work-timer
  restart: always
  volumes:
    - /dockerData/work-timer:/data # Path to data for DB persistence
  labels:
    - 'com.centurylinklabs.watchtower.enable=true'
    - 'traefik.enable=true'
    - 'traefik.http.routers.work-timer.rule=Host(`timer.YOURDOMAIN.com`)'
    - 'traefik.http.routers.work-timer.entrypoints=websecure'
    - 'traefik.http.routers.work-timer.tls.certresolver=letsencrypt'
    - 'traefik.http.routers.work-timer.service=work-timer-service'
    - 'traefik.http.services.work-timer-service.loadbalancer.server.port=8080'

Custom deployment or development

Tech Stack

Running Locally

# Clone the repo
git clone https://github.com/nzambello/work-timer.git
cd work-timer

# Install dependencies
yarn install

# Setup .env
cp .env.example .env
vim .env

# Start the app
yarn dev

Running with Docker

# Clone the repo
git clone https://github.com/nzambello/work-timer.git
cd work-timer

# Setup .env
cp .env.example .env
vim .env

# Build the image
docker built -t work-timer .

# Start the app
docker run -p 127.0.0.1:8080:8080 work-timer

Multi-platform Docker image

docker buildx create --name mybuilder --driver docker-container --bootstrap --use # create a new builder and switch to it using a single command.
docker buildx build --platform linux/amd64,linux/arm64 -t nzambello/work-timer:latest --push .

Screenshots

Light / Dark mode

Time tracking

Projects

Reports

License

Nicola Zambello © 2023

GNU GPLv3