CalmList

Plan less.
Finish more.

A keyboard-first task manager that reads what you type, keeps everything on your device, and syncs through a server you own.

CalmList's Today view: three tasks due today, with the sidebar showing Inbox, Today, Upcoming and two projects.

Quick Add

Type it.
It understands.

“Call Sam tomorrow at 4pm p1 #Launch @phone” becomes a task with a date, a time, a priority, a project and a label. Every token lights up as you type.

The quick add dialog with the date, priority, project and label in the typed text highlighted, and matching chips below.

Everything a list needs

Built for the
way work moves.

Today & Upcoming

Overdue work up top, a week strip to jump ahead, and one tap to reschedule it all.

Repeating tasks

“every weekday”, “every other week”, “every! 3 days”. Completing one rolls it forward.

Boards and sections

Switch any project between a list and a board. Drag tasks across sections.

Filters

Saved queries like (today | overdue) & #Work & !@waiting, validated as you type.

Sub-tasks and notes

Break work down, add descriptions, deadlines and comments in the task view.

Command palette

Press / to find any task, project or label, or run a filter on the spot.

Undo everything

Complete, delete or reschedule and change your mind from the toast.

Daily goal

A streak, a 14-day chart and an activity log of what you finished.

Boards

One project.
Two ways to see it.

Sections become columns. Drag a card to move it, open it to see everything behind it.

A project shown as a board with Basics and Power moves columns of task cards.

48 themes

Make it
yours.

Calm dark and light, palettes that follow the sun and the seasons, animated aurora, starfield and synthwave, and niche favourites from Nord to a green-phosphor terminal. Every one is contrast-checked.

CalmList in the Aurora theme, with soft northern lights behind the list.
Aurora · Animated
CalmList in the Synthwave theme, with a neon sun and grid.
Synthwave · Animated
CalmList in the Terminal theme: green monospace text with scanlines.
Terminal · Niche
CalmList in the Paper theme: warm off-white with terracotta accents.
Paper · Light

Local-first

Yours,
even offline.

Tasks live in your browser from the first keystroke. Connect Supabase or a CalmList server and every device stays in step, with edits made offline sent the moment you reconnect.

Storage
Browser, Supabase or SQLite
Sync
Incremental, last write wins
Themes
48, dark to animated
License
MIT
CalmList's Today view on a phone, with a floating add button.

Sync your way

Your data.
Your backend.

Keep everything on the device, sync through Supabase Cloud, run Supabase yourself with one command, or use the tiny bundled server.

This device

The default. Private, offline, instant. Export JSON whenever you like.

Supabase Cloud

Paste your project URL and anon key. Row-level security and live updates included.

Self-hosted Supabase

npm run supabase:selfhost fetches Supabase, generates every secret and applies the schema.

CalmList server

One Node process and one SQLite file. A single Docker container serves the app too.

Self-hosted Supabase · Docker

npm run supabase:selfhost -- --url https://tasks.example.com

Supabase Cloud · CLI

npm run supabase:link -- --project-ref your-ref
npm run supabase:push

CalmList server · Docker

docker build -t calmlist . && docker run -p 8787:8787 -v calmlist:/data calmlist

Ready when you are

Clear your head.
Start a list.