Skip to content

About

Self-hosted, local-first time tracking app. Open-source Clockify alternative with client & project management, dashboards, and monthly Excel work report (timesheet) export. React + Node.js + SQLite, no external services.

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

Β 

History

31 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ClockItNow β€” Self-Hosted Time Tracking & Timesheet App

A local-first, open-source alternative to Clockify: track time, manage clients and projects, and export monthly work reports (timesheets) as Excel β€” all data stays on your machine.

CI License: AGPL-3.0 Node TypeScript React

ClockItNow is a self-hosted time tracker built for freelancers and small teams who bill by the hour but don't want their data in someone else's cloud. It runs as a single Node.js app with a built-in SQLite database β€” no Docker, no external services, no telemetry. It can also run as a native Windows desktop app (Electron) with a system tray icon, idle detection and timer reminders.

Features

  • ⏱ Timer β€” Start/stop time entries with project and task assignment
  • πŸ“Š Dashboard β€” KPIs, daily bar chart, project/client breakdown, monthly goal
  • πŸ‘₯ Clients & Projects β€” Full master data management with hourly rates and per-client rounding rules
  • πŸ“‹ Reports β€” Filter by client, project, date range and billability; export as CSV
  • πŸ“„ Arbeitsrapport β€” Generate a monthly work report as .xlsx directly from time entries, grouped by project and day, with embedded signature image
  • βš™οΈ Settings β€” Sender name/address/signature, UI language, and desktop reminder/backup behavior, all stored server-side and shared across every open window
  • πŸ–₯️ Desktop app β€” Optional Electron shell: tray icon shows the running timer, idle detection prompts when you've been away, notifications for long-running timers and "nothing tracked" reminders during work hours
  • πŸ’Ύ Automatic backups β€” Rotating SQLite backups (default: every 6 hours, kept for 14 runs) to OneDrive or a folder you choose
  • πŸ” Auth β€” Password login or magic link (email, optional)

Tech Stack

Layer Technology
Frontend React 18 Β· TypeScript Β· Vite Β· Tailwind CSS Β· Recharts
Backend Node.js Β· Express Β· node:sqlite (built-in, no native addons)
Desktop Electron
Export ExcelJS

Getting Started

Prerequisites

  • Node.js v24+ (uses the built-in node:sqlite module)
  • npm

Setup

# 1. Clone the repo
git clone https://github.com/Steph-Wb/ClockItNow.git
cd ClockItNow

# 2. Install dependencies
npm install

# 3. Start the app β€” that's it, no configuration required
npm run dev

The app runs on http://localhost:5173 (frontend, dev mode with hot reload) and http://localhost:3001 (API). On first launch, register an account β€” the first registered user owns the database.

Running Modes

Command What it does
npm run dev Development: Vite dev server (hot reload) + API, two ports
npm run build && npm start Production: single Node process on http://localhost:3001, serves the built frontend and the API from one port
npm run electron Desktop app: builds, then launches the Electron shell (window + system tray) around the production server

Configuration (optional)

The app runs with zero configuration: a JWT secret is generated automatically on first start and stored in the data directory (see below). Everything in .env.example is optional β€” copy it to .env only if you want to override a default:

  • Magic-link login β€” set SMTP_HOST and the other SMTP_* variables to enable email login (hidden otherwise; password login always works)
  • Data/backup locations, port β€” CLOCKITNOW_DATA_DIR, CLOCKITNOW_BACKUP_DIR, CLOCKITNOW_PORT; the backup folder and most desktop-app behavior (work hours, reminder thresholds, backup retention) can also be changed at runtime under Settings β†’ Desktop & Erinnerungen, no restart needed for most fields

Arbeitsrapport (Work Report Export)

Monthly work reports can be generated as .xlsx files in two ways:

In the app: Reports page β†’ Arbeitsrapport (.xlsx) button β†’ choose client and month.

Via CLI:

npx tsx scripts/arbeitsrapport.ts --month 2026-01 --client "Client Name" \
    [--projekt "Project description"] [--out /path/to/output/]

Set up sender name, address and signature image once under Settings β€” they are embedded automatically in every report.

Project Structure

β”œβ”€β”€ server/
β”‚   β”œβ”€β”€ database.ts          # SQLite schema + migrations
β”‚   β”œβ”€β”€ lib/
β”‚   β”‚   β”œβ”€β”€ appPaths.ts             # Data directory resolution (%APPDATA%\ClockItNow)
β”‚   β”‚   β”œβ”€β”€ backup.ts               # Automatic rotating backups
β”‚   β”‚   β”œβ”€β”€ secret.ts               # JWT secret auto-generation
β”‚   β”‚   β”œβ”€β”€ localToken.ts           # Local API token for the Electron tray
β”‚   β”‚   └── buildArbeitsrapport.ts  # Shared xlsx builder
β”‚   └── routes/               # Express route handlers
β”œβ”€β”€ electron/
β”‚   β”œβ”€β”€ main.ts               # Electron main process: window, tray, idle detection
β”‚   └── trayIcon.ts           # Runtime-rendered app/tray icons (no binary assets)
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/           # React components
β”‚   β”œβ”€β”€ pages/                # Page-level components
β”‚   β”œβ”€β”€ api/                  # API client
β”‚   └── types/                # Shared TypeScript types
β”œβ”€β”€ scripts/
β”‚   └── arbeitsrapport.ts     # CLI for report generation
└── .env.example

Data & Privacy

All data lives in a local SQLite database in %APPDATA%\ClockItNow\ (Windows) β€” never in the project folder, never committed to git. Automatic rotating backups run every 6 hours to OneDrive (auto-detected) or a folder you configure under Settings. No analytics, no telemetry, no external services required.

Contributing

Contributions are welcome! Please read CONTRIBUTING.md for how to set up a development environment, run the checks and submit a pull request. By participating you agree to the Code of Conduct.

License

GNU Affero General Public License v3.0 β€” see LICENSE for details.

Free to use, self-host and modify. If you offer this software as a network service, the AGPL requires you to make your source code available under the same terms.

About

Self-hosted, local-first time tracking app. Open-source Clockify alternative with client & project management, dashboards, and monthly Excel work report (timesheet) export. React + Node.js + SQLite, no external services.

Topics

Resources

Code of conduct

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages