Skip to content

Rafael-Bessa/family-budget-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💰 Family Budget API

REST API para Controle de Orçamento Familiar

REST API

Java Spring Boot MySQL Docker


📖 Sobre o Projeto

Meu primeiro projeto de uma API REST desenvolvida para controle de orçamento familiar. A aplicação permite que uma pessoa cadastre suas receitas e despesas do mês, bem como gerar um relatório mensal completo com totais por categoria.

✨ Funcionalidades

  • 🔐 Sistema de autenticação JWT seguro
  • 💵 Gerenciamento completo de receitas (CRUD)
  • 💳 Gerenciamento completo de despesas (CRUD)
  • 📊 Geração automática de relatórios mensais
  • 🔍 Filtros por descrição e período
  • 📝 Documentação interativa com Swagger
  • 🐳 Totalmente dockerizado para fácil deploy

🚀 Endpoints da API

Autenticação

Método Endpoint Descrição
POST /register Cadastrar usuário para começar a usar a API
POST /auth Autenticar usuário e receber token JWT

Receitas

Método Endpoint Descrição
GET /receitas Listar todas as receitas
GET /receitas/{id} Buscar receita por ID
GET /receitas?descricao={valor} Buscar receitas por descrição
GET /receitas/{ano}/{mes} Listar receitas de um período específico
POST /receitas Cadastrar nova receita
PUT /receitas/{id} Atualizar receita existente
DELETE /receitas/{id} Remover receita

Despesas

Método Endpoint Descrição
GET /despesas Listar todas as despesas
GET /despesas/{id} Buscar despesa por ID
GET /despesas?descricao={valor} Buscar despesas por descrição
GET /despesas/{ano}/{mes} Listar despesas de um período específico
POST /despesas Cadastrar nova despesa
PUT /despesas/{id} Atualizar despesa existente
DELETE /despesas/{id} Remover despesa

Relatórios

Método Endpoint Descrição
GET /resumo/{ano}/{mes} Gerar resumo mensal completo

📚 Documentação Completa

A API está com o Swagger2 implementado. Para ver a documentação interativa completa, rode a aplicação e acesse:

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

🖼️ Screenshots

Docker Rodando

Docker Containers

Swagger UI

Swagger

Testando com Insomnia

Insomnia

🛠️ Tecnologias Utilizadas

Backend & Framework

  • Java 17 - Linguagem de programação moderna e performática
  • Spring Boot 2.7.5 - Framework para desenvolvimento rápido de aplicações
  • Spring Security 5.7 - Autenticação e autorização robustas
    • 🔄 Atualização importante: Projeto utiliza a nova configuração de segurança (Spring Security 5.7+), substituindo o WebSecurityConfigurerAdapter deprecated por SecurityFilterChain com @Bean (documentação oficial)
  • Spring Data JPA - Camada de persistência simplificada
  • Hibernate - ORM para mapeamento objeto-relacional
  • Bean Validation - Validação automática de dados com anotações
  • Arquitetura REST - Padrão RESTful para APIs escaláveis

Banco de Dados

  • MySQL 8.0.30 - Sistema de gerenciamento de banco de dados relacional

Segurança

  • JWT (Json Web Token) - Autenticação stateless e segura
  • BCrypt - Algoritmo de hash para senhas

Documentação & Testes

  • Swagger 2 - Documentação interativa e automática da API
  • JUnit 4 - Framework para testes unitários
  • Mockito - Framework para criação de mocks em testes

DevOps & Ferramentas

  • Docker - Containerização da aplicação
  • Docker Compose - Orquestração de múltiplos containers
  • Maven - Gerenciamento de dependências e build
  • Eclipse IDE - Ambiente de desenvolvimento integrado
  • Insomnia - Cliente para testes de APIs REST

🚀 Como Executar Localmente

Pré-requisitos

Antes de começar, certifique-se de ter instalado:

Usando Docker Compose 🐳

Clone o repositório

git clone https://github.com/Rafael-Bessa/family-budget-api.git

Entre na pasta do projeto

cd family-budget-api

Suba os containers (MySQL + API)

docker-compose up --build

Aguarde a mensagem: "Started Application in X seconds"

Acesse:

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

About

Controle Receita Familiar (Minha primeira REST API)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors