Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Treinamento Autoguiado
  • Wiki
  • Wiki
  • configuracao

configuracao · Changes

Page history
Update configuracao authored Mar 30, 2025 by Jocemar Nicolodi Junior's avatar Jocemar Nicolodi Junior
Hide whitespace changes
Inline Side-by-side
configuracao.md
View page @ 03c38fe2
......@@ -30,6 +30,143 @@ npm i
npm run dev
```
## Padrões de commit e branch
## Backend - Treinamento Autoguiado - REST API (BACKEND)
<a href="https://spring.io/projects/spring-boot/">
<img src="https://img.shields.io/badge/springboot-6DB33F.svg?style=for-the-badge&logo=springboot&logoColor=white"/>
</a>
<a href="https://swagger.io/">
<img src="https://img.shields.io/badge/-Swagger-%23Clojure?style=for-the-badge&logo=swagger&logoColor=white"/>
</a>
<a href="https://docs.docker.com/">
<img src="https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge&logo=docker&logoColor=white"/>
</a>
## Configuração inicial:
### Clonar o projeto:
```bash
git clone https://tools.ages.pucrs.br/treinamentoAutoguiado/backend.git
```
### Versão do java
Garanta que esteja utilizando o JDK >= 17. É possível verificar a versão do Java com o comando:
```bash
java -version
```
Se necessário, instale a versão 17 ou superior no [site oficial](https://www.oracle.com/java/technologies/downloads/)
## Como rodar o projeto
O projeto está organizado em containers. Para rodar o projeto em ambiente de desenvolvimento:
### Executar o projeto com Docker:
Executar o docker no projeto:
```bash
docker-compose up (ou docker compose up)
```
Quando terminar de utilizar o container
```bash
docker-compose down -v
```
O comando "-v" garante que o docker vai apagar o volume criado pelo container, caso esqueça de utilizar o "-v"
basta utilizar o seguinte comando para apagar volumes que não estão sendo utilizados:
```bash
docker volume prune
```
### Swagger
Com o backend rodando, é possível acessar a seguinte URL para ver o swagger com a explicação de todas as rotas disponibilizadas pela API:
```
http://localhost:8080/swagger-ui/index.html
```
### Como rodar o projeto localmente
É recomendado que seja executado o banco de dados sempre pelo docker para evitar configurações adicionais. Caso queria fazer testes ou precise executar o backend localmente siga os passos abaixo.
Para subir somente o banco de dados no docker execute o comando para inicialização do container **db**:
```bash
docker-compose up -d db
```
Após inicializar o docker-compose apenas com o banco de dados, execute o Backend do projeto localmente pela classe `ApiApplication.java`.
## Organização do Projeto
O projeto segue a arquitetura **MVC** (*Model-View-Controller*). Abaixo está a estrutura das pastas que está sendo utilizada:
```
src/main/java/br/pucrs/ages/treinamentoautoguiado/api
│── config/ # Classes de configuração (segurança, OpenAPI (Swagger), etc.)
│── controller/ # Controllers (pontos de entrada da API)
│── dto/ # Data Transfer Objects (DTOs) para requisições e respostas
│── entity/ # Entidades do banco de dados
│── model/ # Modelos adicionais não diretamente ligados a entidades
│── repository/ # Interfaces de acesso ao banco de dados (Spring Data JPA)
│── responses/ # Estruturas de resposta personalizadas da API
│── security/ # Configurações e filtros de segurança (JWT, autenticação)
│── service/ # Regras de negócio e lógica da aplicação
│── util/ # Utilitários e classes auxiliares
```
### Descrição das Pastas
- **`config/`**: Classes de configuração, como segurança (`CustomSecurityConfig`) e documentação da API (`OpenApiConfig`).
- **`controller/`**: Implementa os endpoints da API, lidando com as requisições HTTP e chamando os serviços correspondentes.
- **`dto/`**: Objetos de transferência de dados (DTOs), usados para transportar dados entre a camada de controle e a lógica de negócios.
- **`entity/`**: Definição das entidades do banco de dados, mapeadas com JPA.
- **`model/`**: Modelos que representam conceitos do domínio, mas que não são entidades diretamente persistidas.
- **`repository/`**: Interfaces que utilizam o Spring Data JPA para acesso ao banco de dados.
- **`responses/`**: Estruturas específicas de resposta para melhorar a padronização e facilitar retornos da API.
- **`security/`**: Configurações e filtros relacionados à segurança da aplicação, como autenticação JWT.
- **`service/`**: Implementa a lógica de negócio, separando as regras da camada de apresentação.
- **`util/`**: Classes auxiliares e manipuladores de exceções (`ApiExceptionHandler`).
## Testes unitários
### Estrutura
Os arquivos de testes unitários estão localizados no diretório `src/test/` e seguem a mesma estrutura de pacotes do diretório `src/main/`. Cada classe de teste é correspondente à classe alvo no diretório principal. Exemplo:
- **Implementação**: `src/main/java/br/.../service/UserService.java`
- **Teste**: `src/test/java/br/.../service/UserServiceTest.java`
### Nomenclatura
Os métodos de teste seguem a convenção de nomenclatura: `test<NomeDoMétodoQueSeráTestado>_should<ResultadoEsperado>_when<Condições>`.
Exemplo:
- `testFetchAllUsers_shouldReturnUserResponses_whenUsersExist`
### Como rodar os testes
No diretório raiz do projeto, use o comando:
```bash
mvn clean test
```
### Cobertura
Para facilitar a visualização da cobertura de testes do projeto, está sendo utilizado a biblioteca **JaCoCo**. A biblioteca faz com que seja gerado um relatório em `.html` para acompanhar a cobertura de código.
O relatório fica disponível no diretório `/target/site/jacoco/index.html` e deve estar visível conforme a imagem abaixo:
<img src="https://i.imgur.com/iB1lrh6.png"/>
TDB
Clone repository
  • Git
  • arquitetura
  • configuracao
  • database
  • escopo e cronograma
  • Home
  • mockups
  • processo
  • processos
  • requisitos
  • sprints