A keyboard-driven todo app for developers. Track tasks across workspaces, review daily standups, visualize your productivity with heatmaps. Zero dependencies, works anywhere Python runs.
- π¨ Beautiful TUI - Clean curses-based interface with vim-style navigation
- π Workspace Management - Separate task lists for different projects
- π Daily Task Tracking - Navigate through dates, move tasks between days
- π Powerful Search - Find tasks across all dates and workspaces
- π Visualizations - Standup view, weekly summary, monthly heatmap
- π€ CLI Mode - Full command-line interface for automation and LLM integration
- πΎ Local First - All data stored in
~/.todo-cli/, no cloud sync required - β‘ Zero Dependencies - Only Python standard library, no external packages
Use pipx to install CLI tools in isolated environments:
# Install pipx if you don't have it
brew install pipx
pipx ensurepath
# Install devlog
pipx install git+https://github.com/isakanderson-official/devlog-cli.git
# Update to latest version
pipx upgrade devlog-clipip install git+https://github.com/isakanderson-official/devlog-cli.git
# Or with --user flag if you get permission errors
pip install --user git+https://github.com/isakanderson-official/devlog-cli.gitdevlog --helpLaunch interactive mode:
devlogAdd tasks via CLI:
devlog add "Review pull requests"
devlog add "Update documentation" --date todayList tasks:
devlog list --date today
devlog list --date yesterday
devlog list --json # Machine-readable outputComplete tasks:
devlog done <task-id>See CLI_REFERENCE.md for complete CLI documentation.
| Key | Action | Key | Action |
|---|---|---|---|
j / β |
Move cursor down | J / Shift+β |
Move task down |
k / β |
Move cursor up | K / Shift+β |
Move task up |
Enter / a |
Add new todo | e |
Edit task text |
Space |
Toggle complete | d |
Delete (confirm) |
h / β / [ |
Previous day | l / β / ] |
Next day |
Shift+β |
Move task to prev day | Shift+β |
Move task to next day |
t |
Jump to today | s |
Standup view |
w |
Weekly summary | m |
Monthly heatmap |
/ |
Search all tasks | 1-9 |
Switch workspace |
W |
Workspace management | q / Ctrl-C |
Quit |
Space- Toggle completion (universal checkbox convention)d- Delete (TUI convention: vim, ranger, tmux)- Vim-style navigation -
hjklfor movement,Shiftfor operations
These choices prioritize muscle memory and cross-app consistency for better UX.
- No signup, no sync, no cloud - Your data stays local in
~/.todo-cli/ - Fast and lightweight - Instant startup, works offline
- Keyboard-driven - Optimized for developer workflows
- Perfect for standups - Quick daily review with
skey - LLM-friendly - JSON output mode for automation and AI assistants
All data is stored locally in your home directory:
- Config:
~/.todo-cli/config.json(workspaces, active workspace) - Tasks:
~/.todo-cli/tasks/{workspace}/{YYYY-MM}.json(monthly partitioned)
Tasks are stored as JSON with full timestamps, allowing for detailed history and analysis.
# Clone the repository
git clone https://github.com/isakanderson-official/devlog-cli.git
cd devlog-cli
# Install with dev dependencies
pip install -e .[dev]
# Install pre-commit hooks
pre-commit install
# Run tests
pytest
# Run with coverage
pytest --cov --cov-report=html
open htmlcov/index.html# Linting
ruff check devlog/
# Formatting
ruff format devlog/
# Type checking
mypy devlog/core/ devlog/cli.py
# Run all checks (what CI runs)
pre-commit run --all-files# All tests
pytest
# Unit tests only
pytest tests/unit/
# Integration tests only
pytest tests/integration/
# Specific test file
pytest tests/unit/test_tasks.py
# With coverage report
pytest --cov --cov-report=htmldevlog-cli/
βββ devlog/ # Main package
β βββ core/ # Business logic (90%+ test coverage)
β β βββ tasks.py # Task operations
β β βββ persistence.py # File I/O
β β βββ config.py # Configuration
β βββ ui/ # UI components (manual testing)
β β βββ colors.py
β β βββ drawing.py
β β βββ input.py
β βββ cli.py # CLI commands (80%+ coverage)
β βββ tui.py # TUI main loop (manual testing)
β βββ views.py # TUI views (manual testing)
βββ tests/ # Test suite
β βββ unit/ # Unit tests for core modules
β βββ integration/ # Integration tests for CLI
β βββ fixtures/ # Test data
βββ .github/workflows/ # CI/CD pipelines
See CLAUDE.md for detailed architecture documentation and CONTRIBUTING.md for contribution guidelines.
- Python 3.8 or higher
- Terminal with curses support (Linux, macOS, BSD)
- Windows: Use WSL (Windows Subsystem for Linux)
MIT License - see LICENSE file for details.
Contributions welcome! This project is in active development. Please see CONTRIBUTING.md for detailed guidelines.
Quick links:
- Report bugs or request features via GitHub Issues
- Submit pull requests with improvements
- Share feedback on the UX and features
All contributions must:
- Pass CI checks (linting, formatting, type checking)
- Include tests for new features
- Maintain or increase code coverage (70%+ target)
Made with β€οΈ for developers who live in the terminal