New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@walknpm/todo-cli

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install
Malware was recently detected in this package.

Affected versions:

2.0.1

@walknpm/todo-cli

A zero-dependency Node.js CLI + Web todo list manager with subtasks, recurring, dependencies, time tracking, kanban, calendar, and more.

npmnpm
Version
2.0.0
Version published
Weekly downloads
0
-100%
Maintainers
1
Weekly downloads
 
Created
Source

todo-cli

English | 简体中文

A zero-dependency Node.js todo list manager with CLI + Web UI. Full CRUD, subtasks, recurring tasks, dependencies, time tracking, pinning, bulk operations, categories/tags, priority sorting, due dates, search, statistics, kanban board, calendar view, timeline, export (JSON / CSV / Markdown), and auto-update. Data persists to ~/.todo-cli/todos.json.

Requirements

  • Node.js >= 18

Quick install

Via npm:

npm install -g @walknpm/todo-cli
todo --version   # → todo v2.0.0

Via git:

git clone https://gitcode.com/hw_aishell_projects/todo_cli.git
cd todo_cli
npm install -g .
todo --version   # → todo v2.0.0

🚀 Web UI

Start the web server with:

todo web              # default port 3456
todo web 8080         # custom port
npm run web           # via npm script

Then open http://localhost:3456 in your browser.

Web UI Features

FeatureDescription
DashboardStats cards, completion rate, recent todos, upcoming deadlines
List ViewFull todo list with inline actions, filtering, sorting, search
Kanban BoardDrag-and-drop between Pending and Done columns
CalendarMonthly calendar with todos mapped to due dates
TimelineChronological activity feed of all todos
Add/Edit ModalFull form with all fields including recurrence and pinning
Detail ViewSubtask management, dependencies, timestamps, quick actions
Time TrackingStart/stop timers with floating timer widget
Dark/Light ThemeToggle with persistence via localStorage
ResponsiveWorks on desktop, tablet, and mobile
Keyboard Shortcutsn = new todo, / = search, Esc = close modal

Commands

Core Commands

CommandDescription
add <title>Add a new todo
listList todos (default command)
show <id>Show detailed info for a todo
done <id>Mark a todo as done (done --all = complete all)
toggle <id>Toggle done / pending
edit <id>Edit a todo
delete <id>Delete a todo (alias: rm, remove)
duplicate <id>Clone a todo (alias: dup)
pin <id>Toggle pin status
search <keyword>Search title / tags / category / note / assignee
statsShow summary statistics
export [json|csv|md]Export all todos to stdout
archiveRemove all completed todos
clearRemove ALL todos
web [port]Start the web UI server (default: 3456)
updateUpdate todo-cli to latest (--check = check only)
helpShow help

Subtasks

todo subtask add <id> <title>        # Add a subtask
todo subtask done <id> <sid>         # Toggle subtask done
todo subtask edit <id> <sid> <title> # Edit subtask title
todo subtask delete <id> <sid>       # Delete a subtask

Recurring Tasks

todo recur <id> daily   [interval]   # Repeat every N days
todo recur <id> weekly  [interval]   # Repeat every N weeks
todo recur <id> monthly [interval]   # Repeat every N months
todo recur <id> yearly  [interval]   # Repeat every N years
todo recur <id> off                  # Remove recurrence

When a recurring todo is completed, a new pending instance is automatically created with the due date advanced by the recurrence interval.

Dependencies

todo dep add <id> <depId>     # Add dependency (blocks completion)
todo dep remove <id> <depId>  # Remove dependency

Time Tracking

todo timer start <id>         # Start timer (stops any other running timer)
todo timer stop <id>          # Stop timer and log elapsed time
todo timer log <id> <minutes> # Manually log time
todo timer                    # Show active timer

Bulk Operations

todo bulk done <ids...>              # Complete multiple todos
todo bulk delete <ids...>            # Delete multiple todos
todo bulk priority <ids...> -p <val> # Set priority on multiple todos
todo bulk category <ids...> -c <val> # Set category on multiple todos
todo bulk assign <ids...> --assignee <val>  # Set assignee on multiple todos

Flags

