https://github.com/ramoncbarbosa/financial_tracker_backend
A secure and flexible backend for managing shared personal finances, supporting multi-user accounts, JWT-based authentication, and comprehensive transaction management. Built with Java, Spring Boot, and MongoDB.
https://github.com/ramoncbarbosa/financial_tracker_backend
api backend java maven mongodb nosql spring spring-boot
Last synced: 3 months ago
JSON representation
A secure and flexible backend for managing shared personal finances, supporting multi-user accounts, JWT-based authentication, and comprehensive transaction management. Built with Java, Spring Boot, and MongoDB.
- Host: GitHub
- URL: https://github.com/ramoncbarbosa/financial_tracker_backend
- Owner: ramoncbarbosa
- Created: 2025-08-18T11:20:01.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-08-18T11:42:50.000Z (10 months ago)
- Last Synced: 2025-09-06T04:45:30.096Z (10 months ago)
- Topics: api, backend, java, maven, mongodb, nosql, spring, spring-boot
- Language: Java
- Homepage: https://ramonbarbosa.vercel.app/
- Size: 12.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
---
# 💰 Projeto: Backend de Gerenciamento Financeiro Pessoal / Project: Personal Financial Management Backend
---
## 📌 Índice / Table of Contents
- [🚀 Visão Geral / Overview](#-visão-geral--overview)
- [🌟 Diferenciais / Highlights](#-diferenciais--highlights)
- [🛠️ Tecnologias / Technologies](#-tecnologias--technologies)
- [📁 Estrutura do Projeto / Project Structure](#-estrutura-do-projeto--project-structure)
- [⚙️ Funcionalidades / Functionalities](#-funcionalidades--functionalities)
- [🚀 Como Executar / How to Run](#-como-executar--how-to-run)
---
## 🚀 Visão Geral / Overview
### 🇧🇷 Português
Este backend é parte de um sistema de **gestão financeira pessoal compartilhada**, ideal para casais, colegas ou grupos que dividem despesas. Ele oferece uma estrutura segura e flexível para registrar receitas, despesas, visualizar dados individuais e consolidados, e gerar análises financeiras completas.
### 🇺🇸 English
This backend powers a **shared personal finance management system**, ideal for couples, roommates, or groups who manage expenses together. It provides a secure and flexible structure to log income, expenses, view individual and consolidated data, and generate full financial insights.
---
## 🌟 Diferenciais
- ✅ Conta compartilhada entre múltiplos usuários
- ✅ Visualização separada ou consolidada de transações
- ✅ Segurança com autenticação baseada em JWT
- ✅ Estrutura preparada para extensões analíticas e dashboards
- ✅ CRUD completo para transações financeiras
## 🌟 Highlights
- ✅ Shared account between multiple users
- ✅ Separate or consolidated transaction views
- ✅ Security with JWT-based authentication
- ✅ Structure ready for analytical extensions and dashboards
- ✅ Full CRUD for financial transactions
## 🛠️ Tecnologias / Technologies
### 🇧🇷 Backend (Java)
- **Java 17+** – Versão LTS da linguagem
- **Spring Boot 3.3.x** – Desenvolvimento rápido e simplificado
- **Spring Web** – Criação de APIs RESTful
- **Spring Data MongoDB** – Persistência com esquema flexível
- **Spring Security** – Autenticação e autorização
- **Lombok** – Redução de boilerplate
### 🇺🇸 Backend (Java)
- **Java 17+** – LTS version of the language
- **Spring Boot 3.3.x** – Rapid and simplified development
- **Spring Web** – Creation of RESTful APIs
- **Spring Data MongoDB** – Schema-flexible persistence
- **Spring Security** – Authentication and authorization
- **Lombok** – Reduces boilerplate code
---
### 🗄️ Banco de Dados / Database
- **MongoDB** – Banco NoSQL orientado a documentos / Document-oriented NoSQL database
---
### ⚙️ Ferramentas de Desenvolvimento / Development Tools
- **Maven** – Gerenciamento de dependências / Dependency management
- **Spring Boot DevTools** – Recarga automática no desenvolvimento / Auto-reload during development
- **Swagger / OpenAPI** – Documentação e testes da API / API documentation and testing
---
## 📁 Estrutura do Projeto / Project Structure
```bash
📁 Financial Tracker
├── .mvn
│ └── wrapper
│ └── maven-wrapper.properties
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com.magodev.financialtracker
│ │ │ └── FinancialTrackerApplication.java
│ │ └── resources
│ │ ├── application.properties
│ │ ├── static/
│ │ └── templates/
│ └── test
│ └── java/com.magodev.financialtracker
│ └── FinancialTrackerApplicationTests.java
├── .gitignore
├── pom.xml
└── README.md
```
## ⚙️ Funcionalidades / Functionalities
### 🔐 Autenticação e Autorização / Authentication & Authorization
#### 🇧🇷
Utiliza **JWT (JSON Web Token)**. Cada usuário possui login/senha e acessa seus dados por meio de um token.
- **Login:**
`POST /api/auth/login` → Retorna um JWT válido
- **Proteção:**
Endpoints como `/api/transactions` exigem token JWT no cabeçalho `Authorization`
#### 🇺🇸
Uses **JWT (JSON Web Token)**. Each user logs in with credentials and accesses their data using a token.
- **Login:**
`POST /api/auth/login` → Returns a valid JWT
- **Protection:**
Endpoints like `/api/transactions` require a JWT token in the `Authorization` header
---
### 🧠 Modelagem de Dados / Data Modeling
#### 🇧🇷
- **Usuários:** armazenados na coleção `users`
- **Conta Compartilhada:** única conta em `accounts`, vinculada a 2 ou mais usuários
- **Transações:** vinculadas ao `userId` de quem registrou e ao `accountId` da conta
#### 🇺🇸
- **Users:** stored in the `users` collection
- **Shared Account:** one account in `accounts`, linked to 2 or more users
- **Transactions:** linked to the `userId` who created it and the couple’s `accountId`
---
### 📲 Endpoints da API / API Endpoints
#### 🇧🇷 Exemplos de Endpoints
- `GET /api/transactions/individual` – Transações do usuário logado
- `GET /api/transactions/shared` – Transações consolidadas da conta
- `POST /api/transactions` – Adiciona transação
- `PUT /api/transactions/{id}` – Atualiza transação
- `DELETE /api/transactions/{id}` – Remove transação
#### 🇺🇸 Example Endpoints
- `GET /api/transactions/individual` – Transactions by the logged-in user
- `GET /api/transactions/shared` – All transactions in the shared account
- `POST /api/transactions` – Add new transaction
- `PUT /api/transactions/{id}` – Update transaction
- `DELETE /api/transactions/{id}` – Delete transaction
---
## 🚀 Como Executar / How to Run
### 🇧🇷 Português
1. **Pré-requisitos:**
- JDK 17 ou superior
- Maven instalado
- MongoDB local ou em nuvem (ex: Atlas)
2. **Configuração:**
- Abra o projeto em sua IDE
- Edite o arquivo `src/main/resources/application.properties` com a URI do MongoDB
3. **Execução:**
- Rode a classe `FinancialTrackerApplication.java`
---
### 🇺🇸 English
1. **Prerequisites:**
- JDK 17 or higher
- Maven installed
- MongoDB (local or cloud, e.g., Atlas)
2. **Configuration:**
- Open the project in your IDE
- Edit `src/main/resources/application.properties` with your MongoDB URI
3. **Run:**
- Run the `FinancialTrackerApplication.java` class