una semplice web app flask self-hostabile via docker per visualizzare la media dei voti di classeviva anche se l'istituto ha disattivato la funzione ufficiale. sysregister ui-based.
- 📱 PWA (progressive web app) - installabile su dispositivi mobili
- 🔄 supporto offline - funziona anche senza connessione (con i dati scaricati precedentemente)
- 🎨 design responsive - ottimizzato per mobile e desktop
- 📊 calcolo media - visualizza automaticamente la media dei voti
- 🎯 calcoli & previsioni - calcola quali voti ti servono per raggiungere un obiettivo e prevedi l'impatto di voti futuri sulla tua media
- 📈 grafici interattivi - visualizza i tuoi progressi nel tempo
- 💾 esportazione dati - esporta i tuoi voti in formato CSV
- 🆓 codice 100% free and opensource con controllo codeql - così puoi stare tranquillo.
- python 3.6 o superiore
- un account classeviva attivo
git clone https://github.com/gablilli/chemediaho.git
cd chemediahopip install -r requirements.txtesegui lo script principale dentro la cartella:
python app.pypoi apri il browser su http://localhost:5000, inserisci le tue credenziali di classeviva e… buona media! 🧮
- docker e docker compose installati 👉 guida ufficiale: https://docs.docker.com/engine/install/
git clone https://github.com/gablilli/chemediahodalla cartella del progetto:
docker compose up -dnota: i log non sono ancora implementati.
una volta avviato, l’interfaccia web sarà disponibile sulla porta 5000 di tutte le interfacce del computer.
se usi ubuntu o hai ufw attivo, abilita la porta:
sudo ufw allow 5000di default, l'app funziona su http (adatto per uso locale/domestico). se esegui l'app dietro un proxy https o un load balancer, imposta la variabile d'ambiente HTTPS_ENABLED=true:
# in compose.yml, aggiungi:
environment:
- FLASK_ENV=production
- HTTPS_ENABLED=truequesto abiliterà il flag Secure sui cookie di sessione, garantendo che vengano inviati solo su connessioni https.
l'app può essere installata sul tuo dispositivo mobile per un'esperienza nativa:
- apri l'app nel browser
- tocca il menu (⋮) e seleziona "installa app" o "aggiungi a schermata home"
- conferma l'installazione
- apri l'app in safari
- tocca il pulsante condividi (□↑)
- scorri e seleziona "aggiungi a home"
- conferma l'installazione
una volta installata, l'app funzionerà come un'applicazione nativa!
l'app genera automaticamente una chiave segreta (secret_key.txt) al primo avvio per gestire le sessioni in modo sicuro. questa chiave:
- è salvata in
secret_key.txtnella directory dell'app con permessi restrittivi (600 - solo proprietario può leggere/scrivere) - non deve essere committata su git (già esclusa da .gitignore)
- in docker, è persistita tramite volume mount per funzionare anche dopo i restart dei container
- la chiave è salvata in chiaro sul file system - proteggi l'accesso al file
- le credenziali nel cookie di sessione sono criptate con questa chiave
- per ambienti di produzione, considera l'uso di gestori di segreti esterni (es. Docker secrets, Kubernetes secrets, HashiCorp Vault)
- usa sempre la variabile d'ambiente
SECRET_KEYin produzione invece del file - assicurati che il file
secret_key.txtsia leggibile solo dall'utente che esegue l'app (permessi 600)
esempio per produzione con docker secrets:
# compose.yml per produzione
services:
flask:
environment:
- SECRET_KEY_FILE=/run/secrets/flask_secret
secrets:
- flask_secret
secrets:
flask_secret:
external: truese qualcosa non funziona, controlla eventuali errori nel terminale e assicurati che l’installazione non abbia restituito messaggi di errore.
- classeviva-official-endpoints
- sysregister del buon syswhite.dev
- CVVSimpleAvgrage
per aver reso possibile tutto questo ❤️