Copyright (c) 2024 Alex Santini
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 sviluppato per il corso di Ingegneria del Software del corso di laurea in Ingegneria Informatica T presso l'Università di Bologna (UNIBO).
| GitHub | Nome |
|---|---|
| @AlexSantini10 | Alex Santini |
| @ErJem | Jemel Merouche |
| @lucax58 | Luca Marongiu |
| 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 |
- 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
git clone https://github.com/AlexSantini10/smart-budget.git
cd smart-budgetAprire 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=30dAvviare il container Docker con Microsoft SQL Server:
cd database
MSSQL_SA_PASSWORD=YourStrongPassword docker compose up -dcd database
node db_utils/init_db.jsNota: I file SQL in
database/db_utils/sqldevono essere salvati in codifica UTF-16 LE.
cd server
npm install
npm testNota: Il comando
npm testavvia il server in modalità sviluppo tramitenodemon.
Il server sarà disponibile su http://localhost:5000.
In un nuovo terminale:
cd client
npm install
npm startIl client sarà disponibile su http://localhost:3000.
Tutti gli endpoint sono prefissati con /api/v1.
| 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 |
| 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 | ✅ |
| Metodo | Endpoint | Descrizione | Auth |
|---|---|---|---|
| GET | /categorie |
Lista delle categorie | ✅ |
| POST | /categorie |
Crea una nuova categoria | ✅ |
| DELETE | /categorie/:id |
Elimina una categoria | ✅ |
| 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 | ✅ |
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
- Autenticazione tramite JWT con scadenza configurabile
- Rate limiting sugli endpoint di autenticazione per prevenire attacchi brute-force
- Gestione sicura delle password