A blazing-fast, minimalist task manager that lives right in your terminal.
"Stop juggling tasks in your head. Let the terminal handle it."
- About the Project
- Features
- Project Structure
- Getting Started
- How to Use
- Data Persistence
- Roadmap
- Contributing
- Author
Task Tracker CLI is a lightweight, no-dependency command-line application written entirely in Go. It gives you everything you need to manage your daily tasks without ever leaving the terminal — no browser, no app, no bloat.
Built for developers, power users, and productivity nerds who prefer keyboard over clicks. Tasks are stored locally as JSON, so they're yours — no cloud, no account, no nonsense.
$ go run main.go
╔══════════════════════════╗
║ 📋 Task Tracker CLI ║
╠══════════════════════════╣
║ 1. Add Task ║
║ 2. Update Task Status ║
║ 3. List Tasks ║
║ 4. Delete Task ║
║ 5. Search Tasks ║
║ 6. Sort Tasks ║
║ 7. Exit ║
╚══════════════════════════╝
Choose an option:
| Feature | Description |
|---|---|
| ➕ Add Tasks | Create tasks with a title and priority level (High / Medium / Low) |
| 🔁 Update Status | Move tasks across todo → in-progress → done |
| 📋 List & Filter | View all tasks or filter by status in one command |
| 🔎 Search | Instantly find tasks by keyword |
| 🔀 Sort | Order your list by ID, title, status, or priority |
| 🗑️ Delete | Remove tasks safely with a confirmation prompt |
| 💾 Auto-Save | Everything persists to tasks.json automatically |
| ⚡ Zero Dependencies | Pure Go standard library — no installs, no fuss |
Task-Tracker-CLI-Go/
│
├── src/
│ ├── main.go # 🎛️ CLI menu, user prompts & action routing
│ └── task.go # 🧱 Task model, JSON serialization & file I/O
│
└── README.md # 📖 You are here
main.go — The brain of the app. Handles the interactive menu loop, reads user input, and dispatches to the right action.
task.go — Defines the Task struct with fields like ID, Title, Status, and Priority. Manages loading and saving to tasks.json.
- Go 1.18+ installed on your machine
# 1. Clone the repository
git clone https://github.com/MisaghMomeniB/Task-Tracker-CLI-Go.git
# 2. Navigate into the source directory
cd Task-Tracker-CLI-Go/src
# 3a. Run directly with Go
go run main.go
# 3b. Or build a binary
go build -o task-tracker
./task-trackerChoose an option: 1
Enter task title: Write unit tests
Select priority (High/Medium/Low): High
✅ Task 'Write unit tests' added (ID: 1)
Choose an option: 3
Status? (todo/in-progress/done/all): all
ID:1 | Title: Write unit tests | Status: todo | Priority: High
ID:2 | Title: Update docs | Status: done | Priority: Low
Choose an option: 2
Enter task ID: 1
Select new status (todo/in-progress/done): in-progress
🔄 Task ID 1 status updated to 'in-progress'
Choose an option: 5
Enter keyword: unit
🔍 Found: ID:1 | Title: Write unit tests | Status: in-progress | Priority: High
Choose an option: 6
Sort by (id/title/status/priority): priority
Choose an option: 4
Enter task ID: 2
Are you sure you want to delete task ID 2? (y/n): y
🗑️ Task ID 2 deleted.
All tasks are automatically saved to a tasks.json file in the same directory as the executable. The file is created on first run and updated after every action — no manual saving required.
[
{
"id": 1,
"title": "Write unit tests",
"status": "in-progress",
"priority": "High"
}
]- Core CRUD operations
- Priority levels
- Status filtering & sorting
- Keyword search
- JSON persistence
- Due dates & deadline warnings ⏰
- Project/tag grouping 🏷️
- CLI flags mode (non-interactive) 🚩
- Batch import/export (CSV/JSON) 📦
- Automated test suite 🧪
- Colorized terminal output 🎨
Contributions make open source great! Here's how to get involved:
- Fork the repository
- Create your feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m "Add your feature" - Push to the branch:
git push origin feature/your-feature - Open a Pull Request — and describe what you built!
Please keep code clean, commented, and consistent with the existing style.
Distributed under the MIT License. See LICENSE for more information.