Questa repository contiene il progetto realizzato per l'esame Programmazione per Il Web (WASA) per l'anno accademico 25/26 all'Universitá Sapienza.
Wasa - Text é un'app di messaggistica che permette a piú utenti di parlare fra loro, nello specifico le funzionalitá disponibili sono:
- Creazione e modifica profilo utente
- Invio / ricezione / risposta / inoltro / reazione di messaggi
- Crezione Chat e Gruppi
- Spunte blu per invio, ricezione e lettura messaggi
Per prima cosa va clonata la repo:
# Tramite SSH:
git clone [email protected]:alem1105/wasa-text.gitPer eseguire il backend:
# Buildare l'immagine
docker build -t wasa-backend . -f Dockerfile.backend
# Eseguire l'immagine
docker run -it --rm -p 3000:3000 wasa-backendPer eseguire il frontend:
# Buildare l'immagine
docker build -t wasa-frontend . -f Dockerfile.frontend
# Eseguire l'immagine
docker run -it --rm -p 8080:80 wasa-frontendOppure lanciarli entrambi tramite docker compose:
# Con build
docker-compose up --build
# Solo esecuzione
docker-compose upPer eseguire il backend:
-
Posizionarsi alla radice della cartella
wasa-text -
Compilare l'eseguile tramite Go:
user@desktop:~/wasa-text$ go build ./cmd/webapi -
Eseguire il file appena compilato:
user@desktop:~/wasa-text$ ./webapi -
Adesso é possibile fare chiamate HTTP verso
localhost:3000
Per eseguire il frontend:
- Entrare nel container con node eseguendo
open-node.sh - Una volta all'interno del container:
- Si puó eseguire il frontend e vedere modifiche live con
yarn run dev
- Compilare il frontend ed eseguirlo con:
yarn run build-prod
- Ci si puó collegare al frontend tramite
localhost:5173
Il progetto si basa sul template Fantastic Coffee Decaffeinated messo a disposizione dal docente durante il corso.
É organizzato in questo modo (mostrati solo i file piú importanti per apportare modifiche):
├── 📁 cmd
│ ├── 📁 healthcheck
│ └── 📁 webapi # Contiene il main e impostazioni come il percorso per il Database
├── 📁 demo
├── 📁 doc
│ └── ⚙️ api.yaml # Documentazione delle API
├── 📁 service
│ ├── 📁 api # Contiene tutti i file per gestire le chiamate API
│ │ ├── 📁 reqcontext # Wrapper per l'autenticazione nelle chiamate
│ ├── 📁 database # File che effettuano le Query sul DB
│ │ ├── 📁 db_errors
│ ├── 📁 globaltime
│ └── 📁 structures # Structs utilizzate nel codice
├── 📁 static # Immagini di default e caricamenti effettuati dagli utenti
│ ├── 📁 images
│ └── 📁 uploads
├── 📁 vendor
├── 📁 webui
│ ├── 📁 .yarn
│ │ ├── 📁 releases
│ ├── 📁 public
│ │ ├── 📁 bootstrap
│ │ │ ├── 📁 css
│ │ │ └── 📁 js
│ │ ├── 🖼️ defaultUserPic.jpg
│ │ ├── 📄 favicon.ico
│ │ └── 🖼️ feather-sprite-v4.29.0.svg
│ ├── 📁 src
│ │ ├── 📁 assets
│ │ ├── 📁 components
│ │ ├── 📁 router
│ │ │ └── 📄 index.js
│ │ ├── 📁 services
│ │ │ ├── 📄 axios.js
│ │ │ └── 📄 imageCache.js
│ │ ├── 📁 views # Componenti Vue.js
│ │ ├── 📄 App.vue
└── └── └── 📄 main.js
Vorrei reimplementare alcune funzionalitá che, soprattutto per via delle consegne, ho implementato in modo frettoloso ma non so se rimetteró mai mano al progetto.
Spero torni comunque utile ai futuri studenti come a me sono tornati utili i progetti degli altri per capire il template 🙏🏻
Il codice, come il template utilizzato, é sotto la licenza MIT.