Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/joaopedrodevms/scrum-arch-hexagonal
Essa API foi desenvolvida para auxiliar na gestão de projetos seguindo a metodologia SCRUM
https://github.com/joaopedrodevms/scrum-arch-hexagonal
Last synced: about 1 month ago
JSON representation
Essa API foi desenvolvida para auxiliar na gestão de projetos seguindo a metodologia SCRUM
- Host: GitHub
- URL: https://github.com/joaopedrodevms/scrum-arch-hexagonal
- Owner: joaopedrodevms
- License: mit
- Created: 2024-07-21T16:43:43.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-08-02T03:44:39.000Z (5 months ago)
- Last Synced: 2024-09-10T01:51:50.468Z (4 months ago)
- Language: Java
- Homepage:
- Size: 566 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SCRUM-ARCH-HEXAGONAL
O 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.
![Diagrama de relacionamentos](clean-arch.png)## Futuras funcionalidades
- [X] Criar CRUD para usuários
- [ ] Tratamento de exceções
- [ ] Criar um sistema de login e autenticação
- [ ] Criar feat projetos
- [ ] Criar relação entre usuário e projeto (ManyToMany)
- [ ] Endpoints de adicionar/remover usuário do projeto## Diagrama de relacionamentos
![Diagrama de relacionamentos](SCRUM-diagram.png)
Camadas e Componentes
- Framework- 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.
- Ports
- UserService: Serviço que coordena os casos de uso. Ele chama diferentes casos de uso para realizar operações específicas.
- CreateUserUseCase
- ReadUserUseCase
- UpdateUserUseCase
- DeleteUserUseCase- UseCases
- CreateUserUseCaseImpl: Implementação do caso de uso para criar um usuário.
- ReadUserUseCaseImpl: Implementação do caso de uso para ler um usuário.
- UpdateUserUseCaseImpl: Implementação do caso de uso para atualizar um usuário.
- DeleteUserUseCaseImpl: Implementação do caso de uso para deletar um usuário.
- Interfaces:
- CreateUserUseCase: Define o contrato para criar um usuário.
- ReadUserUseCase: Define o contrato para ler um usuário.
- UpdateUserUseCase: Define o contrato para atualizar um usuário.
- DeleteUserUseCase: Define o contrato para deletar um usuário.- Entity
- User: Classe que representa o domínio do usuário com atributos como id, nickname, email, password, name, profile_picture.
- Repository
- UserRepositoryPort: Porta de interface que define as operações de persistência de usuário.
- JpaUserRepositoryAdapter: Adaptador que implementa a UserRepositoryPort e usa o JpaUserRepository para interagir com o banco de dados.
- UserMapper: Classe responsável por mapear entre User e UserEntity.- Persistence
- JpaUserRepository: Repositório JPA para operações de banco de dados com a entidade UserEntity.## Detalhamento dos Componentes
- 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.
- UseCases: Implementações específicas para cada caso de uso, segregando a lógica de negócio específica.
- UserRepositoryPort: Interface que define as operações de persistência, implementada pelo adaptador JPA.
- JpaUserRepositoryAdapter: Adaptador que implementa a UserRepositoryPort, lidando com a persistência real usando JPA e mapeando entidades.## O diagrama segue uma arquitetura baseada em Clean Architecture (ou Hexagonal Architecture), onde:
- Controladores (Controllers) lidam com a entrada e saída.
- Serviços (Services) coordenam os casos de uso.
- Casos de Uso (UseCases) contêm a lógica de negócio específica.
- Repositórios (Repositories) lidam com a persistência de dados.Essa separação de responsabilidades facilita a manutenção, testes e evolução do sistema.