A beautiful terminal UI for managing tasks in Markdown files with vim-like navigation
npm install todo-tuiA beautiful and intuitive terminal application (TUI) for managing tasks in Markdown files.




!Node.js
!TypeScript
Manage your tasks directly from your terminal with a beautiful, keyboard-driven interface. Perfect for developers who live in the terminal and want to keep their workflow uninterrupted. Your tasks are stored in a simple Markdown file that you can edit manually or with the app.
Born from necessity: This app was created by someone with ADHD who needed a simple, highly visual way to manage daily tasks. The interface is intentionally designed to reduce cognitive load and maintain focus, with features like the 3-task limit in the "DOING" section to prevent overwhelm.
Key Benefits:
- π Lightning-fast keyboard navigation (vim-like)
- π Human-readable Markdown storage
- π Live sync with external file changes
- π¨ Beautiful, distraction-free interface
- πͺ Powerful batch operations
- π§ ADHD-friendly design (max 3 tasks in "DOING" to prevent overwhelm)
- π― "Today's focus" field to set daily priorities
- β¨ Clear visual hierarchy and color-coded sections
_Coming soon.
- Features
- Installation
- Usage
- Shortcuts
- Markdown File Structure
- Development
- Detailed Features
- Technologies
- Contributing
- License
- π¨ Colorful and organized terminal interface
- π Uses Markdown file as database (manually editable)
- π Automatically syncs with external file changes
- β¨οΈ Keyboard navigation (vim-like: h/j/k/l)
- π·οΈ Support for tags, deadlines, and time estimates
- π Priority markers (β‘ important, π quick)
- π¦ Multiple task selection for batch operations
- π Task reordering with Ctrl+arrows or K/J
- π― Editable "Today's Focus" field
- π₯ Limit of 3 tasks in "DOING" section
- π± Responsive interface that adapts to terminal size
- πΎ Automatic save on all operations
No installation needed! Just run:
``bashUse default file (~/.config/todo-tui/TODO.md)
npx todo-tui
$3
`bash
With npm
npm install -g todo-tuiWith pnpm
pnpm add -g todo-tui
`$3
`bash
Navigate to directory
cd todo-tuiInstall dependencies
pnpm installRun in development mode
pnpm dev
`π Usage
`bash
Use default file (~/.config/todo-tui/TODO.md)
todoSpecify custom file
todo ~/my-todo.md
`Default file:
~/.config/todo-tui/TODO.mdOn first run, the app automatically creates:
- The
~/.config/todo-tui/ directory
- The TODO.md file with an initial templateβ¨οΈ Shortcuts
$3
| Key | Action |
|-----|--------|
|
β / k | Previous task |
| β / j | Next task |
| β / h | Previous section |
| β / l / Tab | Next section |$3
| Key | Action |
|-----|--------|
|
Enter | Toggle selected task(s) |
| a | Add new task |
| e | Edit current task |
| d (2x) | Delete task(s) (press twice) |
| m | Move task to another section |
| f | Edit today's focus |$3
| Key | Action |
|-----|--------|
|
Space | Select/Deselect current task |
| s | Select/Deselect all tasks in section |
| S | Select/Deselect all tasks |Tip: Select multiple tasks and use
Enter, d, m or numbers for batch actions!$3
| Key | Action |
|-----|--------|
|
K / Ctrl+β | Move task(s) up |
| J / Ctrl+β | Move task(s) down |Note: Moving at the beginning/end of a section moves to the previous/next section.
$3
| Key | Move to |
|-----|---------|
|
1 | π₯ DOING |
| 2 | π NEXT |
| 3 | β³ WAITING |
| 4 | π§ BLOCKED |
| 5 | π‘ IDEAS |
| 0 | β
DONE |$3
| Key | Action |
|-----|--------|
|
r | Reload file |
| ? | Show full help |
| q | Quit |
| Esc | Cancel/Go back |π Markdown File Structure
The app expects a Markdown file with specific sections:
`markdown
π TASKS
> Today's focus: _Your priorities for the day_
π₯ DOING (max. 3)
- [ ] Task in progress #tag ~30min β‘π NEXT
- [ ] Next task #work π
20/12
- [ ] Quick task πβ³ WAITING
- [ ] Waiting for approval β _John/code review_π§ BLOCKED
- [ ] Blocked task β _External dependency_π‘ IDEAS / SOMEDAY
- Future idea
- [ ] Another idea with checkboxβ
DONE
- [x] ~~Completed task~~ β 15/12
`$3
- Tags:
#tag (can be multiple)
- Deadline: π
DD/MM (due date)
- Duration: ~30min, ~2h (estimated time)
- Markers:
- β‘ = High priority/important
- π = Quick task
- Waiting/Blocked: β _reason or person_
- Completion: β DD/MM (automatically added when marked as done)π οΈ Development
`bash
Install dependencies
pnpm installRun in dev mode (with hot reload)
pnpm devBuild for production
pnpm buildRun build
pnpm start
`π¨ Detailed Features
$3
Interactive wizard that prompts for:
1. Task text
2. Tags (separated by comma or space)
3. Deadline (format DD/MM)
4. Estimated duration (e.g., 30min, 2h)
5. Priority marker (None, β‘ Important, π Quick)$3
Allows editing all fields of an existing task using the same wizard.$3
- Manual: Key m opens section selection menu
- Quick: Keys 1-5 and 0 move directly
- Reorder: K/J or Ctrl+β/Ctrl+β to reorganize within or between sections$3
1. Use Space to select individual tasks
2. Use s to select/deselect entire section
3. Use S to select/deselect all tasks
4. Selected tasks are marked with visual indicator
5. Actions apply to all selected tasks$3
When pressing Enter on a task (or multiple selected tasks):
- Task is automatically moved to "DONE"
- Text gets strikethrough (~~text~~)
- Completion date is automatically added
- Can be reopened by pressing Enter again in the done section$3
- The app monitors the file with chokidar
- External changes are detected and automatically reloaded
- Visual notification when file is updated
- You can manually edit the file and changes appear in the interfaceπ¦ Technologies
- Node.js - Runtime
- TypeScript - Language
- Ink - React for terminal
- Rollup - Bundler
- Chokidar - File watcher
β FAQ
$3
By default, tasks are stored in
~/.config/todo-tui/TODO.md. You can specify a custom file path when running the app.$3
Yes! The file is just a Markdown file. You can edit it with any text editor, and the app will automatically detect and reload changes.
$3
The app monitors the file for changes. If you edit it externally, the app will reload automatically. However, if you're running multiple instances of the app, the last save will win.
$3
Yes! The app is built with Node.js and works on all platforms.
$3
Simply copy the
TODO.md file. You can also use git to version control your tasks file.$3
Yes! Store your
TODO.md in a synced folder (Dropbox, Google Drive, Git repository, etc.) and point the app to that file.π€ Contributing
Contributions are welcome! Here's how you can help:
1. Fork the repository
2. Create a feature branch (
git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add some amazing feature')
4. Push to the branch (git push origin feature/amazing-feature)
5. Open a Pull RequestPlease read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
$3
`bash
git clone https://github.com/felipechierice/todo-tui.git
cd todo-tui
pnpm install
pnpm dev
``Found a bug? Please open an issue with:
- A clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Your environment (OS, Node version)
Have an idea? Open an issue and describe:
- The problem you're trying to solve
- Your proposed solution
- Any alternatives you've considered
MIT Β© Felipe Chierice (felipe.chierice@hotmail.com)
---