A beautiful, interactive command-line todo application built with Go and Bubble Tea. Manage your daily tasks, upcoming todos, and general notes with vim-style keybindings and an intuitive calendar interface.
- Today View: Focus on today's tasks only
- Upcoming View: See all future-dated todos
- Calendar View: Monthly calendar with todo counts
- General View: Non-dated todos and notes
hjklfor content navigation- Arrow keys for menu switching
- Familiar vim operations (
i,e,d,x) - Fast keyboard-driven workflow
- Monthly view with todo indicators
- Jump to any date to view/add todos
- Navigate months with
n/p - Quick return to today with
t
- JSON file-based persistence
- Automatic data organization by date
- No external database required
- Human-readable data format
- Smart Input Validation: Character limits and real-time feedback
- Auto-clearing Errors: Error messages disappear after 5 seconds
- Enhanced Keyboard Shortcuts:
Ctrl+Sto save,Ctrl+Aselect all - Performance Optimized: Handles 1000+ todos efficiently
- Character Counters: Live character count in input forms
- Version Information:
tedo -versionfor version details - Help System:
tedo -helpfor usage information - Clean, modern terminal UI
- Color-coded todo states
- Pagination for large todo lists
- Real-time input validation
go install github.com/WasathTheekshana/tedo/cmd/tedo@latestcurl -fsSL https://raw.githubusercontent.com/WasathTheekshana/tedo/main/install.sh | bashgit clone https://github.com/WasathTheekshana/tedo.git
cd tedo
go build -o tedo cmd/tedo/main.go
sudo mv tedo /usr/local/bin/tedo -versionNote: Make sure $GOPATH/bin is in your $PATH. Add this to your shell profile if needed:
export PATH=$PATH:$(go env GOPATH)/bintedo # Start the application
tedo -version # Show version information
tedo -help # Show help messageThe app will create a data/ directory in the current folder to store your todos.
| Key | Action |
|---|---|
โ โ |
Switch between tabs |
j k |
Navigate up/down in lists |
h j k l |
Navigate calendar dates |
1 2 3 4 |
Jump to specific views |
c |
Quick jump to calendar |
q / Ctrl+C |
Quit |
| Key | Action |
|---|---|
i |
Add new todo |
e |
Edit selected todo |
d |
Delete selected todo |
x |
Toggle completion |
Enter |
View date (from calendar) |
| Key | Action |
|---|---|
Tab |
Switch between title/description |
Enter / Ctrl+S |
Save todo |
Esc |
Cancel |
Ctrl+A |
Select all text |
Ctrl+C |
Quit application |
Input Validation:
- Title: Required, max 100 characters
- Description: Optional, max 500 characters
- Real-time character counting
- Auto-clearing error messages
| Key | Action |
|---|---|
h j k l |
Move between dates |
n p |
Next/previous month |
t |
Jump to today |
Enter |
View todos for selected date |
i |
Add todo for selected date |
- Automatically enabled for 10+ todos
Ctrl+F/Ctrl+Bfor page navigation- Seamless navigation between pages
tedo/
โโโ cmd/tedo/ # Application entry point
โ โโโ main.go
โโโ internal/ # Private application code
โ โโโ models/ # Data structures
โ โโโ storage/ # JSON persistence layer
โ โโโ version/ # Version information
โ โโโ ui/ # Terminal user interface
โ โโโ app.go # Main application logic
โ โโโ calendar.go # Calendar component
โ โโโ keys.go # Keyboard handling
โ โโโ render.go # UI rendering
โ โโโ styles.go # Visual styling
โ โโโ input.go # Input handling
โ โโโ validation.go # Input validation
โ โโโ errors.go # Error management
โ โโโ performance.go # Performance monitoring
โ โโโ help.go # Help system
โโโ install.sh # Installation script
โโโ uninstall.sh # Uninstallation script
โโโ data/ # JSON data files (auto-created)
โโโ go.mod
โโโ go.sum
โโโ LICENSE
โโโ README.md
๐ Tedo Today Upcoming Calendar General
๐
2025-07-19
> โ 1. Morning Exercise
30 minutes of jogging
โ 2. Code Review
Review PR #123
โ 3. Team Meeting
Daily standup at 10 AM
j/k: navigate โข โ/โ: switch tabs โข x: toggle โข d: delete โข e: edit โข i: add โข q: quit
๐ Tedo Today Upcoming [Calendar] General
๐
July 2025
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 >19<
20 21 22โข 23 24 25 26
27 28 29 30 31
๐ 2025-07-19 (3 todos)
โ Morning Exercise
โ Code Review
โ Team Meeting
h/j/k/l: navigate dates โข n/p: month โข t: today โข enter: view date โข i: add โข q: quit
# Remove Tedo binary from Go installation
rm $(go env GOPATH)/bin/tedo
# Or remove from system location
sudo rm /usr/local/bin/tedocurl -fsSL https://raw.githubusercontent.com/WasathTheekshana/tedo/main/uninstall.sh | bash# Remove binary from all possible locations
sudo rm -f /usr/local/bin/tedo /usr/bin/tedo ~/.local/bin/tedo ~/bin/tedo $(go env GOPATH)/bin/tedo
# Optionally remove your todo data
rm -rf ./dataBy default, todos are stored in ./data/ relative to where you run the command. Files include:
general.json- General todosYYYY-MM-DD.json- Date-specific todos
The app uses a clean, minimal design. Colors and styles can be customized by modifying internal/ui/styles.go.
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes
- Add tests if applicable
- Commit your changes
git commit -m 'Add amazing feature' - Push to the branch
git push origin feature/amazing-feature
- Open a Pull Request
# Clone and enter directory
git clone https://github.com/WasathTheekshana/Tedo.git
cd Tedo
# Install dependencies
go mod tidy
# Run tests
go test ./...
# Run the application
go run cmd/tedo/main.go- Follow standard Go formatting (
go fmt) - Add comments for exported functions
- Keep functions focused and testable
- Use meaningful variable names
Q: App doesn't start or shows garbled text
- Ensure your terminal supports ANSI colors
- Try running with
TERM=xterm-256color tedo
Q: Data not persisting
- Check write permissions in the current directory
- Ensure the
data/directory is not read-only
Q: Performance issues with many todos
- The app uses pagination (10 todos per page) automatically
- Consider archiving completed todos periodically
Q: Keyboard shortcuts not working
- Verify your terminal emulator supports the key combinations
- Some terminals may intercept certain key combinations
- ๐ Open an issue
- ๐ฌ Start a discussion
- ๐ง Email: [email protected]
- Bubble Tea - Terminal UI framework
- Lip Gloss - Styling and layout
- Go 1.19 or later
- Terminal with ANSI color support
- 50MB disk space
- Handles 1000+ todos efficiently
- Lazy loading for large datasets
- Memory usage typically under 10MB
This project is licensed under the MIT License - see the LICENSE file for details.
- Charm for the amazing Bubble Tea framework
- The Go community for excellent tooling and libraries
- All contributors who help improve this project
- Import/Export: CSV and JSON import/export
- Search: Full-text search across all todos
- Categories: Tag-based organization
- Reminders: Due date notifications
- Sync: Cloud synchronization options
- Themes: Customizable color schemes
- Stats: Productivity analytics
โญ Star this repo if you find it helpful!
Made with โค๏ธ and Go