Minimalist, keyboard-first productivity app inspired by Marc Andreessen's 3-list system.
- Motivation
- Why Trilist?
- The 3-list system
- Features
- Tech stack
- Quick start
- Keyboard shortcuts
- Inline tags
- Data privacy
- Testing
- Contributing
- Credits
- License
Most task management apps encourage giant backlogs. You create dozens of lists, tag everything, and watch tasks pile up until you abandon the app.
Trilist keeps your daily task focus manageable.
Inspired by Marc Andreessen's essay, Guide to Personal Productivity, Trilist brings a fast, keyboard-first 3-list workflow to the web.
| Traditional Productivity Tools | The Trilist Approach |
|---|---|
| Endless task backlogs that grow forever | Focused daily priorities |
| Cluttered dropdown menus | Fast inline tag routing (/td, /wt, /lt, /p1) |
| Mandatory sign-ups and cloud syncing | Instant offline IndexedDB with 100% local storage |
| Messy action buttons | Clean 3-dots context menu and right-aligned priority badges |
Trilist structures your work into three core lists:
- Todo: Your core tasks for today.
- Watch: Radar items, including replies you're waiting on or projects you're tracking.
- Later: Tasks scheduled for future weeks or months.
- Rough: A separate scratchpad space for quick notes and raw ideas before routing them to your core lists.
- Inline tag routing: Route tasks while typing by adding
/td,/wt,/lt, or/rganywhere in the input bar. - Priority flags: Set priority with
/p1(High Red),/p2(Medium Amber), or/p3(Low Blue). Priority badges align along the right margin. - Relative scheduling: Combine
/ltor/wtwith/wk(1 week) or/mn(1 month) to defer tasks to future dates. - Context menu (
...): Right-aligned 3-dots menu for priority shifts, list moves, editing, and deletion. - Themes & typography: Light and dark themes, 5 accent colors, and 4 fonts (Geist, JetBrains Mono, Inter Tight, and Newsreader).
- Offline local storage: Data stays in your browser using IndexedDB. Includes JSON export and import backups.
- Framework: React 19 + TypeScript 6
- Build tool: Vite 8
- Styling: Vanilla CSS with design tokens
- Animations: Motion (
motion/react) - Icons: Lucide React
- Database: Browser IndexedDB API
- Linter: Oxlint
- Node.js v18.0 or higher
- npm v9.0 or higher
git clone https://github.com/Nishachay/Trilist.git
cd Trilist
npm install
npm run devOpen http://localhost:5173 in your browser.
| Key | Action |
|---|---|
0 |
Switch to Rough scratchpad |
1 |
Switch to Todo list |
2 |
Switch to Watch list |
3 |
Switch to Later list |
j / k |
Navigate items up / down |
Space |
Toggle completion / resolve task |
p |
Cycle priority (P1 -> P2 -> P3 -> Clear) |
x or d |
Delete selected task |
... |
Open row context menu |
/ |
Focus input bar |
? |
Open Help and Preferences overlay |
Esc |
Clear input or close popovers |
/todoor/td: Route task to Todo/watchor/wt: Route task to Watch/lateror/lt: Route task to Later/roughor/rg: Route task to Rough
/p1or/high: High Priority (Red)/p2or/med: Medium Priority (Amber)/p3or/low: Low Priority (Blue)
/weekor/wk: Defer task for 7 days/monthor/mn: Defer task for 30 days
Your tasks stay on your device:
- Local storage: Tasks save locally in your browser using IndexedDB. No external servers or user accounts required.
- Backup and export: Export your database as a
.jsonbackup file or restore from a previous file in the Preferences menu (?).
Run linting and build commands locally:
npm run lint
npm run build
npm run preview- Fork the repository (
https://github.com/Nishachay/Trilist/fork) - Create your feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -m 'feat: add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request
Run npm run lint before submitting code.
Concept based on Marc Andreessen's 2007 essay, Guide to Personal Productivity.
This project is licensed under the MIT License. See LICENSE for details.

