Giter Site home page Giter Site logo

api-gerenciamento-de-pessoas's Introduction

API Gerenciamento de Pessoas

Status do Projeto: Concluído

Sobre o Projeto

O projeto em si consiste em uma API básica desenvolvida em Java utilizando o framework Spring Boot. O principal objetivo com o desenvolvimento desse projeto foi, principalmente, colocar em prática conhecimentos envolvendo o desenvolvimento de APIs com Spring boot e Spring Security. Além disso, ao longo do desenvolvimento, achei que seria interessante fazer a integração dessa api com o front-end. Nesse contexto, usei React para fazer essa integração e consequentemente pude, além de aprender react, revisar conteúdos de CSS e JavaScript e também de BootStrap. Por fim, fiz a conteinerização desse projeto para revisar Docker e aprender a trabalhar com vários containers, nesse caso, docker compose.

Entidades

Como dito anteriormente, a API em si é bem simples e possui apenas as duas entidades citadas abaixo com seus atributos:

  • Pessoa
    • Nome
    • Sobrenome
    • Data de Nascimento
    • Email
    • Senha
  • Endereço
    • CEP
    • Logradouro
    • Complemento
    • UF
    • Cidade
    • Número
    • Tipo do Endereço (Principal ou Secundário)

Nesse ponto em específico, optei por colocar o email e senha (usados para autenticação/autorização) na própria entidade de Pessoa apenas para não aumentar o escopo e a complexidade do projeto. No entanto, seria totalmente possível (ou até preferível) criar uma entidade a parte para representar a "conta de acesso" da pessoa no sistema.

Funcionalidades (separadas por perfil)

Perfil de Administrador

  • Consultar todas as pessoas cadastradas.
  • Consultar o endereço das pessoas cadastradas.

Perfil de usuário padrão

  • Cadastro no sistema.

  • Atualizar seus dados no sistema. (Nome, Sobrenome e Data de Nascimento)

  • Cadastrar um ou mais endereço na plataforma.

  • Consultar os endereços que fora cadastrados.

  • Fazer login no sistema. (Ambos perfis fazem login no sistema)

Com relação as funcionalidades, o administrador não pode alterar os dados de nenhum usuário comum, apenas visualizar os mesmos, no entanto, um usuário comum não consegue visualizar (nem alterar) os dados de nenhum outro usuário cadastrado. Aproveitei do próprio Spring Security para implementar essa camada extra de segurança.

Como executar a aplicação

Sem docker

Para executar a aplicação sem uso do docker, são necessários os seguintes passos:

  1. Clonar o repositório

No terminal do seu sistema operacional, cole o comando abaixo:

git clone https://github.com/phdfreitas/api-gerenciamento-de-pessoas.git

  1. Pelo próprio terminal, vá até a pasta onde está o front-end do projeto
cd api-gerenciamento-de-pessoas

cd frontend
  1. Dentro da pasta frontend execute os comandos
npm install

npm start
  1. Abra o projeto da pasta backend no seu editor de código ou IDE, abra o arquivo /resources/application.properties e altere as configurações de usuário e senha do banco de dados, se necessário
spring.datasource.username=root
spring.datasource.password=root

No arquivo application.properties, apenas as linhas acima são as que precisam ser alteradas

  1. Feito isso, é possível executar a aplicação do backend e agora toda a aplicação estará rodando.

Observação: Para executar a aplicação sem o docker, é preciso ter instalado em sua máquina a versão 11 do Java. alguma versão do Maven e o banco de dados MySql.

Com Docker

  1. Clonar o repositório No terminal do seu sistema operacional, cole o comando abaixo:

git clone https://github.com/phdfreitas/api-gerenciamento-de-pessoas.git

  1. Execute os comandos abaixo
cd api-gerenciamento-de-pessoas

docker-compose up

Observação: Optanto por executar dessa forma, é obrigatório ter o docker instalado na sua máquina. No entanto, além disso, é preciso que não existam serviços rodando nas portas 8080, 3308 e 3000, que serão usadas localmente pelos containers

Tecnologias Usadas

  • Java 11
  • Spring Boot 2.7.7
  • Spring Security
  • React
  • MySQL

Informações adicionais

  • Como o objetivo da aplicação não era ser "grande" (ou complexa), algumas coisas não foram implementadas propositalmente, por exemplo:
    • Refresh Token (Backend)
    • Validação de Dados (Front e Backend)
      • Email
      • Senha
      • Data de Nascimento
    • Mensagens de feedback para o usuário (Frontend)
      • Cadastro
      • Login
      • Cadastro de Novo endereço
    • Excluir usuário (Front e Backend)

De maneira geral, outras funcionalidades tanto no frontend quanto no backend poderiam ter sido implemantadas, mas o resultado final do projeto alcançous o objetivo inicial do seu desenvolvimeto.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.