Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Point-Tills-Wiki Point-Tills-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
  • Point Tils um aplicativo para interpretes de Lingua Brasileira de Sinais
  • Point-Tills-WikiPoint-Tills-Wiki
  • Wiki
  • backend

Last edited by Matheus Machado Berwaldt Aug 25, 2025
Page history

backend

Home Escopo Processo Design/Mockups Configuração Arquitetura Gerência BD Qualidade Frontend Backend

Backend

Esta página centraliza informações sobre o repositório Backend do projeto Point Tils.

Sumário

  • Escolha de tecnologias
  • Organização do repositório
  • Padrões de código
  • Documentação do Swagger

Escolha de tecnologias

Conforme mencionado na página de configuração de ambiente da Wiki, como tecnologias de Backend foram selecionadas a linguagem Java, junto ao framework Spring Boot, para o desenvolvimento da API, e o banco de dados PostgreSQL.

Esta decisão foi tomada com base em dois momentos. Em um primeiro momento, na primeira semana da Sprint 0, cada integrante citou as tecnologias com as quais tinha experiência e com qual stack tinha mais interesse em trabalhar (Frontend ou Backend) ao se apresentar. Este levantamento demonstrou que, existiria uma curva de aprendizado menor por grande parte do time já ter utilizado ou visto códigos em Java Spring Boot. Além disso, o Java quanto possue frameworks conhecidos para o desenvolvimento de APIs Backend, o que implica em muitos materiais didáticos e gratuitos para estudo na Internet.

Organização do repositório

Estrutura do Projeto

📂 pointtils/ — Aplicação principal
├── 📂 src/ — Código-fonte e recursos
│ ├── 📂 main/ — Código da aplicação
│ │ ├── 📂 java/com/pointtils/pointtils/ — Pacote base da aplicação
│ │ │ ├── 📂 src/ — Código fonte principal
│ │ │ │ ├── 📂 application/ — Lógica de aplicação
│ │ │ │ │ ├── 📂 controllers/ — Controladores REST (exposição de endpoints)
│ │ │ │ │ ├── 📂 dto/ — Objetos de transferência de dados (DTOs)
│ │ │ │ │ ├── 📂 mapper/ — Mapeadores entre DTOs e entidades
│ │ │ │ │ └── 📂 services/ — Serviços de negócio (regras e lógica central)
│ │ │ │ ├── 📂 core/ — Núcleo do domínio
│ │ │ │ │ └── 📂 domain/ — Entidades e enums de domínio
│ │ │ │ └── 📂 infrastructure/ — Infraestrutura e suporte
│ │ │ │ ├── 📂 configs/ — Configurações da aplicação
│ │ │ │ └── 📂 repositories/ — Repositórios de dados (acesso ao banco)
│ ├── 📂 resources/ — Arquivos de configuração (application.yml, etc.)
│ └── 📂 test/ — Testes unitários e de integração

📂 utils/ — Utilitários e serviços auxiliares
├── 📂 sonarqube/ — Configuração do SonarQube
│ └── 📄 Dockerfile
└── 📂 postgres/ — Configuração do PostgreSQL
└── 📄 Dockerfile

📄 docker-compose.yaml — Orquestração unificada dos containers
📄 sonarqube-docker-compose.yaml — Orquestração antiga (legado)

Padrões de código

Nomenclatura de classes

Classes do projeto devem ser nomeadas em inglês e seguir o padrão PascalCase, ou seja, devem iniciar com letra maiúscula e cada palavra ou abreviatura no meio da frase também deve iniciar com letra maiúscula. Por exemplo:

  • UserController ✔
  • User_Controller ❌
  • Usercontroller ❌
  • userController ❌

Além disso, com exceção do pacote model, os nomes das classes devem refletir o pacote onde elas estão localizadas, conforme o exemplo abaixo:

  • 📁 config: ExemploConfig
  • 📁 controller: ExemploController
  • 📁 dt.request: ExemploRequest
  • 📁 dt.response: ExemploResponse
  • 📁 exception: ExemploException
  • 📁 repository: ExemploRepository
  • 📁 service: ExemploService
  • 📁 util: ExemploUtil

