A free, offline-first Getting Things Done app built with SvelteKit. Capture every thought, organise by context, and focus on what matters — no account or internet connection required.
| View | Description |
|---|---|
| 📥 Inbox | Capture everything. Process it later with a clear mind. |
| ⚡ Next Actions | Tasks tagged with a #context — what you can do right now. |
| ⏱ Do it Now | All tasks estimated at ≤ 2 minutes, across every list. |
| 📁 Projects | Top-level tasks. Break them down with subtasks. |
| ⏳ Waiting For | Delegated tasks tracked with @person. |
| 🌟 Someday / Maybe | Ideas you're not ready to commit to yet. |
| 📅 Calendar | Time-sensitive tasks sorted by due date. |
| 📴 Offline | Works as a PWA — data stored locally in IndexedDB. |
Add tasks using inline shortcuts as you type:
#context → tags the task for Next Actions@person → tags the task for Waiting For~5m / ~2h → sets an estimated duration| Path | Description |
|---|---|
/ |
Landing page |
/app |
Inbox |
/app/next |
Next Actions |
/app/projects |
Projects |
/app/waiting |
Waiting For |
/app/someday |
Someday / Maybe |
/app/calendar |
Calendar |
Do it Now tasks (≤ 2 minutes) appear as an inline banner on every view — no separate route.
This app is built with WAI-ARIA guidelines in mind:
aria-current="page" to indicate the active view.<nav> is a labelled landmark (aria-label="Main navigation").role="region" aria-label="Do it Now").aria-label or <label for>).aria-label="Edit task: …".aria-hidden="true".aria-expanded.aria-label="Active tasks" / "Completed tasks").Run the test suite (unit and component tests powered by Vitest and @testing-library/svelte):
npm test
Watch mode (re-runs on file changes):
npm run test:watch
Coverage report:
npm run test:coverage
npm install
npm run dev
Open http://localhost:5173 in your browser.
npm run build
Preview the production build:
npm run preview
Set the BASE_PATH environment variable to the repository name when building:
BASE_PATH=/GTD-app npm run build
npm run check