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