From d4e2062243ea76975ae74615ef1206ed01b4f842 Mon Sep 17 00:00:00 2001 From: nzambello Date: Thu, 22 Jun 2023 13:33:33 +0200 Subject: [PATCH] docs: add readme --- README.md | 152 ++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 119 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 9659e78..515f5be 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,139 @@ -# Welcome to Remix! +# WorkTimer -- [Remix Docs](https://remix.run/docs) +WorkTimer -## Development +Time tracking app built with Remix, supports authentication, projects management, and monthly or custom reports. -From your terminal: +Built for self-hosting: host it anywhere you want, and use it for free. Your time, your data. -```sh -npm run dev +## Table of contents + +- [Features](#features) +- [Pre-built Docker image](#pre-built-docker-image) + - [Docker compose](#docker-compose) +- [Custom deployments or development](#custom-deployment-or-development) + - [Tech stack](#tech-stack) + - [Running locally](#running-locally) + - [Running with Docker](#running-with-docker) +- [Screenshots](#screenshots) +- [License](#license) + +## Features + +- Time entries management +- Authentication +- Multi-user support, with admin role +- Projects management +- Monthly or custom reports +- Import/Export to CSV + +[Screenshots](#screenshots) + +## Pre-built Docker Image + +```bash +docker pull nzambello/work-timer ``` -This starts your app in development mode, rebuilding assets on file changes. +If you want to use the pre-built Docker image, you can run it with: -## Deployment - -First, build your app for production: - -```sh -npm run build +```bash +docker run -d -p 8080:8080 -v /path/to/data:/data/data.db nzambello/work-timer ``` -Then run the app in production mode: +If you want to use different defaults, you can build your own image. See [Running with docker](#running-with-docker) -```sh -npm start +### Docker compose + +Example of docker-compose.yml with [Traefik](https://traefik.io/) as reverse proxy: + +```yaml +uptime-kuma: + 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' ``` -Now you'll need to pick a host to deploy it to. +## Custom deployment or development -### DIY +### Tech Stack -If you're familiar with deploying node applications, the built-in Remix app server is production-ready. +- [Remix](https://remix.run) +- [Prisma](https://prisma.io) +- [SQLite](https://sqlite.org) +- [Mantine](https://mantine.dev) +- [Docker](https://docker.com) -Make sure to deploy the output of `remix build` +### Running Locally -- `build/` -- `public/build/` +```bash +# Clone the repo +git clone https://github.com/nzambello/work-timer.git +cd work-timer -### Using a Template +# Install dependencies +yarn install -When you ran `npx create-remix@latest` there were a few choices for hosting. You can run that again to create a new project, then copy over your `app/` folder to the new project that's pre-configured for your target server. +# Setup .env +cp .env.example .env +vim .env -```sh -cd .. -# create a new project, and pick a pre-configured host -npx create-remix@latest -cd my-new-remix-app -# remove the new project's app (not the old one!) -rm -rf app -# copy your app over -cp -R ../my-old-remix-app/app app +# Start the app +yarn dev ``` + +### Running with Docker + +```bash +# 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 +``` + +## Screenshots + +### Light / Dark mode + + + + +### Time tracking + + + +### Projects + + + + +### Reports + + + +## License + +[Nicola Zambello](https://github.com/nzambello) © 2023 + +[GNU GPLv3](./LICENSE)