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

Last edited by Jocemar Nicolodi Junior Mar 30, 2025
Page history

configuracao

Home Sprints Requisitos Processos Arquitetura Configuração Mockups Banco de Dados Git

Treinamento autoguiado

Frontend

Requisitos para iniciar

Verifique-se de ter a versão X do NodeJS instalada. Caso não tenha, baixe por este link

Configuração do ambiente

É recomendado o uso das seguintes extensões do VSCode:

  • EditorConfig for VS Code
  • ESLint
  • Tailwind CSS IntelliSense
  • Prettier

Para rodar o projeto

Execute os seguintes comandos:

npm i
npm run dev

Backend - Treinamento Autoguiado - REST API (BACKEND)

Configuração inicial:

Clonar o projeto:

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:

java -version

Se necessário, instale a versão 17 ou superior no site oficial

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:

docker-compose up (ou docker compose up)

Quando terminar de utilizar o container

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:

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:

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:

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:

Clone repository
  • Git
  • arquitetura
  • configuracao
  • database
  • escopo e cronograma
  • Home
  • mockups
  • processo
  • processos
  • requisitos
  • sprints