la web app self-hostabile per calcolare la media dei voti su classeviva
anche quando l'istituto ha disattivato la funzione ufficiale.
che media ho? è una semplice web app flask, self-hostabile via docker, che ti permette di:
- visualizzare la media dei voti su classeviva
- fare simulazioni e previsioni
- usare l'app anche offline
- installarla come pwa su smartphone
il tutto tramite una ui chiara, pulita e mobile-friendly.
- 📱 pwa (progressive web app) — installabile su android e ios
- 🔄 supporto offline — funziona anche senza connessione (con dati già scaricati)
- 🎨 design responsive — perfetto su mobile e desktop
- 📊 calcolo automatico della media
- 🎯 calcoli & previsioni — scopri che voti ti servono per raggiungere un obiettivo
- 📈 grafici interattivi — visualizza l'andamento nel tempo
- 💾 esportazione csv — porta i tuoi voti dove vuoi
- 🆓 100% free & open source — con controlli codeql
l'app supporta due modalità:
tutto in un unico container: frontend + api.
- ✅ semplice da configurare
- ✅ ideale per uso locale/domestico
- ✅ basta un
docker compose up
frontend su vercel, api locale con tunnel https.
- ✅ frontend accessibile ovunque
- ✅ api su ip residenziale (bypass akamai waf)
- ✅ richiede ngrok/cloudflare tunnel
modalità all-in-one: frontend + api nello stesso container.
- docker & docker compose 👉 https://docs.docker.com/engine/install/
curl -fsSL https://raw.githubusercontent.com/gablilli/chemediaho/refs/heads/main/docker-compose.yml -o docker-compose.ymldocker compose up -dl'app sarà disponibile su porta 8001. apri 👉 http://localhost:8001
per utenti avanzati: frontend su vercel, api locale.
- classeviva usa akamai waf che blocca richieste da datacenter
- l'api deve girare su un ip residenziale (casa tua)
- il frontend può stare su vercel (con tutti i benefici che ne conseguono)
STANDALONE_MODE=false HTTPS_ENABLED=true API_KEY=tua-chiave-segreta python app.pyNote
L'API_KEY non è obbligatoria, ma consigliata.
È molto importante che HTTPS_ENABLED sia true.
ngrok http 8001
# oppure cloudflare tunnel- generata automaticamente al primo avvio (
secret_key.txt) - permessi 600
- persistita via volume docker
- proteggi l'accesso al file
- in produzione usa
secret_keyo secret manager - supporto a docker secrets incluso
esempio:
environment:
- SECRET_KEY_FILE=/run/secrets/flask_secret
secrets:
- flask_secret
secrets:
flask_secret:
external: truese usi vercel + api locale e ricevi 401 dopo il login:
- assicurati che
HTTPS_ENABLED=truesia impostato - usa un tunnel https (ngrok, cloudflare)
- verifica che
API_BASEinconfig.runtime.jssia corretto
docker logs chemediaho- verifica credenziali classeviva
- assicurati che la porta 8001 sia aperta
- apri una issue
grazie a:
- classeviva official endpoints
- sysregister di syswhite.dev
- cvvsimpleavgrage
per aver reso possibile tutto questo.
📚 studia meno i calcoli, pensa più ai voti.