-
Notifications
You must be signed in to change notification settings - Fork 0
Documentação Técnica
Mario Jorge Pereira edited this page Nov 10, 2024
·
1 revision
- Arquitetura do Sistema
- Tecnologias Utilizadas
- Estrutura do Projeto
- Configurações e Dependências
- APIs e Endpoints
- Banco de Dados
- Segurança
- Testes
- Deploy e Ambiente
- Contribuição Técnica
O Chronos adota uma arquitetura modular baseada nos princípios de Domain-Driven Design (DDD). A aplicação é dividida em diversos Bounded Contexts, cada um responsável por um domínio específico dentro do sistema.
-
Apresentação (Frontend):
- Interface com o usuário utilizando Thymeleaf para renderização de templates.
-
Aplicação (Backend):
- Lógica de negócio implementada com Spring Boot.
-
Persistência (Banco de Dados):
- Armazenamento de dados utilizando JPA/Hibernate.
-
Serviços Externos:
- Integração com serviços de e-mail, pagamentos e outros.
flowchart LR
subgraph Cliente
Usuário
end
subgraph Servidor
Controller[Controladores]
Service[Serviços]
Repository[Repositórios]
Domain[Domínio]
Database[(Banco de Dados)]
end
Usuário --> Controller
Controller --> Service
Service --> Domain
Domain --> Repository
Repository --> Database
-
Linguagem de Programação:
- Java 21 ou superior
-
Frameworks e Bibliotecas:
- Spring Boot: Framework de integração para criação da aplicação.
- Spring MVC: Para construção de aplicações web.
- Thymeleaf: Motor de templates para renderização de páginas HTML.
- Spring Data JPA: Para acesso e manipulação de dados.
- Hibernate: Implementação JPA para mapeamento objeto-relacional.
- Spring Security: Para autenticação e autorização.
- JUnit 5 e Mockito: Para testes unitários e de integração.
-
Banco de Dados:
- H2 ou PostgreSQL ou MySQL
-
Ferramentas e Outros:
- Git e GitHub: Controle de versão e colaboração.
- Maven: Gerenciamento de dependências e build.
- GitHub Actions: Integração contínua e deploy.
A estrutura do projeto segue as convenções padrão de projetos Spring Boot com Maven:
chronos/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── br/edu/ucsal/chronos/
│ │ │ ├── ChronosApplication.java
│ │ │ ├── usermanagement/ # Contexto de Gestão de Usuários
│ │ │ │ ├── domain/
│ │ │ │ ├── application/
│ │ │ │ ├── infrastructure/
│ │ │ │ └── interface/
│ │ │ ├── eventmanagement/ # Contexto de Gestão de Eventos
│ │ │ │ ├── domain/
│ │ │ │ ├── application/
│ │ │ │ ├── infrastructure/
│ │ │ │ └── interface/
│ │ │ ├── registration/ # Contexto de Inscrições
│ │ │ │ ├── domain/
│ │ │ │ ├── application/
│ │ │ │ ├── infrastructure/
│ │ │ │ └── interface/
│ │ │ ├── payment/ # Contexto de Pagamentos
│ │ │ │ ├── domain/
│ │ │ │ ├── application/
│ │ │ │ ├── infrastructure/
│ │ │ │ └── interface/
│ │ │ ├── checkin/ # Contexto de Check-in
│ │ │ ├── certification/ # Contexto de Certificação
│ │ │ ├── communication/ # Contexto de Comunicação
│ │ │ ├── reporting/ # Contexto de Relatórios
│ │ │ └── shared/ # Componentes Compartilhados
│ │ │ ├── exceptions/
│ │ │ └── utils/
│ │ └── resources/
│ │ ├── application.properties
│ │ └── templates/
│ │ ├── usermanagement/
│ │ ├── eventmanagement/
│ │ └── (outros templates)
│ └── test/
│ └── java/
│ └── br/edu/universidade/chronos/
│ └── (estrutura de testes espelhando a main)
├── pom.xml
├── README.md
└── (outros arquivos e diretórios)
flowchart TB
subgraph Aplicação Monolítica
subgraph UserManagementContext
direction TB
UM_Interfaces[Interfaces]
UM_Application[Application]
UM_Domain[Domain]
UM_Infrastructure[Infrastructure]
UM_Interfaces --> UM_Application
UM_Application --> UM_Domain
UM_Domain --> UM_Infrastructure
end
subgraph EventManagementContext
direction TB
EM_Interfaces[Interfaces]
EM_Application[Application]
EM_Domain[Domain]
EM_Infrastructure[Infrastructure]
EM_Interfaces --> EM_Application
EM_Application --> EM_Domain
EM_Domain --> EM_Infrastructure
end
%% Outros Contextos...
end
Usuário --> UM_Interfaces
UM_Interfaces <---> EM_Interfaces