Taskmaster is a lightweight terminal-first task manager built entirely in Go for developers who prefer managing work without leaving the command line. Rather than relying on databases, cloud synchronization, or external services, it stores tasks in a human-readable JSON file that remains fully owned by the user.
The application follows a deliberately minimal architecture where a single CLI entry point routes commands into a small persistence layer responsible for loading, mutating, and saving task state. This separation keeps command execution straightforward while allowing the storage logic to remain independently testable.
Persistence is handled through Go's standard library, serializing task collections to `tasks.json` and restoring them on subsequent runs. The absence of runtime dependencies or background processes enables instant startup, cross-platform portability, and distribution as a single compiled binary.
Users interact through four focused commands—`add`, `list`, `done`, and `delete`—covering the complete task lifecycle while intentionally avoiding feature bloat. The resulting workflow feels native to the terminal and integrates naturally with existing developer tooling and version-controlled workflows.
Unit tests validate the persistence layer to ensure task creation, loading, saving, and error handling behave predictably. The project emphasizes clean code organization, idiomatic Go practices, and maintainability over unnecessary abstraction, making it both a practical productivity tool and a reference implementation for building CLI applications in Go.
Architecture sketch
CLI Commands ──► Command Router (main.go) ──► Task Service │ ├► Load Tasks (JSON) │ ├► Execute CRUD Operation │ └► Persist Tasks ▼ tasks.json
Constraints surfaced
Building a dependency-free CLI that remained intuitive while guaranteeing reliable persistence required careful handling of file operations, predictable task identifiers, and graceful behavior when task files were missing or malformed—all without introducing unnecessary architectural complexity.
Outcome
Delivered a portable, zero-runtime-dependency CLI application that demonstrates idiomatic Go development, clean project organization, JSON-based persistence, automated unit testing, and a polished developer experience suitable for everyday terminal workflows.
Look Trendy with Mo