Toku
A 6-column task board with drag-and-drop, Cmd+K command palette, automated task transitions, and recurring task scheduling with relative date math.
The Problem
Existing task managers are either too simple (no automation) or too complex (Jira-level overhead). I wanted a personal task board that automates the tedious parts — moving tasks between columns based on due dates, archiving completed work, and regenerating recurring tasks — without requiring manual upkeep.
The Solution
I built Toku as a 6-column kanban board with a React frontend and Node.js/SQLite backend. The columns represent task lifecycle stages, and tasks move between them automatically based on rules.
- Drag-and-drop via dnd-kit with swipe gesture support for mobile.
- Cmd+K command palette for rapid task creation and column navigation.
- Automated transitions triggered by due dates — overdue tasks auto-escalate.
- Cron-based midnight archival sweeps completed tasks into an archive column.
- Recurring tasks supporting weekly, biweekly, and monthly recurrence with relative date math to handle month-end edge cases.
- Zod schema validation across all API endpoints with optimistic UI updates via TanStack Query.
What Went Wrong
The recurring task system initially used absolute date offsets (e.g., "add 7 days"). This broke for monthly recurrence at month boundaries — scheduling a task on January 31st for monthly recurrence would generate February 31st, which doesn't exist.
The fix: I switched to relative date math that respects month lengths. Monthly recurrence from January 31st generates February 28th (or 29th in leap years), then March 31st. The system tracks the "original day of month" separately from the computed next date.
Results
- 6-column workflow with fully automated lifecycle transitions
- Zero manual cleanup — archival and recurrence run on schedule
- Optimistic UI keeps interactions snappy even on slow connections
Interested in working together?
Let's Talk