Skip to content

karoldm/bookstore-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API de Gerenciamento de livrarias! Esta API foi desenvolvida utilizando Spring Boot e oferece funcionalidades para gerenciar os livros da loja e adicionar funcionários que podem fazer login na loja para ajudar no controle de estoque.

Funcionalidades

Autenticação e Autorização

  • Cadastro de Usuários: Os usuários podem se cadastrar fornecendo informações básicas como nome de usuário, nome, senha e informações da loja (que incluem banner, nome da loja, slogan, etc).
  • Login: Autenticação segura utilizando Spring Security e JWT (JSON Web Tokens) pelos administradores da loja ou pelo seus funcionários.

Gerenciamento de Perfil

  • Atualizar Perfil: Os usuários podem alterar o nome
  • Atualizar Senha: Os usuários pode trocar de senha

Gerenciamento de Livros

  • Administradores da loja podem cadastrar, editar ou excluir livros da livraria.

Gerenciamento de Funcionários

  • Administradores podem cadastrar novos funcionários na loja. Esses funcionários tem um login próprio e poodem visulizar os livros e controler o estoque.

Documentação com Swagger

  • Swagger UI: A API está documentada utilizando Swagger, permitindo uma fácil visualização e teste dos endpoints diretamente no navegador.

Acesso baseado em Roles

  • Todas as operações são são seguras e exigem autenticação do usuário, validação da role atribuída ao usuário, bem como se ele possui relação com a loja que está operando.

Tecnologias e Ferramentas Utilizadas

  • Spring Boot: Framework principal para desenvolvimento da API.
  • Spring Security: Para autenticação e autorização.
  • Spring Data JPA: Para persistência de dados e interação com o banco de dados.
  • JWT (JSON Web Tokens): Para autenticação segura.
  • Swagger: Para documentação da API.
  • AWS S3: Para armazenamento das imagens.
  • Banco de Dados: Foi utilizado um banco de dados relacional PostgreSQL para armazenar as informações necessárias.

Como Executar o Projeto

Pré-requisitos

  • Java 17
  • Maven
  • Banco de dados PostgreSQL configurado com nome bookstore

Configuração

  1. Clone o repositório:

    git clone git@github.com:karoldm/bookstore-api.git
    cd bookstore-api
  2. Configure o arquivo application.properties:

    spring.application.name=bookstore
    server.port=9000
    
    api.security.token.expiration=4
    api.security.token.refresh-expiration=168
    
    spring.jpa.show-sql=true
    spring.jpa.hibernate.ddl-auto=update
    
    spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
    spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
    
    spring.web.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/
    
    spring.profiles.active=dev

Configure o arquivo application-dev.properties:

spring.datasource.url=jdbc:postgresql://localhost:5432/bookstore
spring.datasource.username=postgres
spring.datasource.password=root
api.security.token.secret="JWT-TOKEN"

api.aws.access-key=YOUR_ACCESS_KEY
api.aws.secret-key=YOUR_SECRET_KEY
api.aws.bucket-url=YOUR_BUCKET_URL
  1. Excecute o projeto

Métricas do Sonarqube

image

  • Se você possui o Sonarqube instalado pode verificar a qualidade do sistema com o comando
  mvn clean verify sonar:sonar -Dsonar.projectKey=[project-key] -Dsonar.projectName='[project-name]' -Dsonar.host.url=http://localhost:9001 -Dsonar.token=[project-token] -Dsonar.coverage.jacoco.xmlReportPaths=target/site/jacoco/jacoco.xml -Dsonar.java.binaries=target/classes -Dsonar.junit.reportPaths=target/surefire-reports -Dsonar.verbose=true 

Diagramas do Sistema

Casos de uso

image

Modelagem

image

Deploy

API hospedada no Render

Banco de dados hospedado no Koyeb

Contribuição

Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull request ❤️

Releases

No releases published

Packages

No packages published