TLDoist is a visual Todoist board built on tldraw and Cloudflare Workers.
It syncs Todoist projects, sections, and tasks onto an infinite canvas, and includes an AI chat panel that can inspect and manipulate the board.
- Renders Todoist projects and tasks as custom tldraw shapes.
- Supports bidirectional task/project/section updates through Todoist API proxy routes.
- Includes live/manual sync flows so canvas and Todoist stay aligned.
- Exposes Todoist-aware actions to the built-in agent.
- React + Vite + TypeScript
- tldraw
- Cloudflare Workers + Durable Objects
- Todoist REST/Sync APIs
- Node.js 20+
- npm 10+
- A Todoist API token
- At least one model provider API key:
- Anthropic
- OpenAI
- Google AI
- Install dependencies:
npm install- Create local env file from the template:
cp .dev.vars.example .dev.vars-
Fill
.dev.varswith your real keys. -
Start local dev:
npm run dev- Open http://localhost:5173.
Local development uses .dev.vars.
Required for Todoist features:
TODOIST_API_TOKEN
Used for model providers:
ANTHROPIC_API_KEYOPENAI_API_KEYGOOGLE_API_KEY
npm run dev- Start local developmentnpm run build- Build client and workernpm run preview- Preview production build
This project is configured for Cloudflare Workers via wrangler.toml.
- Authenticate with Cloudflare:
npx wrangler login- Deploy:
npx wrangler deployIf you use a custom domain, add your own [[routes]] entry in wrangler.toml.
client/- tldraw app UI, agent client logic, custom shapes/actions/partsworker/- model streaming endpoint and Todoist proxy routesshared/- schemas, types, and formatting utilities used by client and workerdocs/- design and architecture notes
- Do not commit
.dev.vars,.env*, or.wranglerartifacts. - Use
.dev.vars.examplefor onboarding. - Before publishing, confirm repository metadata (owner, links, issue tracker) matches your org.