Skip to content

MatteoGeusa/WASA-Homework

Repository files navigation

WASA Text - WhatsApp Clone

Questo repository contiene il progetto WASA Text, un'applicazione web che simula le funzionalità di WhatsApp, sviluppato per l'esame di Web and Software Architecture (Programmazione Web - WASA) presso l'Università La Sapienza di Roma.

🏆 Valutazione conseguita: 30/30

📝 Descrizione del Progetto

WASA Text è una piattaforma di messaggistica istantanea progettata per replicare l'esperienza utente delle moderne app di chat. Il sistema permette agli utenti di registrarsi, cercare altri utenti, avviare conversazioni private o di gruppo e scambiare contenuti multimediali.

Funzionalità Principali

  • Chat 1-to-1 e di Gruppo: Creazione dinamica di conversazioni singole e gruppi con foto personalizzabili.
  • Messaggistica Avanzata: Invio di messaggi testuali e multimediali (foto).
  • Interazioni: Possibilità di rispondere a messaggi specifici e aggiungere reazioni (emoji).
  • Inoltro: Funzionalità per inoltrare messaggi verso altre chat o utenti.
  • Gestione Profilo: Modifica del nome utente e della foto profilo.
  • Aggiornamento in Tempo Reale: Sistema di polling per ricevere nuovi messaggi e aggiornamenti di stato.

🛠️ Dettagli Tecnici (Tecnicismi)

Il progetto è stato realizzato seguendo rigorosi pattern architetturali per garantire scalabilità, manutenibilità e sicurezza.

Backend (Go / Golang)

Il cuore dell'applicazione è un server RESTful scritto in Go.

  • Routing: Utilizza julienschmidt/httprouter per un routing HTTP ad alte prestazioni e basso consumo di memoria.
  • Architettura: Struttura modulare che separa nettamente la logica di business (service/api) dall'accesso ai dati (service/database), facilitando il testing e l'evoluzione del codice.
  • API: Espone un'interfaccia REST conforme alle specifiche OpenAPI (documentata in doc/api.yaml).
  • Database: Persistenza dei dati gestita tramite SQLite, ideale per la portabilità del progetto esame, con query SQL ottimizzate e gestione transazionale.

Frontend (Vue.js 3 + Vite)

L'interfaccia utente è una Single Page Application (SPA) moderna e reattiva.

  • Framework: Sviluppata con Vue.js 3 (Composition API) per una gestione dello stato pulita e modulare.
  • Build Tool: Utilizza Vite per tempi di avvio istantanei e hot module replacement (HMR) durante lo sviluppo.
  • Styling: Integrazione di Bootstrap e CSS personalizzato per un design responsive e "pixel-perfect" simile all'originale.
  • Networking: Gestione delle chiamate HTTP tramite Axios, con intercettori per l'autenticazione (Bearer Token).

Containerizzazione & Build

Il progetto include script per l'automazione dell'ambiente di sviluppo e produzione, simulando un ambiente containerizzato per il frontend (tramite open-node.sh) per garantire che le dipendenze siano isolate e consistenti.


🚀 Istruzioni per l'Esecuzione (How to Run)

Prerequisiti

  • Go 1.25+
  • Docker (opzionale, per l'ambiente Node isolato)
  • Node.js/Yarn (se eseguito localmente senza container)

Sviluppo (Development Mode)

Puoi lanciare il backend e il frontend separatamente per lo sviluppo.

  1. Backend:

    go run ./cmd/webapi/
  2. Frontend (in un nuovo terminale, usando l'ambiente containerizzato):

    ./open-node.sh
    # (dentro il container)
    yarn run dev

Produzione / Build per la Consegna

Per generare l'eseguibile finale che include il frontend (embedded):

./open-node.sh
# (dentro il container)
yarn run build-prod
exit
# (fuori dal container)
go build -tags webui ./cmd/webapi/

Known Issues

Se riscontri crash del Javascript in produzione che non appaiono in dev, usa:

yarn run build-prod
yarn run preview

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published