A Linear-inspired, fully client-side project management app. Organize work into lists, track tasks on a kanban board, and drag them between Todo, In Progress, In Review, and Done โ no backend, no account, no sign-up. Everything lives in your browser's localStorage.
- Lists (projects) โ create, rename, and delete lists from the sidebar
- Kanban board โ drag-and-drop between columns; card order is persisted
- Custom columns โ add, rename, recolor, reorder, and delete columns per list
- Tasks โ create, edit, and delete tasks (right-click a card for the context menu), with title, description, column, and priority (Urgent / High / Medium / Low)
- Markdown descriptions โ a GitHub-style editor with a formatting toolbar, keyboard shortcuts (โB / โI / โKโฆ), live preview, and interactive checklists; cards show checklist progress
- Search โ instant client-side search across every task in every list
- Recent โ a feed of recently updated tasks across all lists
- Offline-first โ installable PWA with a service worker; lists/tasks live in localStorage and keep working without a network
- Local profile โ set your display name; no auth service, all data stays on your device
- Responsive โ collapsible sidebar layout for small screens
- Next.js 13 (App Router) + React 18 + TypeScript
- Tailwind CSS + CSS Modules
- React Context +
useReducerfor state, persisted to localStorage next-pwa(Workbox) for the offline service worker and precachingreact-markdown+remark-gfmfor rendering task descriptionsreact-beautiful-dnd-nextfor drag-and-drop, Radix UI for the context menu, Framer Motion for micro-interactions- Jest + Testing Library
yarn install
yarn start # dev server on http://localhost:3000Other scripts:
yarn build # production build
yarn test # run tests once
yarn test:watch # run tests in watch mode
yarn lint # eslint- Run a production build and serve it (
yarn build && yarn next start), or deploy to HTTPS. - Open the app once while online so the service worker can cache the shell and assets.
- Disconnect the network โ your lists and tasks still work; an indigo banner confirms you're offline.
- Optional: install Todoooze from the browser ("Add to Home Screen" / Install app).
The service worker is generated by next-pwa at build time (public/sw.js + public/workbox-*.js, both gitignored) and is disabled in next dev so hot reload stays snappy. When a page isn't cached and the network is down, the /offline fallback page is served.
There is intentionally no auth and no server. All lists, tasks, and profile data are stored under todoooze.* keys in localStorage. You can wipe everything from My account โ Clear all local data.