Skip to content

About

API REST Java/Spring Boot para gerenciamento de farmácia, deploy live no Render

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

💊 Farmácia API REST

API RESTful para gerenciamento de estoque e vendas de uma rede de farmácias

Desenvolvida com Java e Spring Boot, seguindo arquitetura MVC, com autenticação segura via JWT, persistência de dados com PostgreSQL e publicada em ambiente de produção na Render.

Projeto desenvolvido durante o Bootcamp Java Full Stack da Generation Brasil 🚀


Java Spring Boot Spring Security PostgreSQL JWT Maven Swagger Render


🌐 Projeto em Produção

Recurso Link
🔗 API projeto-final-bloco-02-llyf.onrender.com
📘 Swagger UI /swagger-ui/index.html
🗄️ Banco de Dados PostgreSQL (Neon.tech)
☁️ Hospedagem Render

⚠️ Observação: como a aplicação está hospedada no plano gratuito do Render, o primeiro acesso pode levar entre 50 e 60 segundos devido ao modo de inatividade (sleep mode).


🚀 Tecnologias Utilizadas

Tecnologia Descrição
☕ Java 17 Linguagem principal da aplicação
🍃 Spring Boot 3 Framework backend
🔒 Spring Security Segurança da aplicação
🔑 JWT Autenticação via Bearer Token
🗂️ Spring Data JPA Persistência de dados
🧩 Hibernate ORM
🐘 PostgreSQL Banco de dados em produção
🧪 H2 Database Banco de dados para desenvolvimento
✅ JUnit 5 Testes unitários
✅ Spring Boot Test Testes da aplicação
📄 SpringDoc OpenAPI Documentação da API
📘 Swagger UI Interface para testes da API
📦 Maven Gerenciador de dependências
🛠️ Insomnia Testes dos endpoints

📌 Funcionalidades

👤 Autenticação e Usuários

  • Cadastro de usuários
  • Criptografia de senhas utilizando BCryptPasswordEncoder
  • Login com geração de Token JWT
  • Proteção das rotas da aplicação
  • Listagem de usuários cadastrados

🏷️ Categorias

  • CRUD completo
  • Busca por ID
  • Busca por nome (case insensitive)
  • Relacionamento One-to-Many (1:N) com Produtos

📦 Produtos

  • CRUD completo
  • Controle de estoque
  • Associação obrigatória com Categoria
  • Associação obrigatória com Usuário responsável pelo cadastro
  • Busca por ID
  • Busca por nome (case insensitive)

🗄️ Modelagem do Banco de Dados

O projeto utiliza os seguintes relacionamentos entre as entidades:

  • Uma Categoria possui vários Produtos
  • Um Produto pertence a uma Categoria
  • Um Usuário pode cadastrar vários Produtos
  • Um Produto pertence a um Usuário
                       Categoria
                 +----------------------+
                 |          id          |
                 |         nome         |
                 |       descricao      |
                 +----------------------+
                            |
                          1 |
                            |
                          N |
                            ▼
                        Produto
                +-----------------------+
                |           id          |
                |          nome         |
                |       descricao       |
                |       quantidade      |
                |          preco        |
                |      categoria_id     |
                |       usuario_id      |
                +-----------------------+
                            ▲
                          N |
                            |
                          1 |
                            |
                        Usuario
                +-----------------------+
                |           id          |
                |          nome         |
                |        usuario        |
                |         senha         |
                |          foto         |
                +-----------------------+

🔐 Segurança

A API utiliza autenticação baseada em JWT (JSON Web Token).

Rotas Públicas

POST /usuarios/cadastrar
POST /usuarios/logar

Rotas Protegidas

Todas as demais rotas exigem um Bearer Token válido enviado no header da requisição.


📡 Endpoints

Usuários

Método Endpoint Proteção
POST /usuarios/cadastrar 🌐 Público
POST /usuarios/logar 🌐 Público
GET /usuarios/all 🔒 Protegido

Categorias

Método Endpoint Proteção
GET /categorias 🔒 Protegido
GET /categorias/{id} 🔒 Protegido
GET /categorias/nome/{nome} 🔒 Protegido
POST /categorias 🔒 Protegido
PUT /categorias 🔒 Protegido
DELETE /categorias/{id} 🔒 Protegido

Produtos

Método Endpoint Proteção
GET /produtos 🔒 Protegido
GET /produtos/{id} 🔒 Protegido
GET /produtos/nome/{nome} 🔒 Protegido
POST /produtos 🔒 Protegido
PUT /produtos 🔒 Protegido
DELETE /produtos/{id} 🔒 Protegido

📝 Exemplos de Requisição

Cadastrar Usuário
{
    "nome": "João Victor Ribeiro",
    "usuario": "joao@email.com",
    "senha": "12345678",
    "foto": "https://..."
}
Login
{
    "usuario": "joao@email.com",
    "senha": "12345678"
}
Criar Categoria
{
    "nome": "Medicamentos",
    "descricao": "Remédios, analgésicos e antitérmicos"
}
Criar Produto
{
    "nome": "Doril 500mg",
    "descricao": "Analgésico para alívio de dores",
    "quantidade": 100,
    "preco": 14.90,
    "categoria": {
        "id": 1
    },
    "usuario": {
        "id": 1
    }
}

🧪 Testes

A aplicação possui testes desenvolvidos utilizando:

  • JUnit
  • Spring Boot Test

Os testes garantem o correto funcionamento das regras de negócio, autenticação, persistência de dados e dos principais endpoints da API.


⚙️ Como Executar o Projeto Localmente

Pré-requisitos

  • Java 17 ou superior
  • Maven instalado (ou Maven Wrapper)
  • Uma IDE de sua preferência (STS, Eclipse, IntelliJ IDEA ou VS Code)

1. Clone o repositório

git clone https://github.com/jvribe/projeto-final-bloco-02.git

2. Entre na pasta do projeto

cd projeto-final-bloco-02

3. Configure o perfil de desenvolvimento

No arquivo src/main/resources/application.properties, configure:

spring.profiles.active=dev

4. Execute a aplicação

mvn spring-boot:run

Ou execute a classe principal do Spring Boot diretamente pela sua IDE.


📖 Documentação da API

Ambiente URL
💻 Local http://localhost:8080/swagger-ui/index.html
☁️ Produção projeto-final-bloco-02-llyf.onrender.com/swagger-ui

👨‍💻 Desenvolvedor

João Victor Ribeiro

GitHub LinkedIn


Desenvolvido com ☕ Java + 🍃 Spring Boot durante o Bootcamp Java Full Stack da Generation Brasil 🚀

About

API REST Java/Spring Boot para gerenciamento de farmácia, deploy live no Render

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages