A Golang based CLI todo manager with JSON persistence and a CI/CD pipeline using GitHub Actions for automated build, linting, and testing.
- Persistence: Data is saved to
todos.jsonautomatically - Generics: Uses a generic storage engine for easy extension
- Table View: Clean terminal output using
aquasecurity/table - Full CRUD: Add, Edit, Toggle, and Delete tasks
This project uses GitHub Actions:
- Automated builds on every push
- Code linting using
golangci-lint - Running tests
- Ensuring consistent code quality
git clone https://github.com/Debashich/goCLI.git
cd goCLIgo mod tidygo build -o todoRun using the compiled binary:
./todoOr directly with Go:
go run ../todo -add "Finish Go project"./todo -list./todo -toggle 0Format:
index:new textExample:
./todo -edit "0:Complete the Go CLI tutorial"./todo -del 0./todo -h.
├── .github/
│ └── workflows/
│ └── go.yaml # GitHub Actions CI pipeline
├── commands.go # CLI command handling
├── main.go # Application entry point
├── todo.go # Core todo logic
├── storage.go # JSON persistence logic
├── todos.json # Data storage file
├── go.mod # Module definition
├── go.sum # Dependencies checksum
└── README.md # Project documentation
This project is open-source and available under the MIT License.