2026-02-17 18:45:16 +01:00
2026-02-13 11:24:43 +01:00
2026-02-13 01:31:27 +01:00
2026-02-17 23:21:14 +01:00

Learning Progress Tracker

A web-based goal and learning progress tracker with subtask management, due dates, drag-and-drop reordering, task archiving, and persistent server-side storage.

Features

  • Goal Management — Create, edit, and delete learning goals with titles, descriptions, sizes, due dates, and optional rewards.
  • Due Dates — Set deadlines on tasks and subtasks. Color-coded badges show time remaining: green (plenty of time), amber (7 days or less), red (overdue/today). Completed tasks show a strikethrough date.
  • Subtasks — Break goals into smaller subtasks. Drag any task onto another to nest it, or promote subtasks back to top-level goals via right-click.
  • Progress Tracking — Automatic weighted progress calculation (Small 10%, Medium 25%, Large 50%).
  • Archive — Completed tasks show an "Archive" button. Switch to the Archive view to restore, edit, or permanently delete archived tasks.
  • Drag & Drop — Reorder tasks and subtasks. Hold over a task to reveal its drop zone for nesting.
  • Context Menus — Right-click for edit, delete, promote, archive, or restore actions.
  • Double-Click to Edit — Double-click any task or subtask card to open the editor.
  • Expandable Descriptions — Toggle "Show full description" per task to expand beyond the default 2-line clamp.
  • Rewards — Hidden rewards revealed only upon completion.
  • Custom Background — Place a background.jpg or background.png in public/img/ to set a custom background image. The UI uses frosted glass (glassmorphism) over the image.
  • Persistent Storage — SQLite database with automatic schema migration.

Project Structure

├── public/
│   ├── img/              # Place background.jpg or background.png here
│   ├── index.html
│   ├── styles.css
│   └── app.js
├── server/
│   └── server.js
├── data/                 # SQLite database (auto-created)
├── package.json
├── dockerfile
└── README.md

Getting Started

Prerequisites

Installation

cd learning-progress-tracker
npm install
npm start

Available at http://localhost:3000.

For development with auto-reload:

npm run dev

Custom Background

Place your image at public/img/background.jpg (or .png). The CSS references img/background.jpg — rename or edit the CSS path as needed. Without an image, the app falls back to a soft gradient.

Docker

docker build -t learning-tracker .
docker run -d -p 3000:3000 -v tracker-data:/app/data learning-tracker

API Endpoints

Method Endpoint Description
GET /api/tasks Fetch active tasks (?archived=1 for archived)
POST /api/tasks Create a new task
PUT /api/tasks/:id Update a task
PUT /api/tasks/:id/archive Archive a task
PUT /api/tasks/:id/unarchive Restore an archived task
DELETE /api/tasks/:id Permanently delete a task
POST /api/tasks/reorder Reorder tasks (array of IDs)

Usage

  • + New Goal to create a task with optional due date.
  • Right-click for context menu actions.
  • Double-click a card to edit it.
  • Drag to reorder or nest tasks.
  • Archive completed tasks, then switch views with the Active/Archive toggle.

Tech Stack

  • Frontend: Vanilla JavaScript, HTML, CSS (glassmorphism, CSS variables)
  • Backend: Node.js, Express
  • Database: SQLite3
  • Containerization: Docker

License

MIT

S
Description
Learn Track
Readme
229 KiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 67.3%
CSS 24.9%
HTML 7.8%