Todoist

todoist.comcontributed by Samuele Ongaro

YES

Replaceable in one session with an AI coding agent.

A cross-platform task manager: projects, labels and filters, with a quick-add field that reads dates and priorities out of ordinary typing.

Promptfree, for everyone, and the only version there is
Build me a task manager that replaces Todoist: one line of typing becomes a task with a date, a project and a priority, and it is on every device a second later.

STACK
- Node 20+ with Fastify for the server
- SQLite through better-sqlite3, WAL mode, with FTS5
- A PWA that works entirely offline, which is the only sane way to be on every platform without writing four applications
- Caddy in front

THE DATA MODEL
- tasks: id, content, description_md, project_id, section_id, parent_id, position, priority, due_date, due_datetime, due_timezone, due_recurrence, deadline_date, completed_at, created_at, updated_at, deleted_at
- projects: id, parent_id, name, colour, view_kind, is_favourite, is_inbox, position, archived_at
- sections, labels, task_labels
- comments: id, task_id, body_md, author_id, attachment_path, created_at
- reminders: id, task_id, kind, at, offset_minutes, sent_at
- activity: id, entity_kind, entity_id, action, actor_id, payload_json, at — append-only, and what makes an undo and a history possible
- shares: project_id, user_id, role
- Every instant stored in UTC with the intended zone kept beside it. A task due at 09:00 tomorrow is due at 09:00 wherever you happen to be, which means storing the intent and not only the instant

QUICK ADD, WHICH IS THE PRODUCT
- One field. Type a sentence and it becomes a task: 'pay invoice friday 5pm #finance @waiting p1' gives a title, a due date and time, a project, a label and a priority
- Parse dates in the forms people actually type: today, tomorrow, fri, next monday, in 3 days, 15/03, every weekday, every 2 weeks starting monday, end of month
- Ambiguity resolved conservatively and shown before saving — the parsed result is displayed as chips that can be corrected, never applied silently. A tool that guesses wrong and hides it is worse than one that asks
- Parsing runs on the device, offline, instantly. This is the one interaction that has to be under fifty milliseconds or the whole tool feels slow
- Everything typeable is also selectable, because half of people never learn the syntax

RECURRENCE, WHICH IS WHERE THESE GO WRONG
- Two kinds, and they are genuinely different: every Monday, and every 2 weeks after completion. The second reschedules from when you actually did it
- Completing a recurring task creates the next occurrence and keeps a record of the completion. The history must survive
- Daylight saving handled by storing the intent: 'every day at 09:00 in Europe/Rome' is recomputed against the zone, not shifted by an offset
- End conditions: a date, a count, or never
- Skipping an occurrence is different from completing it, and both are recorded

OFFLINE AND SYNC
- Everything works with no network: create, edit, complete, reorder. The device is the source of truth until it syncs
- A change queue on the device, sent when there is a connection, ordered, idempotent by a client-generated identifier
- The server's change feed ordered by a server counter, never by a device clock
- Conflicts resolved per field with last-write-wins, except completion, which is sticky — a task completed on one device must not be resurrected by a stale edit from another
- Sync within a second when there is a connection, which is what makes a task manager feel trustworthy across devices

VIEWS
- Today, upcoming, inbox, per project, and filters as saved queries over date, project, label, priority, assignee and text
- The filter language is the same syntax as quick add, which means one parser and one thing to learn
- Board view per project as an alternative to a list
- Sorting manual, by date, or by priority
- Keyboard for everything

REMINDERS
- Absolute or relative to the due time, per task, with a default per project
- Delivered by push where the platform allows, and by email as the reliable fallback
- Recorded when sent, so nobody is reminded twice for the same occurrence

SHARING
- A project shared with other people, tasks assigned to one of them, comments with mentions
- Notification on assignment and on a comment, batched
- Permissions checked on the server for every read and write

SEARCH AND ESCAPE
- FTS5 over content, descriptions and comments
- Export everything — tasks, completed history, projects, labels and comments — as JSON and CSV in one command
- Import from the common exporters
- Years of completed tasks is a record of what you did with your time and must never be trapped

OPERATIONS
- .env: DATABASE_PATH, BASE_URL, SESSION_SECRET, SMTP_URL, VAPID keys for push
- Migrations on boot, each once
- Nightly backup off the machine, restore script
- Health endpoint

WHAT MATTERS MOST
The parser and offline sync. Build natural-language parsing with its chips-and-correction display first, then the change queue and the completion rule, and use it on a phone with the network off for a week. Everything else is a list.

Give me the repository, the PWA, the parser with its tests, migrations, .env.example, and a README with deploy steps behind Caddy.

What you lose

  • Apps on every platform, including watches and browsers, all in sync within a second
  • Natural language entry that parses dates, projects, labels and priorities from one line
  • Shared projects with comments, which is where family and small teams live
  • Offline behaviour that reconciles cleanly when the connection returns
  • Integrations that create tasks from mail, chat and calendar

If you would rather not build

  • TickTick — paid, similar scope, calendar included

What it costs

as published on their pricing page

PlanBilled monthlyBilled yearlyLast read
—$5/mo——

Their pricing page is where these came from. Seeing a different price? Tell us.

The escape hatch

open source · no votes, no paid placement

Vikunja

$0

Task and project management with list, kanban and gantt views.

go-vikunja/vikunjafree · open source

Super Productivity

$0

Local-first task manager with time tracking, on desktop and web.

super-productivity/super-productivityfree · open source

Why this verdict

our own opinion · changed only by a person

74/100

Verdict yes at 74: tasks with a parser and a change log is a genuine single-session build, and the field-level sync rule is the one design decision that keeps it honest. Apps on every platform is what you are giving up, and a progressive web app covers more of that than it used to.

History

tracked since 9 Aug 2026 · nothing is ever overwritten

Interest · last 30 dayspeak 8/day
views036830 Aug4 Sept9 Sept14 Sept19 Sept24 Sept28 Sept
— views— prompt copies none yet— votes none yet

Questions about Todoist

answered from the record above

Is Todoist free?

No — the plan we track is $5 a month. Pro at $5/month billed annually, $6 monthly; a free tier covers five personal projects.

Can you replace Todoist by building your own?

YES. Replaceable in one session with an AI coding agent. Replacement score 74 out of 100, build time one session. Read what you lose before you decide.

How much does Todoist cost?

$5 a month on Pro — $60 a year. Recorded 9 Aug 2026.

What do you lose by replacing Todoist?

Apps on every platform, including watches and browsers, all in sync within a second; Natural language entry that parses dates, projects, labels and priorities from one line; Shared projects with comments, which is where family and small teams live; Offline behaviour that reconciles cleanly when the connection returns; Integrations that create tasks from mail, chat and calendar. If any of those carry weight for you, keep paying.

Is there an open-source alternative to Todoist?

Yes: Vikunja, Super Productivity. The prompt on this page is for when you want it your way instead.

Related entries

same category first, most replaced first

All 33 in Tasks & project management

Not sending yet

Every week, something stops being worth paying for.

New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.

free forever · no tracking pixel · stored here, never passed to anyone

Esc