An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

README

          


Java 17
Spring Boot
Spring Security
MongoDB
Maven
Lombok
JWT

---

# 💰 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