A fast, local-first task manager with a focused interface and optional GitHub-powered device sync. Built as an open-source fan project by codykoinabox.
Ko-Do works instantly without an account. Signed-out data stays in the browser; signing in with GitHub adds encrypted transport and per-user Supabase storage while preserving the local-first experience.
- Fast task capture plus a detailed task editor
- Inbox, Today, Upcoming, All tasks, and Completed views
- Due dates with quick scheduling shortcuts
- High, medium, low, and unprioritized tasks
- Custom color-coded tags
- Search, priority filtering, and four sort modes
- Pointer, touch, and keyboard-friendly manual reordering
- Undoable task deletion
- Light, dark, and system themes
- JSON backup and restore
- Cross-tab local-storage updates
- Optional GitHub sign-in and automatic cross-device sync
- Offline edits, deletion tombstones, stale-write protection, and realtime refresh
- Account-scoped browser caches to keep users separate on shared devices
- Responsive desktop, tablet, and mobile layouts
- Keyboard shortcuts:
Nto add,/to search, andTto toggle theme - Accessible controls, focus states, and reduced-motion support
When signed out, no task data is sent to a server. When signed in, tasks and tags are synchronized to the configured Supabase project and protected by per-user Row Level Security.
Requires Node.js 24 and npm.
npm install
npm run devOpen the local URL printed by Vite.
The app remains local-only when Supabase variables are absent. To enable GitHub sign-in and synchronization, follow the sync setup guide.
npm run checkThis runs ESLint, the Vitest suite, TypeScript, and the production build. The built site is written to dist/.
The repository includes .github/workflows/deploy-pages.yml. It verifies and builds the app, uploads dist/, and deploys it through GitHub Pages whenever main is pushed. It can also be started manually from the Actions tab.
For the first deployment:
- Open the repository on GitHub.
- Go to Settings → Pages.
- Set Source to GitHub Actions.
- Push to
main, or run the workflow manually.
Vite uses relative production asset paths, so the build works at both a user site and a repository subpath without hard-coding the repository name.
Cloud-enabled deployments also require the two public repository variables documented in the sync setup guide.
- React 19 + TypeScript
- Vite
- Radix UI primitives and shadcn-style owned components
- Supabase Auth, Postgres, Row Level Security, and Realtime
- dnd-kit for accessible drag-and-drop
- Lucide icons
- Vitest and Testing Library
- Shared lists without compromising the local-first default
- Optional end-to-end encrypted task payloads
Issues and pull requests are welcome. Run npm run check before submitting changes.
Ko-Do List is an independent fan project and is not affiliated with or endorsed by Cody Ko.