I'm Overdue owl

I'm Overdue

Your work. Your time. A clearer week.

CI checks on main License: MIT Node.js 24 or newer

Public container on GHCR Docker: AMD64 and ARM64 English and Deutsch Buy Me a Coffee

English Β· Deutsch

Quick links
πŸš€ Get started Β· πŸ‘€ Take a look Β· ✨ Features Β· πŸ“… How it works Β· πŸ”§ Run & maintain Β· πŸ“š Documentation Β· β˜• Support

A busy week can be hard to piece together. I'm Overdue gives your work a clearer home: a personal time account on your own machine or server, with your activities, recorded hours and balance in one place. Compare activity from your calendar, Slack and GitHub exports with the working time you record yourself. Import normalized JSON/CSV files from your own exporters; the app does not connect to those services’ APIs. No cloud service, service credentials or automatic tracking. ## Screenshots ![The week calendar with imported evidence beside recorded working time](docs/images/week-en.png) *The real app with synthetic example data. Imported activities help you remember; you record working time yourself.* ## Features - **πŸ“… See your week clearly.** Week and month calendars, precise time entry and reusable templates. - **βš–οΈ Keep your balance.** An opening balance, editable payouts and corrections, with confirmed, open and future amounts kept separate. - **🌿 Plan absences.** Combine vacation, time off in lieu and sickness; dated German state holiday rules and individual exceptions respect your working-time target. - **πŸ”Œ Bring your evidence.** Named data sources with JSON/CSV assignment, previews and import history. - **πŸ“„ Take your records with you.** Printable timesheets with an optional account section, separate account CSV and SQLite backups. - **Choose your language.** English by default, with **English / Deutsch** on the login page and in settings. - **Host it yourself.** One Docker container for the UI, API and SQLite; AMD64 and ARM64 supported. ## Start with Docker The public image `ghcr.io/ill-yes/im-overdue:latest` includes the app and its database engine. Docker selects the matching AMD64 or ARM64 image. **You will need:** Docker Engine or Docker Desktop with Compose v2, and `curl`. For remote access, prepare an HTTPS reverse proxy; see the [Docker and Unraid guide](docs/docker.md). ### 1. Download the configuration Create a new installation folder and download its two configuration files: ```sh mkdir im-overdue && cd im-overdue && curl -fsSL https://raw.githubusercontent.com/ill-yes/im-overdue/main/compose.yaml -o compose.yaml && curl -fsSL https://raw.githubusercontent.com/ill-yes/im-overdue/main/.env.example -o .env && chmod 600 .env ``` ### 2. Set your address and password Edit `.env` and fill in both required values: - **`IM_OVERDUE_ORIGIN`:** Your exact browser address, e.g. `http://192.168.1.20:4317` or `https://time.example.net`, without a path or trailing slash. - **`IM_OVERDUE_PASSWORD`:** A unique password of 12–256 characters; put it in single quotes to preserve `$` and `#` literally. ### 3. Start and sign in Run these commands in the installation folder: ```sh docker compose pull docker compose up -d --no-build ``` Open the configured address and sign in. Data is stored in `./appdata`, separate from local development data. Use HTTPS through your reverse proxy for remote access; HTTP sends your password and data without encryption. [Choose an image version](docs/docker.md#image-versions) Β· [Set up Unraid](docs/docker.md#unraid) Β· [Update an installation](docs/docker.md#change-the-password-or-update) Β· [Back up and restore](docs/docker.md#backup-and-offline-restore) ## Start locally Requires Node.js 24 or newer and npm: ```sh npm ci npm run dev ``` Open `http://127.0.0.1:4317`. The default local mode listens only on loopback and does not require a password. For a production build, run `npm run build` followed by `npm start`. See [development](docs/development.md) for configuration and tests. ## First steps 1. Check your time zone, weekly target and working days in settings. If applicable, add your German state under **Public holidays** and review local exceptions. 2. Set an opening date and balance under **Time account β†’ Hours account** if you want a running account. Zero is a valid starting balance. 3. Record your first work block and any **Absences** in the calendar. You can start without importing anything. 4. Review and close completed weeks, then export a timesheet when needed. **Optional: bring your evidence.** Create named data sources, analyze an activity file, assign its source types and review the preview before saving. Activities help you remember; they never create working time automatically. Follow the [working-day guide](docs/usage.md#record-a-working-day) for the detailed steps, including quick entry, breaks and precise times. ## Documentation Start with what you want to do: - **πŸš€ Install and self-host:** [Docker and Unraid](docs/docker.md). - **πŸ”§ Keep it running:** [everyday commands](docs/docker.md#everyday-commands), [updates](docs/docker.md#change-the-password-or-update) and [backups](docs/docker.md#backup-and-offline-restore). - **πŸ“… Record and review your time:** [Using I'm Overdue](docs/usage.md). - **βš–οΈ Manage your account and absences:** [Hours account](docs/usage.md#hours-account), [absences](docs/usage.md#absences) and [public holidays](docs/usage.md#public-holidays). - **πŸ”Œ Prepare activity imports:** [JSON/CSV format and exporter guide](docs/import-format.md). - **πŸ› οΈ Develop and contribute:** [Development](docs/development.md). The [documentation home](docs/README.md) brings these paths together, with quick links to help you find a solution when you need one. ## License I'm Overdue is licensed under the [MIT License](LICENSE), including its source code, templates and metadata. See [NOTICE](NOTICE) for third-party license information and [contributing](CONTRIBUTING.md) for contribution terms. ## Support I'm Overdue Found a bug, have an idea, or want to help improve the app? Head to [GitHub Issues](https://github.com/ill-yes/im-overdue/issues), or read the [contribution guide](CONTRIBUTING.md). Please report security issues privately as described in the [security policy](SECURITY.md). If I'm Overdue makes your week a little easier, you can buy me a coffee. Support is entirely optional. Thank you for spending some of your time here. [![Buy Me a Coffee](https://img.shields.io/badge/Buy_Me_a_Coffee-support-FFDD00?logo=buymeacoffee&logoColor=000)](https://buymeacoffee.com/ill_yes)