Il progetto Ruggine del Gruppo G45 è un’applicazione web sviluppata in Rust per la gestione di utenti, gruppi e messaggi, con supporto ad autenticazione e logging.
Il sistema prevede un backend realizzato in Rust e un frontend in JavaScript/Node.js e React.
L'applicazione è di tipo client/server e serve a gestire una chat di messaggi testuali composta. La chat deve inoltre prevedere la possibilità di creare gruppi di utenti per la condivisione di messaggi
- Rust >= 1.85
- Cargo (incluso in Rust)
- Node.js >= 19.1.1
- npm >= 8.19.3
- CPU: Dual core o superiore
- RAM: almeno 4 GB
- Spazio su disco: almeno 2 GB
- Librerie Rust definite in
Cargo.toml- sqlx: ORM asincrono per utilizzare il DB sqlite in RUST:
- sqlite: supporto per sqlite
- runtime-tokio-native-tls: integrazione con Tokio e TLS
- macros: permette la scrittura di query SQL scritte inline mediante la macro query!
- chrono: integrazione del DateTime per gestione di date/tempi.
- tokio: Runtime asincrono, usato per gestire async/await, I/O, ...
- full: abilita tutte le feature di Tokio
- chrono: Libreria per la gestione di date, orari, timezone e loro formattazioni.
- axum: Framework Web per la costruzione di API Rest
- serde: Libreria per la Serializzazione/Deserializzazione dei dati.
- serde_json: Abilita il supporto ai file JSON per serde
- dotenv: permette di caricare variabili d'ambiente mediante un file .env
- tower-http: Estensioni HTTP per tower, nel nostro caso specifico serve per la gestione del Cross Origin (CORS)
- tower: Libreria di astrazioni per middleware e servizi
- bcrypt: implementa l'algoritmo di hashing bcrypt, usato per proteggere le password.
- sqlx: ORM asincrono per utilizzare il DB sqlite in RUST:
- Dipendenze Node.js definite in
frontend/package.json- axios: client HTTP basato su Promise per comunicare con il backend (GET, POST, ecc.).
- react: libreria principale per la realazzione della UI e dei componenti riutilizzabili.
- react-dom: permette a React di interfacciarsi con il DOM del browser e renderizzare componenti.
- react-scripts: set di script e configurazioni di Create React App, include build, start, test e linting senza configurazione manuale.
- web-vitals: libreria per misurare metriche di performance del web (LCP, FID, CLS) e monitorare la UX.
- Clonare il repository o estrarre l’archivio:
git clone https://github.com/loris-catalano/ruggine.git cd G45 - Compilare il Progetto
cargo run
- Avviare il Server
cargo run
- Entrare nella cartella frontend
cd frontend - Installare le Dipendenze
npm install
- Avviare il Frontend
npm start
- Avvia prima il Backend in Rust (cargo run)
- Avvia il Frontend (npm start)
- Aprire il Browser e collegarsi a:
http://localhost:3000
- Autenticazione e gestione utenti: Possibilità di creare un nuovo account mediante il form di Registrazione ed effettuare il login con Username e Password.
- Messaggi: Invio e Ricezione di messaggi.
- Gruppi: Creazione e Gestione di Gruppi.
- Inviti: Inviare inviti agli altri utenti.
- .env: Variabili di ambiente per DB e server (URL del DB e porta)
- Cargo.toml: Configurazione e Dipendenze del Progetto Rust.
- package.json: Dipendenze del Frontend.
Per esempi di utilizzo delle API, consultare il file test.http.
- Autori:
- Gruppo 45 - progetto Ruggine