FlagApplies toDescription
-p, --priority <v>add, edithigh | medium | low (default: medium)
-t, --tags <v>add, editComma-separated tags
-c, --category <v>add, editCategory name
-d, --due <v>add, editDue date YYYY-MM-DD
--note <v>add, editLonger note / description
--title <v>editNew title
--assignee <v>add, editAssign to a person
--estimate <v>add, editEstimated minutes to complete
--color <v>add, editCustom color label
--status <v>listall | done | pending
--tag <v>listFilter by tag
--sort <v>listpriority | created | due | id | title | updated | order
--pinnedaddPin the new todo
--overduelistShow only overdue items
--due-todaylistShow only items due today
--alldoneComplete all pending
--checkupdateCheck for update without installing
--format <v>exportjson | csv | md (default: json)

Examples

# Add with all fields
todo add "Submit tax return" -p high -d 2025-01-31 -c finance -t urgent,monthly --note "Include receipts" --estimate 120 --assignee bob

# List & filter
todo list --status pending --sort due
todo list --overdue
todo list --category work --priority high

# Subtasks
todo subtask add 1 "Research options"
todo subtask add 1 "Write draft"
todo subtask done 1 1

# Recurring
todo recur 3 weekly 1
todo done 3   # creates a new instance for next week

# Dependencies
todo dep add 5 3   # todo #5 is blocked until #3 is done

# Time tracking
todo timer start 2
todo timer stop 2
todo timer log 2 30

# Pin & duplicate
todo pin 1
todo duplicate 3

# Bulk operations
todo bulk done 1 2 3
todo bulk priority 1 2 3 -p high

# Web UI
todo web 8080

# Statistics
todo stats

# Export
todo export csv > todos.csv
todo export md

# Auto-update
todo update --check
todo update

Project structure

todo_cli/
├── bin/
│   └── todo.js            # executable entry point (shebang)
├── src/
│   ├── store.js           # JSON file persistence layer
│   ├── todo.js            # domain logic (CRUD, subtasks, recurring, deps, timer, bulk, ...)
│   ├── cli.js             # command parsing, ANSI colours, table output
│   └── server.js          # zero-dependency HTTP server (REST API + static files)
├── web/
│   ├── index.html         # SPA shell
│   ├── css/
│   │   └── style.css      # modern responsive design (dark/light themes)
│   └── js/
│       └── app.js         # SPA application logic (dashboard, list, kanban, calendar, timeline)
├── skill/
│   ├── SKILL.md           # DSH skill instructions
│   ├── README.md          # skill documentation
│   └── CHANGELOG.md       # skill changelog
├── package.json
├── README.md              # English documentation
└── README.zh-CN.md        # Chinese documentation

REST API

The web server exposes a REST API at /api/:

MethodEndpointDescription
GET/api/todosList all todos (supports query filters)
POST/api/todosCreate a new todo
GET/api/todos/:idGet a single todo
PATCH/api/todos/:idEdit a todo
DELETE/api/todos/:idDelete a todo
POST/api/todos/:id/toggleToggle done status
POST/api/todos/:id/completeMark as done
POST/api/todos/:id/pinToggle pin
POST/api/todos/:id/duplicateDuplicate a todo
POST/api/todos/:id/reorderReorder a todo
POST/api/todos/:id/subtasksAdd a subtask
POST/api/todos/:id/subtasks/:sid/toggleToggle subtask
PATCH/api/todos/:id/subtasks/:sidEdit subtask
DELETE/api/todos/:id/subtasks/:sidDelete subtask
POST/api/todos/:id/recurringSet/remove recurrence
POST/api/todos/:id/dependenciesAdd dependency
DELETE/api/todos/:id/dependencies/:depIdRemove dependency
POST/api/todos/:id/timer/startStart timer
POST/api/todos/:id/timer/stopStop timer
POST/api/todos/:id/timer/logLog time manually
GET/api/statsGet statistics
GET/api/search?q=<keyword>Search todos
GET/api/timerGet active timer
POST/api/bulkBulk operations
POST/api/complete-allComplete all pending
POST/api/archiveArchive completed
POST/api/clearClear all
GET/api/export?format=<fmt>Export todos

License

MIT

Keywords

todo

FAQs

Package last updated on 29 Aug 2026

Related posts