{"id":24965813,"url":"https://github.com/shayan-ghani/goad","last_synced_at":"2025-03-29T01:19:29.379Z","repository":{"id":275325242,"uuid":"905490166","full_name":"Shayan-Ghani/GOAD","owner":"Shayan-Ghani","description":"Full CRUD Task Manager Cli ","archived":false,"fork":false,"pushed_at":"2025-02-12T14:18:11.000Z","size":91,"stargazers_count":0,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-12T15:34:52.997Z","etag":null,"topics":["cli","flag","go","sql"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Shayan-Ghani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-18T23:52:26.000Z","updated_at":"2025-02-04T20:31:42.000Z","dependencies_parsed_at":"2025-02-01T18:23:21.508Z","dependency_job_id":"2a63daa1-3d7a-4617-b135-a7687614e906","html_url":"https://github.com/Shayan-Ghani/GOAD","commit_stats":null,"previous_names":["shayan-ghani/goad"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shayan-Ghani%2FGOAD","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shayan-Ghani%2FGOAD/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shayan-Ghani%2FGOAD/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Shayan-Ghani%2FGOAD/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Shayan-Ghani","download_url":"https://codeload.github.com/Shayan-Ghani/GOAD/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246122484,"owners_count":20726837,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","flag","go","sql"],"created_at":"2025-02-03T11:16:57.915Z","updated_at":"2025-03-29T01:19:29.372Z","avatar_url":"https://github.com/Shayan-Ghani.png","language":"Go","readme":"# GOAD\nGo-based Interface-Driven Task management with Item and Tag Microservices supporting multiple backends in Repository layer. Currently raw SQL is implemented as database backend. You can use the CLI or call the API with a client.  \n\n## Table of Contents\n- [Features](#features)\n- [Future Plans](#future-plans)\n- [Project Structure](#project-structure)\n- [Installation](#installation)\n- [Usage](#usage)\n- [Examples](#examples)\n\n## Features\n- Command Line Interface\n- Full CRUD Microservices in Repository/Service Structure\n- REST (http/json) in delivery and microservices communication\n- MySQL database backend\n- Status tracking (done/pending)\n- Timestamp tracking (created/modified)\n- Due-date for items\n\n## Future Plans\n- Multiple-database backends\n- OCR\n- Circuit breaker\n- Scalability and Reliability testing\n- Unit Tests\n- Grpc\n- Migrate to Event-Driven for services\n\n## Installation\n\n1. Install dependencies:\n```bash\ngo mod download\n```\n2. run services (you can optionally, change the service address in config/):\n```bash\ngo run cmd/service/item.go\ngo run cmd/service/tag/tag.go\n```\n\n3. build the cli app :\n```bash\ngo build -o cli main.go\n```\n\n\n# Project Structure\n```\nGOAD/\n├── cmd/                    # Executables\n│   ├── cli/               # CLI client application\n│   └── service/           # Microservice executables\n\n├── config/                # Configuration constants\n├── docs/                  # Documentation\n├── internal/              # Private application code\n│   ├── db/               # Database management\n│   │   └── migrations/   # SQL migration files\n│   ├── delivery/         # Delivery layer (CLI \u0026 HTTP)\n│   │   ├── cli/         # CLI implementation\n│   │   │   └── requesthandler/\n│   │   └── command/     # Command parsing\n│   ├── model/           # Domain models\n│   ├── repository/      # Data access layer\n│   │   └── sql/        # SQL implementation\n│   └── service/         # Business logic\n│       ├── item/        # Item service\n│       └── tag/         # Tag service\n└── pkg/                  # Public packages\n    ├── formatter/       # Formatting utilities\n    ├── request/        # Request/payload definitions\n    │   ├── item/\n    │   └── tag/\n    ├── response/       # Response handling\n    └── validation/     # Input validation\n```\n\n## Usage \n+ see the help page for options:\n```bash\n./cli --help\n```\n\u003cdetails\u003e\n\u003csummary\u003eAs of now here are the options:\u003c/summary\u003e\n\u003cpre\u003e\nAvailable commands:\nitem : ...\n  --help    \tsee help for flags and options\n    Usage: see help for flags and options\n\n  add       \tAdd a new item\n    Usage: item add -n \u003cname\u003e -d \u003cdescription\u003e [-t tag1,tag2] [-due-date \u003cdate string\u003e (e.g '2025-03-05 15:05:10') ] \n\n  view      \tView an item(s), also use -t \u003ctag-name\u003e instead of -i(single)/--all to see items filtered by that tag name.\n    Usage: item view [-i \u003cid\u003e] [--done=true] [--all=true] [-t \u003citems-with-these-tags,tag2\u003e] [--format=json/table]\n\n  delete    \tDelete an item or its tags with --del-tags\n    Usage: item delete -i \u003cid\u003e [-t \u003ctags-to-delete\u003e ] [--del-tags=true]\n\n  update    \tUpdate an item\n    Usage: item update -i \u003cid\u003e [-n \u003cname\u003e] [-d \u003cdescription\u003e] [-t \u003ctag1,tag2\u003e] [-due-date \u003cdate string\u003e (e.g '2025-03-05 15:05:10') ]\n\n  done      \tupdate item status to done from pending\n    Usage: item done -i \u003cid\u003e\n\n\ntag : ...\n  view      \tView tags\n    Usage: tag view --all=true\n\n  delete    \tDelete a tag or item tags, if item id not provided all refrences of the tag will be removed from items.\n    Usage: tag delete -n \u003cname\u003e [-item-id \u003cid\u003e [-t \u003ctags,to,remove\u003e / -all (remove all tags for item)] ]\n\n\u003c/pre\u003e\n\u003c/details\u003e\n\n## Examples\n\n1. getting all the items:\n```bash\n./cli item view --all=true\n```\n\u003cdetails\u003e\n\u003csummary\u003e Output:\u003c/summary\u003e\n\u003cpre\u003e\nThe Game Begins.\nID   Name             Description               Status    Due_Date              Tags             Created_At\n--   ----             -----------               ------    ----                  ------           ------\n2    fix table view   fix table view response   Done      Not Set               No tags          2025-02-04 16:41:53\n3    fix json view    fix json view response    Pending  2025-05-02 18:32:02    fix, chore       2025-02-04 16:44:10\n4    json marshal     adding json response      Pending   Not Set               gocasts, chore   2025-02-04 20:18:04\n\u003c/pre\u003e\n\u003c/details\u003e","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshayan-ghani%2Fgoad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshayan-ghani%2Fgoad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshayan-ghani%2Fgoad/lists"}