Nomenclatura de variáveis

Variáveis devem ser nomeadas em inglês e seguir o padrão camelCase, ou seja, devem iniciar com letra minúscula e cada palavra ou abreviatura no meio da frase deve iniciar com letra maiúscula. Por exemplo:

  • isAdmin ✔
  • isadmin ❌
  • is_Admin ❌
  • IsAdmin ❌

A exceção são as variáveis constantes (que devem ser estáticas e finais) e enums, que devem seguir o padrão SCREAMING_SNAKE_CASE, onde as palavras no meio da frase são separadas por underscores (_) e as letras devem ser todas maiúsculas. Por exemplo: API_BASE_URL

Além disso, para criar um código limpo e fácil de entender e realizar a manutenção depois, sempre nomeie as variáveis de forma que fique claro o seu propósito/o tipo de informação que ela possui. Para isso, seguem algumas dicas:

  • Evitar abreviações.
  • Para variáveis booleanas, não nomear apenas com substantivos, para deixar claro que é um booleano. Por exemplo, ao invés de "publish", usem "isPublished".
  • Criar variáveis fáceis de pronunciar.
  • Evitar dar nomes muito parecidos para duas variáveis.
  • Não usar números mágicos. Se existir algum número que precisa ser utilizado no código, criar uma variável para este número para deixar claro o que ele significa.

Nomenclatura de métodos

Métodos devem ser nomeadas em inglês e seguir o padrão camelCase, ou seja, devem iniciar com letra minúscula e cada palavra ou abreviatura no meio da frase deve iniciar com letra maiúscula. Por exemplo:

  • findUserByName ✔
  • finduserbyname ❌
  • find_User_By_Name ❌
  • FindUserByName ❌

Além disso, para facilitar a leitura do código, em uma classe os métodos sempre devem estar organizados na ordem abaixo:

  1. Métodos public
  2. Métodos protected
  3. Métodos private

Padrões das APIs REST

A API desenvolvida para este projeto deverá seguir o estilo de arquitetura REST, muito utilizado para o desenvolvimento de APIs web, e para isso algumas restrições e boas práticas devem ser seguidos. Neste estilo, as informações gerenciadas pela aplicação e que possuem uma identificação única são chamadas de recursos (pode-se dizer que são mapeamentos conceituais/abstratos às entidades da aplicação), e as URIs da aplicação (Uniform Resource Identifiers) devem referenciar estes recursos de forma clara e padronizada.

Abaixo segue um exemplo de uma API fictícia para ilustrar o padrão que deve ser utilizado pela aplicação:

  • GET /v1/books - buscar lista/coleção de livros
  • GET /v1/books/1 - buscar um livro específico a partir de um identificador único
  • POST /v1/books - criar/registrar um novo livro
  • PATCH /v1/books/1 - editar um livro específico a partir de um identificador único (atualizações parciais)
  • PUT /v1/books/1 - editar um livro específico a partir de um identificador único (substituindo a representação do recurso pelos novos dados informados)
  • DELETE /v1/books/1 - deletar um livro específico a partir de um identificador único

Os recursos devem ser referenciados como substantivos no plural, e também deve se adicionar o versionamento da API no começo do path, conforme exemplos acima. Além disso, caso exista algum recurso que precise ser representado com mais de uma palavra, estas devem ser separadas por hífens, por exemplo: /v1/loan-contracts

Para mais informações, sugere-se a leitura deste link, que traz algumas boas práticas de forma didática.

Documentação do Swagger

A aplicação expõe sua documentação interativa através do Swagger UI, permitindo explorar e testar os endpoints disponíveis.

🔗 Acesse a documentação da API aqui

Clone repository

Logo-Dark_Blue

Point Tils


Home

Arquitetura

Backend

Banco de Dados

Configuração

Design/Mockups

Escopo

Frontend

Gerência

Processo

Qualidade


Sprint 0

Sprint 1

Sprint 2

Sprint 3

Sprint 4