Skip to content

dynamicskillset/TaskDial

Repository files navigation

TaskDial

TaskDial screenshot

Most to-do apps show you a list. TaskDial shows you your day as a clock: tasks are coloured arcs, so you can see at a glance whether your plan is realistic, where the gaps are, and where you're overloading yourself.

There's a built-in Pomodoro timer too, so focused work and planning live in the same place.

Try it at taskdial.dynamicskillset.com — invite-only while we're testing.


What you get

  • Clock face — your day as a visual ring, not a list; tasks are arcs you can see and move
  • Pomodoro timer — 25-minute focus sessions with short breaks and a longer break every four cycles; sounds and notifications when each phase ends
  • Calendar feeds — connect up to three iCal feeds (Google Calendar, Proton Calendar, etc.) and see your meetings on the clock with a configurable gap before the next task
  • Task management — add, edit, reorder by dragging, reschedule to another day, set a fixed start time, mark as important, add tags, set up repeating tasks
  • Backlog — a place for tasks that don't belong to any particular day yet; move them to today when you're ready
  • Undo/redo — change your mind freely; undo or redo any action
  • Works offline — tasks save locally first and sync when you're back online; installable as a PWA
  • Five colour schemes — Berry (default), Nord, Aurora, Frost, Evergreen
  • Accessible — keyboard navigable and screen-reader friendly

Getting access

TaskDial is currently in testing, so you'll need an invite code to sign up. Once you have one:

  1. Go to taskdial.dynamicskillset.com
  2. Click Create account and enter your email, a password (12 characters or more), and your invite code
  3. Install it for the best experience: on Android and iOS, add it to your home screen; on Mac and Linux, use Chrome or Edge and choose "Install app"

Privacy

TaskDial encrypts your task content (titles, tags, and notes) on your device before it reaches the server. The encryption key is derived from your password and never leaves your browser. iCal calendar URLs are stored only in your browser and are never sent to the server. The server sees only ciphertext — not your actual task data. It uses no third-party trackers, shares no data, and does not use your data to train AI models. Full details are in the Privacy Policy.


Versioning

TaskDial uses PrideVer: PROUD.DEFAULT.SHAME

  • PROUD — bump when the release is something to be proud of
  • DEFAULT — bump for routine, functional releases
  • SHAME — bump when fixing embarrassing bugs

Changelog

v1.8.1 — 2026-03-27

Pausing the Pomodoro timer now resets it — interrupting a Pomodoro voids it by design. A note below the timer explains this and links to the Pomodoro Technique website.

v1.8.0 — 2026-03-25

Auto-break scheduling: enable it in Settings → Schedule and TaskDial will automatically insert a break after a configurable stretch of work (default: 10-minute break every 90 minutes). Auto-breaks appear in the task list and on the clock but can't be edited. Any manual break you add resets the counter.

v1.7.0 — 2026-03-20

"Next work day" button in the reschedule popover when tomorrow is a non-working day. Batch "move unfinished" also targets the next work day when tomorrow is a weekend or day off. Passive hint and one-time nudge to help new users find advanced mode.

v1.6.0 — 2026-03-18

Light mode is much easier to read: labels, placeholders, toggles, and buttons that were too faint are now clearly visible. Pomodoro break colours look right in light mode too. Several buttons are easier to tap on mobile. The welcome tour highlight now glides between steps instead of jumping.

v1.5.3 — 2026-03-18

Enabling Advanced mode for the first time now turns on all its features in one go. Task menu hover states now visible.

v1.5.2 — 2026-03-18

The backlog no longer appears empty on mobile during a sync.

v1.5.1 — 2026-03-18

Task menu no longer hidden behind other items on break tasks. Duration presets moved to Settings → Schedule and redesigned as editable chips. Duplicate settings options removed.

v1.5.0 — 2026-03-18

Editing breaks now saves correctly. Task menu no longer cut off on mobile. Duration presets are now customisable. Task colours now match their tag consistently across the list and clock.

v1.4.0 — 2026-03-13

  • Flash when time's up: overrunning task arcs pulse on the clock; a toast lets you extend by 15 minutes, mark done, or dismiss. Browser notification fires once per task.
  • Onboarding walkthrough: five-step guided tour for new users, with a live demo clock. Replayable from Settings → Account.

See CHANGELOG.md for the full release history.


Self-hosting and development

TaskDial is designed to be self-hosted. You run one server for yourself and anyone you invite.

Requirements

  • Node.js 20+
  • A server with a domain and HTTPS (Caddy works well)

Setup

1. Clone the repo

git clone https://github.com/dynamicskillset/TaskDial
cd TaskDial

2. Configure the server

cd server
cp .env.example .env

Edit .env:

JWT_SECRET=        # generate: node -e "console.log(require('crypto').randomBytes(64).toString('hex'))"
APP_ORIGIN=        # your frontend URL, e.g. https://taskdial.example.com
OWNER_EMAIL=       # your email address
PORT=3001
NODE_ENV=production

3. Build and start the server

npm install
npm run build
node dist/index.js

On first run the server creates your owner account and prints a one-time password to the console. Save it — it won't be shown again.

4. Build the frontend

cd ../chronotasker-app
cp .env.production.example .env.production
# Edit VITE_API_URL if your API is on a different domain
npm install
npm run build
# Serve the dist/ folder with Caddy, nginx, or any static file server

5. Caddy example

your-domain.com {
    handle /api/* {
        reverse_proxy localhost:3001
    }
    handle {
        root * /path/to/chronotasker-app/dist
        try_files {path} /index.html
        file_server
    }
    encode gzip
    header {
        Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'; font-src 'self' data:; frame-ancestors 'none'"
        X-Content-Type-Options nosniff
        X-Frame-Options DENY
    }
}

6. Inviting people

Log in with your owner account and go to /admin. From there you can generate invite codes to share.

Running locally

# Backend
cd server && npm run dev

# Frontend (separate terminal)
cd chronotasker-app && npm run dev

The frontend dev server runs on http://localhost:5173. The API runs on port 3001.

Tests

cd chronotasker-app && npm test

Stack

Layer Technology
Frontend Vite, React, TypeScript, PWA (Workbox)
Backend Express, better-sqlite3, TypeScript
Auth JWT (httpOnly cookies), bcrypt, rotating refresh tokens
Deploy GitHub Actions → VPS, Caddy reverse proxy, pm2

About

TaskDial maps your tasks onto a 12-hour clock face so you can see exactly where your time is going, work in focused blocks, and actually finish what you planned.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages