Skip to content

Anahem/trkr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

trkr

A self-hosted hobby tracker that runs locally on your PC. Log sessions, set weekly or monthly goals, track streaks, and visualise activity over time with a GitHub-style heatmap. No cloud, no account, no data leaving your machine.

Features

  • Hobbies - Add, edit, and delete hobbies with a name, category, description, status, and colour tag
  • Session logging - Record sessions with a date, duration (hours and minutes), and optional notes. Edit or delete any entry.
  • Quick-log - One-click button on every hobby card to jump straight to the session form
  • Live timer - Start a timer against any hobby. When you stop it, the elapsed time is pre-filled into a new session log.
  • Stats per hobby - Total time all-time, total time this month, last logged date, and current day streak
  • Goals - Set a weekly or monthly hour target per hobby. A progress bar on each card shows how close you are for the current period.
  • Dashboard - All hobbies at a glance with a weekly summary (total hours, most active hobby) and a nudge for any active hobby not logged in 7 or more days
  • Activity heatmap - GitHub-style contribution heatmap of the past 12 months, visible on each hobby's Stats tab
  • Notes - A freeform journal tab per hobby, separate from session logs. Add, edit, and delete entries.
  • Data export - Download everything (hobbies, sessions, goals, notes) as a single JSON file

Requirements

  • Node.js v22 or newer (uses the built-in SQLite module)
  • Windows, macOS, or Linux

Quick Start

1. Clone the repo

git clone https://github.com/Anahem/trkr.git
cd trkr

2. Install dependencies

npm install

3. Create your config file

cp .env.example .env

4. Start the server

  • Windows: double-click start.bat
  • Mac / Linux:
    node --experimental-sqlite server.js

5. Open your browser

Go to http://localhost:3002

The app is ready to use immediately. No login or setup required.

Configuration (.env)

Variable Required Description
PORT No Port to run on (default: 3002)

Pages

Route Description
/ Dashboard: all hobbies, weekly summary, neglected-hobby nudges
/hobbies/new Add a new hobby
/hobbies/:id Hobby detail with Sessions, Notes, and Stats tabs
/hobbies/:id/edit Edit hobby details and goal
/hobbies/:id/sessions/new Log a new session (also used as the timer landing page)
/hobbies/:id/sessions/:sid/edit Edit or delete a logged session
/export Download all data as a JSON file

Data

All data is stored locally:

Path Contents
data/tracker.db All hobbies, sessions, goals, and notes

To back up: copy data/tracker.db somewhere safe. To restore: stop the server, replace data/tracker.db, restart.

The export button in the nav (/export) also downloads a full JSON snapshot at any time.

Tech Stack

  • Runtime: Node.js 22+ with node:sqlite (no external DB driver)
  • Server: Express
  • Templates: EJS
  • Database: SQLite (via Node.js built-in)
  • Styling: Vanilla CSS (dark theme, Inter + JetBrains Mono)

About

Self-hosted hobby tracker - log sessions, set goals, track streaks, view activity heatmaps, and use a live timer. Built with Node.js + Express + EJS + SQLite.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors