{"id":19085893,"url":"https://github.com/gamazic/task-tracker","last_synced_at":"2025-02-22T07:14:16.573Z","repository":{"id":210405111,"uuid":"726463248","full_name":"Gamazic/task-tracker","owner":"Gamazic","description":"Task Tracker application","archived":false,"fork":false,"pushed_at":"2024-06-13T10:36:43.000Z","size":472,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-02T21:48:44.269Z","etag":null,"topics":["backend","clean-architecture","go","task-tracker"],"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/Gamazic.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}},"created_at":"2023-12-02T13:28:18.000Z","updated_at":"2024-06-13T10:36:46.000Z","dependencies_parsed_at":"2023-12-14T16:48:13.392Z","dependency_job_id":null,"html_url":"https://github.com/Gamazic/task-tracker","commit_stats":null,"previous_names":["gamazic/task-tracker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gamazic%2Ftask-tracker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gamazic%2Ftask-tracker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gamazic%2Ftask-tracker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Gamazic%2Ftask-tracker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Gamazic","download_url":"https://codeload.github.com/Gamazic/task-tracker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240137019,"owners_count":19753648,"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":["backend","clean-architecture","go","task-tracker"],"created_at":"2024-11-09T02:57:48.463Z","updated_at":"2025-02-22T07:14:16.544Z","avatar_url":"https://github.com/Gamazic.png","language":"Go","readme":"# Task Tracker\n\nTask management system designed to improve task organisation and monitoring.\nIt allows users to create, manage and track tasks.\n\n## For developers\n\nThis project is an example of a supporting backend application in the `Go` language.\nIt aims to combine high-performance backend with Domain-Driven Design (DDD)\nand Clean Architecture techniques.\nSpecifically, anemic models were opted as a pattern within the Domain-Driven Design approach\n\n## Features\n\n* **Clean Architecture**. The architecture prioritizes encapsulating business logic and domain concerns.\nSpecific implementations of database/web/events/logging/other are not emphasized.\n* **High Performance**. Designed with a focus on delivering efficient performance and low latency.\n* **Minimal dependencies**. Using Go's rich standard library and idiomatic problem-solving\n  approaches to minimize external dependencies. The project maximizes Go's capabilities.\n* **Minimal amount of database requests**. Aiming for optimal performance by\nminimizing the number of database requests. Some Domain-Driven Design (DDD) or Clean Architecture (CA)\napplications suffer from IO performance issues due to excessive querying or\ncomplex domain object reconstruction. This project seeks to strike a balance\nthat is easily comprehensible for humans while being less IO bound.\n\n## Documentation\n\n### Run\n\nRun infrastructure dependencies\n\n```shell\ndocker-compose up -d\n```\n\nRun a web application\n\n```go\ngo run ./src/cmd/rest_api\n```\n\n### Project summary\n\n```shell\n├── src - source code root\n│    ├── application - applied logic of the service, including usecases and required interfaces\n│    ├── cmd - entrypoints\n│    ├── domain - domain entities\n│    ├── storage_adapter - data-related implementations of interfaces that are required by applied logic layer\n│    └── transport\n│        └── rest_api\n│            ├── app\n│            │    ├── app.go\n│            │    └── factory\n│            ├── microframework\n└── swagger\n    ├── openapi.json - openapi specification rendering by swagger.\n    ├── ... - the rest of the files are permanent immutable and need to render swagger from openapi.json. \n```\n\n### HTTP Api\n\n#### Swagger\n[http://localhost:8080/docs/](http://localhost:8080/docs/)\n![img.png](doc/swagger.png)\n#### Register user\n\n```shell\ncurl -X POST 'localhost:8080/api/register' -d '{\"username\": \"MyUsername\", \"password\": \"example\"}'\n```\n`{\"username\":\"MyUsername\"}`\n\n#### Create task\n\n```shell\ncurl -X POST 'localhost:8080/api/tasks' -d '{\"description\": \"code\"}' -H 'Authorization: Basic ...'\n```\n`{\"task_id\":1,\"description\":\"code\",\"stage\":\"todo\"}`\n\n\n#### Change task stage\n\n```shell\ncurl -X PATCH 'localhost:8080/api/tasks/1' -d '{\"stage\": \"done\"}' -H 'Authorization: Basic ...'\n```\n`{\"task_id\":1}`\n\n#### Get tasks of user\n\n```shell\ncurl -X GET 'localhost:8080/api/tasks' -H 'Authorization: Basic ...'\n```\n`[{\"task_id\":1,\"description\":\"code\",\"stage\":\"todo\"}]`\n\n\n### Inspired by\n\n* https://github.com/Tishka17/deseos17\n* https://github.com/SamWarden/user_service\n\n___\n\nStill in progress.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamazic%2Ftask-tracker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgamazic%2Ftask-tracker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamazic%2Ftask-tracker/lists"}