Todorant: a todo manager that uses behavioral psychology to help you get things done (back https://todorant.com
  • TypeScript 41.8%
  • Kotlin 26.3%
  • Swift 25%
  • CSS 3.8%
  • JavaScript 1.3%
  • Other 1.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Claude c90bfffdf7
Some checks failed
Android / check (push) Failing after 2m15s
CI: install the Android SDK on the Forgejo runner
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:32:16 -07:00
.forgejo/workflows CI: install the Android SDK on the Forgejo runner 2026-10-22 16:32:16 -07:00
.github CI: run on git.borodutch.com (Forgejo Actions) 2026-10-22 16:20:48 -07:00
android Android 2.2.6: 28 permissions down to 5 (#18) 2026-10-17 15:51:17 -07:00
backend Backend: Node 22.23.4 (Oct 21 2026 security release; Node 16 is EOL) (#19) 2026-10-21 07:58:28 -07:00
docs Remove the Google Calendar integration from backend, web, Android and iOS (#4) 2026-10-14 10:32:42 -07:00
fastlane/metadata/android/en-US 2.2.6 notes: the camera is F-Droid build only 2026-10-17 15:51:30 -07:00
ios Android 2.2.6: 28 permissions down to 5 (#18) 2026-10-17 15:51:17 -07:00
web Direct APK download: todorant.com button and unversioned release assets (#16) 2026-10-16 11:57:10 -07:00
.env.example Remove the Google Calendar integration from backend, web, Android and iOS (#4) 2026-10-14 10:32:42 -07:00
.gitignore Self-hosting: Docker images (GHCR) + compose, optional integrations, guide 2026-10-13 15:22:32 -07:00
docker-compose.yml Self-hosting: Docker images (GHCR) + compose, optional integrations, guide 2026-10-13 15:22:32 -07:00
LICENSE README with logo, screenshots and self-hosting quick start; backend README for the monorepo; MPL-2.0 license at the root 2026-10-13 15:25:37 -07:00
README.md README: Android links to Google Play now that 2.2.3 is live 2026-10-16 10:22:58 -07:00

Todorant

Productivity systems fail. Todorant works.

Todorant is a todo manager that uses behavioral psychology to help you get things done.
It runs on the web, Android and iOS, and you can host your own server in a couple of minutes.

Open todorant.com · iOS · Android · Self-hosting
iOS 2.2.0 for iPhone and iPad (iOS 17 or later) · Android 2.2.1


Todorant's Current screen in light mode     Todorant's Current screen in dark mode

Why Todorant

Most productivity apps are great at storing, organizing and automating endless lists of tasks, and that is exactly where they fail you: a list that keeps growing doesn't get anything done. Todorant cares about the one thing that matters, which is finishing what you planned.

It does that with four simple rules, backed by a carefully tuned set of limits and praise that makes the primitive part of your brain crave completed todos the way people crave sugar:

  • Focus on one task at a time. The Current screen shows only the todo you should be doing right now.
  • Always add a date or a month to a task. Every todo gets its place in time, so nothing lingers in a list forever.
  • Complete unpleasant tasks first. Todos you dread are marked as frogs and come before everything else on their day.
  • Keep your inbox empty. Overdue todos have to be planned again before you can get back to work.

Todorant grew out of more than twenty productivity books and methodologies. When they failed one by one, the parts that worked were combined and simplified into a single system that you can learn in a minute.

What's inside

  • Realtime sync between all your devices, with offline support and field-level conflict resolution, so changes made on two devices at once both survive.
  • End-to-end encryption of your todos with a password of your choice.
  • Delegation, to hand todos to friends and colleagues and accept the ones they hand to you.
  • A Telegram bot that turns messages into todos, hashtags and epics to group related work, and reports of everything you've done.
  • Six languages (English, Spanish, Italian, Portuguese, Russian and Ukrainian) and a dark mode on every platform.

Host your own

The backend and the web app are published as Docker images for amd64 and arm64, so a server of your own takes one compose file and a secret:

mkdir todorant && cd todorant
curl -fsSLO https://raw.githubusercontent.com/backmeupplz/todorant/main/docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/backmeupplz/todorant/main/.env.example -o .env
sed -i.bak "s/^JWT=.*/JWT=$(openssl rand -hex 32)/" .env && rm .env.bak
docker compose up -d

Open http://localhost:8080 and create an account with your email and a password. The Android and iOS apps connect to your server from Settings → Server. The self-hosting guide walks through HTTPS, access from other devices, backups and every setting.

Repository

Folder What lives there
backend The Koa and MongoDB API behind todorant.com: /v2 REST with realtime WebSocket sync for the current apps, and the original API that older clients still use
web The web app at todorant.com, built with Preact, keeping a copy of your data in IndexedDB and syncing it live
android The native Android app, written in Kotlin with Jetpack Compose
ios The native iPhone and iPad app, written in Swift with SwiftUI, sharing the Android app's translations
docs The self-hosting guide

Development

Every app talks to the backend over HTTP and a WebSocket, so you can work on any of them against todorant.com's backend or against one running on your machine.

Backend needs Node 16 and MongoDB:

cd backend
cp .env.sample .env    # at least MONGO and JWT
yarn install --ignore-engines
yarn develop           # the API on http://localhost:1337

Web app needs Node 22:

cd web
npm ci
npm run dev                                   # against backend.todorant.com
VITE_API=http://localhost:1337 npm run dev    # against your local backend

Android app needs JDK 17 and the Android SDK:

cd android
./gradlew :app:installDebug                              # against backend.todorant.com
./gradlew :app:installDebug -Papi=http://10.0.2.2:1337   # the emulator's view of your machine

iOS app needs Xcode 27:

cd ios
./build.sh                                # simulator build; run the Todorant scheme from Xcode
./build.sh archive                        # App Store archive (automatic signing)
xcodebuild -scheme Todorant -destination 'platform=iOS Simulator,name=iPhone 17' test -only-testing:Tests

Run it with the launch argument -API http://localhost:1337 to use your local backend (Edit Scheme → Arguments).

Pushes to main deploy on their own once the checks pass: the backend to backend.todorant.com, the web app to GitHub Pages, and fresh Docker images to the GitHub Container Registry. Android builds are attached to releases. The iOS app ships only through the App Store, since an App Store build can't be installed any other way.

License

Todorant is open source under the Mozilla Public License 2.0. Questions, ideas and bug reports are welcome in issues or at n@borodutch.com.