Skip to content

AlexSantini10/smart-budget

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

69 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Smart Budget

Smart Budget Γ¨ un'applicazione web per la gestione del budget personale. Permette di tenere traccia delle proprie finanze, gestire conti, categorie e transazioni, e visualizzare il saldo in tempo reale.


πŸ“š Progetto Universitario

Progetto sviluppato per il corso di Ingegneria del Software del corso di laurea in Ingegneria Informatica T presso l'UniversitΓ  di Bologna (UNIBO).

πŸ‘₯ Autori

GitHub Nome
@AlexSantini10 Alex Santini
@ErJem ErJem
@lucax58 lucax58

πŸ› οΈ Tecnologie Utilizzate

Layer Tecnologia
Frontend React 18, Material UI 5, React Router DOM 6
Backend Node.js, Express 4
Database Microsoft SQL Server 2022 (via Docker)
Autenticazione JWT (JSON Web Token)
Containerizzazione Docker / Docker Compose

✨ Funzionalità

  • Registrazione e Login utente con autenticazione sicura tramite JWT
  • Gestione Conti: creazione, visualizzazione e gestione dei propri conti bancari/portafogli
  • Gestione Categorie: organizzazione delle spese per categoria
  • Gestione Transazioni: registrazione di entrate, uscite e trasferimenti tra conti
  • Dashboard Home: visualizzazione del saldo attuale e dello storico transazioni
  • Gestione Profilo: aggiornamento dei dati utente e della password

πŸ“‹ Prerequisiti


πŸš€ Installazione

1. Clonare il repository

git clone https://github.com/AlexSantini10/smart-budget.git
cd smart-budget

2. Configurare le variabili d'ambiente

Aprire il file .env nella root del progetto e impostare le variabili con i propri valori:

# Server
PORT=5000
NODE_ENV=development

# Database
DB_HOST=localhost
DB_PORT=1433
DB_USER=sa
DB_PASSWORD=YourStrongPassword
DB_NAME=smart_budget

# JWT
JWT_SECRET=your_jwt_secret_here
JWT_LIFETIME=30d

3. Avviare il database

Avviare il container Docker con Microsoft SQL Server:

cd database
MSSQL_SA_PASSWORD=YourStrongPassword docker compose up -d

4. Inizializzare il database

cd database
node db_utils/init_db.js

Nota: I file SQL in database/db_utils/sql devono essere salvati in codifica UTF-16 LE.

5. Installare le dipendenze e avviare il backend

cd server
npm install
npm test

Nota: Il comando npm test avvia il server in modalitΓ  sviluppo tramite nodemon.

Il server sarΓ  disponibile su http://localhost:5000.

6. Installare le dipendenze e avviare il frontend

In un nuovo terminale:

cd client
npm install
npm start

Il client sarΓ  disponibile su http://localhost:3000.


πŸ“‘ API Endpoints

Tutti gli endpoint sono prefissati con /api/v1.

Autenticazione (/auth)

Metodo Endpoint Descrizione Auth
POST /auth/register Registra un nuovo utente No
POST /auth/login Effettua il login No
PATCH /auth/updateUser Aggiorna i dati utente βœ…
PATCH /auth/updatePassword Aggiorna la password βœ…
GET /auth/getCurrentUser Ottieni i dati dell'utente corrente βœ…
GET /auth/logout Effettua il logout No

Conti (/conti)

Metodo Endpoint Descrizione Auth
GET /conti Lista dei conti dell'utente βœ…
GET /conti/:id Dettaglio di un conto βœ…
POST /conti Crea un nuovo conto βœ…
PATCH /conti/:id Modifica un conto βœ…
DELETE /conti/:id Elimina un conto βœ…
GET /conti/saldo Saldo totale dell'utente βœ…
GET /conti/saldo/:id Saldo di un conto specifico βœ…
GET /conti/saldoPassato/:data Saldo totale a una data passata βœ…

Categorie (/categorie)

Metodo Endpoint Descrizione Auth
GET /categorie Lista delle categorie βœ…
POST /categorie Crea una nuova categoria βœ…
DELETE /categorie/:id Elimina una categoria βœ…

Transazioni (/transazioni)

Metodo Endpoint Descrizione Auth
GET /transazioni Lista delle transazioni βœ…
GET /transazioni/:id Dettaglio di una transazione βœ…
POST /transazioni Crea una nuova transazione βœ…
PATCH /transazioni/:id Modifica una transazione βœ…
DELETE /transazioni/:id Elimina una transazione βœ…

πŸ“ Struttura del Progetto

smart-budget/
β”œβ”€β”€ client/             # Frontend React
β”‚   β”œβ”€β”€ public/
β”‚   └── src/
β”‚       β”œβ”€β”€ components/ # Componenti riutilizzabili
β”‚       β”œβ”€β”€ context/    # Context API (stato globale)
β”‚       β”œβ”€β”€ pages/      # Pagine dell'applicazione
β”‚       └── widgets/    # Widget UI
β”œβ”€β”€ server/             # Backend Node.js/Express
β”‚   β”œβ”€β”€ controllers/    # Logica degli endpoint
β”‚   β”œβ”€β”€ db/             # Connessione al database
β”‚   β”œβ”€β”€ middleware/     # Middleware (auth, error handling)
β”‚   β”œβ”€β”€ routes/         # Definizione delle route
β”‚   └── utils/          # Utility (rate limiter, ecc.)
β”œβ”€β”€ database/           # Configurazione database
β”‚   β”œβ”€β”€ db_utils/       # Script di inizializzazione DB
β”‚   β”‚   └── sql/        # File SQL (codifica UTF-16 LE)
β”‚   └── docker-compose.yaml
└── testing/            # Test delle API

πŸ”’ Sicurezza

  • Autenticazione tramite JWT con scadenza configurabile
  • Rate limiting sugli endpoint di autenticazione per prevenire attacchi brute-force
  • Gestione sicura delle password

About

Full-stack web application for personal budget management developed for the Software Engineering course, featuring account, category and transaction tracking with a React frontend, Node.js/Express backend and SQL Server database.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors