{"id":21461601,"url":"https://github.com/joaopedrodevms/scrum-arch-hexagonal","last_synced_at":"2025-03-17T04:49:54.769Z","repository":{"id":249674659,"uuid":"831795805","full_name":"joaopedrodevms/SCRUM-ARCH-HEXAGONAL","owner":"joaopedrodevms","description":"Essa API foi desenvolvida para auxiliar na gestão de projetos seguindo a metodologia SCRUM","archived":false,"fork":false,"pushed_at":"2024-08-02T03:44:39.000Z","size":580,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-23T14:30:34.306Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/joaopedrodevms.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-07-21T16:43:43.000Z","updated_at":"2024-08-02T03:44:41.000Z","dependencies_parsed_at":"2024-07-31T04:27:13.936Z","dependency_job_id":"856a2236-2681-46f1-9259-90cf440cb687","html_url":"https://github.com/joaopedrodevms/SCRUM-ARCH-HEXAGONAL","commit_stats":null,"previous_names":["github-joao-pedro/scrum-arch-hexagonal","joaopedrodevms/scrum-arch-hexagonal"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaopedrodevms%2FSCRUM-ARCH-HEXAGONAL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaopedrodevms%2FSCRUM-ARCH-HEXAGONAL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaopedrodevms%2FSCRUM-ARCH-HEXAGONAL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/joaopedrodevms%2FSCRUM-ARCH-HEXAGONAL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/joaopedrodevms","download_url":"https://codeload.github.com/joaopedrodevms/SCRUM-ARCH-HEXAGONAL/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243976503,"owners_count":20377692,"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":[],"created_at":"2024-11-23T07:09:57.318Z","updated_at":"2025-03-17T04:49:54.744Z","avatar_url":"https://github.com/joaopedrodevms.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SCRUM-ARCH-HEXAGONAL\nO SCRUM-API é uma API para gerenciamento de projetos baseada no framework Spring Boot e utilizando um banco de dados PostgreSQL. Essa API foi desenvolvida para auxiliar na gestão de projetos seguindo a metodologia SCRUM, permitindo o controle de usuários, projetos, sprints, backlog e tarefas de forma eficiente. Durante o desenvolvimento, o principal foco e a prática da arquitetura limpa no código, separando entre camadas assim desacoplando as regras de negócio do framework.\n![Diagrama de relacionamentos](clean-arch.png)\n\n## Futuras funcionalidades\n- [X] Criar CRUD para usuários\n- [ ] Tratamento de exceções\n- [ ] Criar um sistema de login e autenticação\n- [ ] Criar feat projetos\n- [ ] Criar relação entre usuário e projeto (ManyToMany)\n- [ ] Endpoints de adicionar/remover usuário do projeto\n\n## Diagrama de relacionamentos\n![Diagrama de relacionamentos](SCRUM-diagram.png)\nCamadas e Componentes\n- Framework\n\n    - UserController: Controlador responsável por receber as requisições do cliente. Usa o UserService para realizar as operações de criação, leitura, atualização e deleção de usuários.\n\n- Ports\n\n    - UserService: Serviço que coordena os casos de uso. Ele chama diferentes casos de uso para realizar operações específicas.\n        - CreateUserUseCase\n        - ReadUserUseCase\n        - UpdateUserUseCase\n        - DeleteUserUseCase\n\n- UseCases\n\n    - CreateUserUseCaseImpl: Implementação do caso de uso para criar um usuário.\n    - ReadUserUseCaseImpl: Implementação do caso de uso para ler um usuário.\n    - UpdateUserUseCaseImpl: Implementação do caso de uso para atualizar um usuário.\n    - DeleteUserUseCaseImpl: Implementação do caso de uso para deletar um usuário.\n    - Interfaces:\n        - CreateUserUseCase: Define o contrato para criar um usuário.\n        - ReadUserUseCase: Define o contrato para ler um usuário.\n        - UpdateUserUseCase: Define o contrato para atualizar um usuário.\n        - DeleteUserUseCase: Define o contrato para deletar um usuário.\n\n- Entity\n\n    - User: Classe que representa o domínio do usuário com atributos como id, nickname, email, password, name, profile_picture.\n\n- Repository\n\n    - UserRepositoryPort: Porta de interface que define as operações de persistência de usuário.\n    - JpaUserRepositoryAdapter: Adaptador que implementa a UserRepositoryPort e usa o JpaUserRepository para interagir com o banco de dados.\n    - UserMapper: Classe responsável por mapear entre User e UserEntity.\n\n- Persistence\n    - JpaUserRepository: Repositório JPA para operações de banco de dados com a entidade UserEntity.\n\n## Detalhamento dos Componentes\n\n- UserService: É a camada de serviço que expõe métodos para cada operação de usuário. É um ponto central onde as chamadas de controlador são delegadas para os casos de uso específicos.\n- UseCases: Implementações específicas para cada caso de uso, segregando a lógica de negócio específica.\n- UserRepositoryPort: Interface que define as operações de persistência, implementada pelo adaptador JPA.\n- JpaUserRepositoryAdapter: Adaptador que implementa a UserRepositoryPort, lidando com a persistência real usando JPA e mapeando entidades.\n\n## O diagrama segue uma arquitetura baseada em Clean Architecture (ou Hexagonal Architecture), onde:\n\n- Controladores (Controllers) lidam com a entrada e saída.\n- Serviços (Services) coordenam os casos de uso.\n- Casos de Uso (UseCases) contêm a lógica de negócio específica.\n- Repositórios (Repositories) lidam com a persistência de dados.\n\nEssa separação de responsabilidades facilita a manutenção, testes e evolução do sistema.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoaopedrodevms%2Fscrum-arch-hexagonal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjoaopedrodevms%2Fscrum-arch-hexagonal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjoaopedrodevms%2Fscrum-arch-hexagonal/lists"}