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 | ErJem |
| @lucax58 | lucax58 |
| 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