A simple command-line TODO list manager written in Go.
Features persistent storage, task completion toggling, deletion, and SHA-256 based change detection.
Built completely from scratch — no external libraries, no AI assistance.
- ✅ Add, complete, and delete TODOs
- 💾 Persists tasks in a hidden file (
~/.TODO.txt) - 🔐 Uses SHA-256 hashing to detect changes before saving
- 🧹 Clean terminal UI
- 🏗️ Modular Go package structure (
todopackage)
git clone https://github.com/yourusername/terminal.todo.git
cd terminal.todogo mod tidygo run main.goWill be coming soon
Each TODO item is saved in a |-separated format:
Learn Go concurrency|false
Finish README|true
Refactor the write logic|false- First column: TODO title
- Second column: Completion status (
trueorfalse)
Before saving, the app checks if the in-memory TODO list has changed by hashing it using SHA-256:
data, _ := json.Marshal(T.TODOS)
hash := sha256.Sum256(data)If the hash differs from the previously loaded state, it writes the updated list to the file. This prevents unnecessary writes and provides a simple "dirty state" check.
- Add CLI flags for quick actions (
todo add "Task") - Export to JSON/CSV
- Color-coded output using
fatih/color - Cobra integration for subcommands
This was built as a personal project, but feel free to fork and extend it. Suggestions and issues are welcome!
Mani Sankar Chintagunti Backend Developer | OSS Contributor Portfolio: @mindslayer001.in GitHub: @mindslayer001 X: @ismycodeshit