Build a Todoist alternative
Build a Todoist alternative as a quick-add line and a Today view. $5–$8 a person a month is rent you can cancel after one weekend of real tasks.
You can build a Todoist alternative as a quick-add line, a Today view, and a check-off that stays put. Todoist is that product. The catalog line is “Capture the task, see today, check it off.”
You pay $5–$8 a person a month for it. That is $60–$96 a year for every seat. The basic replacement is 8 hours: quick add, Today, and check off.
I would ship this if I still rented a list to remember milk and one invoice. It is marked Weekend. The verdict on the card is “A weekend well spent”.
Last time I wrote about building a Retool alternative. That was a teardown. This one is a regular backlog topic. Native apps and calendar sync stay on the skip row.
What you need to build a Todoist alternative
The Todoist page splits the work into three rows.
The first row is the one you want this weekend. A text box that becomes a task. Inbox for things with no date. Today for overdue and due today. A checkbox that writes done.
The second row is 3 days. Recurring tasks, labels, saved filters, one reminder email. Do that after Today has been the real list for a week.
The third row is a month and up. Native apps, offline sync, calendar integration. The table labels that row as the part you should skip.
If you tell an agent to “clone Todoist”, it aims at the third row. Copy the prompt, then pin it to the first one.
The card lists Project, Task, Label, TaskLabel, Reminder, Completion. These eight hours you need Project and Task. A project is a named bucket, including Inbox. A task has a title, an optional due day, a priority, and a done flag. The rest wait until recurrence needs a paper trail.
A due day is a calendar date, not midnight in UTC. “Friday” stays Friday in Turin and in New York. A later time is a UTC instant plus the owner’s timezone. Mixing those two is how Today starts lying.
How a Todoist alternative is put together
I am describing the catalog’s model here, not reverse-engineering Todoist. A personal task app is a capture box, a daily list from due dates, and a complete action that writes one row.
Your browser talks to one Astro app. Node.js plus Astro is the catalog default. Use TanStack Start if React is your weekday language. The capability line is Astro, HTMX, and D1.
The app parses the quick-add line on the request. D1 holds projects and tasks. Completing a task is a write in that same request. Nothing runs in the background at 8 hours. The reminder email is a cron Worker on the 3-day row.
Every query is scoped by owner. A guessed task id from another account returns nothing. The owner’s timezone sits on the account, not on each task, so Today and a later reminder agree.
The guardrail on the card: store timezone context for due dates, make recurrence advancement atomic, and never lose completion history when a repeating task moves forward. Recurrence is the 3-day row. Store a timezone this weekend anyway. Today is already a local-date question.
The first mini-prompt is the parser. Type Buy milk tomorrow p1 #errands @store. The preview has to show title, the next local date, priority 1, project errands, and label store before you save. An invalid phrase such as next thursdayish stays in the title. It does not become a surprise due date.
Screens of a Todoist alternative
v1 needs Today, the quick-add line, and Inbox. If the agent starts a karma score or a board of columns, send it back.
Today view
Home. Overdue first, then due today. Each row is a checkbox, a title, a project, and a priority mark. The quick-add line sits in the header so capture never needs a second page.
Quick add
One field and a live preview. Hash is a project. p1 through p4 is priority. tomorrow, next fri, and jan 5 become a real calendar day in the chip. Unrecognized words stay in the title. Unknown project names offer create-new. A title that needs a real hash can escape it.
Save writes the task and clears the line. The preview is what will be stored. If the chips and the row disagree after refresh, the parser is wrong.
Inbox
Everything with no due day. Each row can take a date, a project, or a complete. A project page is a filtered Inbox plus the dated tasks for that bucket. Upcoming can wait until Today is boring.
How does Todoist work as a daily loop
The loop is capture, land on Today, check off. Capture has to feel instant. The useful work is trusting the list tomorrow morning.
You type Buy milk tomorrow p1 #errands. The app shows the chips. Save writes title Buy milk, due the next local date, priority 1, project errands. Inbox never sees it. Today sees it when that local date arrives.
Checking it off writes done. The row leaves Today. It does not delete. Recurrence is not in this loop yet. A weekly Monday task belongs on the 3-day row, with an immutable completion and the next date from the rule, not from the tap.
A date-only task due today is never overdue during today. Overdue starts when the owner’s local date has moved past that day. If you fly to New York, Friday is still Friday. A timed task on the 3-day row converts through the owner timezone first.
Double-complete is a no-op. A retried request does not invent a second history row.
Who a Todoist alternative is for
The audience on the page is one person managing personal and freelance commitments. Milk. A domain renewal. An invoice.
The goal is capture instantly and trust a calm daily view. Recurring work is the next row, after Today already has your real Friday.
If you need team workspaces, a phone app, or a calendar that writes events back, keep paying. The site puts that rebuild at a month on purpose.
The same v1 also replaces TickTick, Things 3, and Any.do if what you wanted was a today list you type into.
What not to build in a Todoist clone
Leave out team workspaces, calendar sync, chat, kanban, habits, location reminders, and native apps.
The non-goal on the page already names those. Karma points and a streak counter are a different product. Paste the skip row when the agent starts them.
A board of columns is Trello. I would not grow Inbox into Deck. A kitchen-sink tracker is ClickUp, $7–$12 a person a month.
Todoist alternative or a Linear board
Todoist is personal and daily. Linear is a team issue tracker.
Linear is $10–$16 a person a month, about 12 hours for issues, statuses, and a backlog. I already wrote that teardown. If the rent is “this bug, this cycle, this assignee”, start there.
Hours you bill are Toggl Track, $9–$18 a person a month, about 8 hours. I already wrote the Toggl post. A timer answers where Tuesday went. This list answers what is still open.
A planned day with calendar blocks is Sunsama, $17–$22 a month. That card is a ritual. This card is a capture box.
The first-project post still points at a tonight card if you have not shipped a small tool yet.
The 3-day row, after one real week
Use Today for a week as the real list, not as a demo. Then look at the second estimate: recurring tasks, labels, saved filters, one reminder email.
The second mini-prompt is recurrence. Completing a weekly Monday task on Wednesday still schedules next Monday. The completion row and the next date write together. Monthly-on-the-31st clamps to the last day of shorter months.
The third mini-prompt is the email. One send per person per local date. The Worker inserts that key before it talks to the mail provider. A retry hits the unique row and stops.
Do not “fix” Friday by saving midnight UTC. The catalog says 3 days for that row. Skip native apps and two-way calendar sync.
The scope post is the same three-row table if you want the habit, not just this card. The prompt post is the extra line that says do not build the phone app.
Host it, use Today for a week, cancel
This one wants Astro, HTMX, and D1, because that is the stack on the card. There is a table for tasks, so take a backup before you delete the paid account.
Put the list on a hostname you already own, today.flaviocopes.com. Set Europe/Rome. Type five real tasks, including one dated tomorrow and one with no date. Confirm Inbox and Today split them. Check one off. Refresh. It stays gone from Today and still exists as done.
If you miss every Monday or a morning mail, add them from the 3-day row.
Then cancel Todoist, or TickTick, or Things 3, or Any.do, whichever list you pay for.
Start now
Go to Build your own Todoist. Copy the Astro prompt, or TanStack Start if that is what you write.
Tell the agent the first estimate only: quick add, today view, check off. Eight hours.
Capture one real task this afternoon. Check it off tomorrow on a list you own.