/sgu

Primary LanguageJava

Getting Started

Reference Documentation

Documentação do Projeto

Visão Geral

Este projeto é um sistema de gerenciamento de usuários desenvolvido utilizando Spring Boot. O sistema oferece funcionalidades de CRUD para usuários, com endpoints para criação, leitura, atualização e exclusão de usuários.

Arquitetura do projeto e tecnologias utilizadas

O sistema segue a arquitetura de camadas DDD, com os seguintes componentes principais:

Application: Contém os controladores REST e os modelos de API (DTOs).
Domain: Contém as entidades, servicesn mapper e repositórios do domínio.
Core: configuracao de segurança, exceptions e configurações gerais.

Tecnologias Utilizadas

Spring Boot: Framework principal para desenvolvimento da aplicação.
Spring Data JPA: Abstração para acesso a dados.
Hibernate: Implementação de JPA.
PostgreSQL 16: Banco de dados relacional.
Flyway: Ferramenta para versionamento e migrações do banco de dados.
JUnit: Framework de testes.
MockMvc: Utilizado para testes de integração dos endpoints.
OpenAPI: Ferramenta para documentação da API.
Maven: Ferramenta de gerenciamento de dependências e construção do projeto.

Configuração do Projeto

Requisitos:
JDK 21
Maven 3.6.3 ou superior
PostgreSQL 16

Documentação da API

A documentação da API é gerada automaticamente utilizando OpenAPI.
Para acessar a documentação da API, abra o navegador e vá para

http://localhost:8080/swagger-ui.html.

Clone o Repositório

git clone https://github.com/jhonatask/sgu.git

Importe o projeto na ide de preferencia ( Recomendo Intellij IDEA)

Configurar Banco de Dados, use algum ferramenta sgbd para criar database

CREATE DATABASE dbsgu;

Atualize o arquivo application.properties com as informações do seu banco de dados PostgreSQL:
Rode o projeto para criar as tabelas necessarias, use o swagger para criar um departamento e subistituir os dados da query id na sql de criacao do usuario master (Senha e Pamonha123*) nao alterar codigo da senha aqui do sql, caso queira cadastrar um usuario via swagger o arquivo SecurityConfig na linha 38 (.anyRequest().permitAll()) execute o projeto, e cadastre usuario com senha que desejar.

SQL insert usuario master
INSERT INTO public.users ("name", email, department_id, telefone, "password", cpforcnpj, dataalteracao) VALUES( 'nome', 'email', 'id do departamento criado'::uuid, 'telefone', '$2a$10$P5CkkDv41fmmoPwP3btzP.0bqBe3a3SPCkFJOGPMs9egCdTKM1xUy', 'cpf', NULL);

spring.datasource.url=jdbc:postgresql://localhost:5432/dbsgu
spring.datasource.username=seu-usuario
spring.datasource.password=sua-senha

As demais requisicoes tanto pelo swagger, quanto por postman ou insominia e pelo front so tem acesso apos o login.