# Go Todo CLI App A simple command-line Todo application written in Go. Todos are stored in a SQLite database. ## Features - Add new todos with a title and description - List all todos, grouped by incomplete and completed - Mark todos as completed - Remove todos by ID - Data is persisted in SQLite database ## Dependencies - Go 1.x - github.com/mattn/go-sqlite3 ## Usage Build the app: ```sh go build -o todo ``` ### Add a Todo ```sh ./todo -action=add -title="Buy milk" -description="Get 2 liters of milk" ``` ### List Todos ```sh ./todo -action=list ``` ### Complete a Todo ```sh ./todo -action=complete -id=1 ``` ### Remove a Todo ```sh ./todo -action=remove -id=1 ``` ## Flags - `-action` (add, remove, list, complete) — What you want to do - `-title` — Title for the todo (required for add) - `-description` — Description for the todo (required for add) - `-id` — ID of the todo (required for remove and complete) ## Example ```sh ./todo -action=add -title="Read Go book" -description="Finish chapter 3" ./todo -action=list ./todo -action=complete -id=1 ./todo -action=remove -id=1 ``` ## Next Improvements - Use a CLI library like [cobra](https://github.com/spf13/cobra) for better UX - Add edit and search features - Add unit tests - Improve error handling - Add binary release for different platforms and make it available through Homebrew, Winget and Apt