Una web application self-hosted per la gestione completa della raccolta differenziata domestica. Permette di configurare un calendario di raccolta, sincronizzarlo con Google Calendar e consultare un dizionario dei rifiuti, interamente personalizzabile e popolabile tramite l'upload di PDF (anche scannerizzati) grazie all'OCR.
- 📅 Calendario di Raccolta Personalizzato:
- Interfaccia web per aggiungere, modificare ed eliminare i promemoria di raccolta.
- Dati salvati in modo persistente su un database SQLite.
- 🎨 Gestione Tipi di Rifiuto:
- Aggiungi, modifica ed elimina i tipi di rifiuto (es. Organico, Vetro).
- Assegna un colore unico per ogni tipo di rifiuto per una visualizzazione chiara su Google Calendar.
- 🔄 Sincronizzazione con Google Calendar:
- Crea eventi ricorrenti settimanali sul tuo Google Calendar con un solo click.
- Gestisce la pulizia dei vecchi eventi per evitare duplicati.
- 📚 Dizionario dei Rifiuti Intelligente:
- Un elenco A-Z consultabile per sapere dove conferire ogni tipo di rifiuto.
- Gestione completa (CRUD) delle voci del dizionario.
- Importazione da PDF con OCR: Carica un PDF (anche scannerizzato) e l'app userà l'OCR Tesseract per estrarre i dati e popolare automaticamente il dizionario.
- 🚀 Pronto per la Produzione:
- Architettura basata sul server WSGI Waitress, stabile e multipiattaforma (Windows, macOS, Linux).
- Script di avvio separato (
run.py) per un facile deployment.
- 🔧 Strumenti di Diagnostica:
- Utility per il controllo di integrità e il backup del database.
- Script di test per verificare la connessione e l'autenticazione con l'API di Google.
- Backend: Python 3
- Framework: Flask
- Server WSGI (Produzione): Waitress
- Database: SQLite 3
- Google API: Google Calendar API v3
- PDF e OCR: PyMuPDF, Pytesseract e Tesseract OCR (dipendenza di sistema)
- Frontend: HTML5, Bootstrap 5
Segui questi passaggi per mettere in funzione l'applicazione.
Questa è l'unica dipendenza esterna a Python.
- Windows: Scarica l'installer da UB Mannheim. Importante: Durante l'installazione, assicurati di selezionare il pacchetto della lingua Italiano (
Italian). - macOS (con Homebrew):
brew install tesseract tesseract-lang - Linux (Debian/Ubuntu/Raspberry Pi OS):
sudo apt update && sudo apt install tesseract-ocr tesseract-ocr-ita
# Clona il repository (o semplicemente scarica e scompatta lo ZIP)
git clone https://.../tuo-progetto.git
cd tuo-progetto
# (Consigliato) Crea un ambiente virtuale
python -m venv venv
source venv/bin/activate # Su Windows: venv\Scripts\activate
# Installa tutte le dipendenze Python
pip install -r requirements.txt- Vai alla Google Cloud Console e crea un nuovo progetto.
- Abilita l'API di Google Calendar per il tuo progetto.
- Vai a Credenziali >
+ CREA CREDENZIALI> ID client OAuth. - Come Tipo di applicazione, seleziona Applicazione desktop.
- Scarica il file JSON, rinominalo in
credentials.jsone mettilo nella cartella principale del progetto. - Vai alla Schermata di consenso OAuth, nella sezione Tester, clicca su
+ ADD USERSe aggiungi il tuo indirizzo email Google.
Esegui questo comando una sola volta per creare il file del database (schedule.db) con tutte le tabelle e i dati di default.
python init_db.pyPer avviare l'app con il server stabile Waitress. Questo è il metodo da usare per il funzionamento 24/7.
python run.pyL'app sarà disponibile sulla tua rete locale all'indirizzo http://<IL_TUO_INDIRIZZO_IP>:8000.
Per lanciare l'app con il server di debug di Flask (che si ricarica automaticamente alle modifiche).
python app.pyL'app sarà disponibile su http://localhost:5000.
Nella cartella utils/ troverai degli script utili da lanciare dalla cartella principale.
- Testare la connessione a Google:
python utils/test_google_api.py
- Controllare e fare il backup del database:
python utils/db_utils.py
📦 Avvio tramite docker container
-
Per avviare l'applicazione in background:
docker-compose up -d
La prima volta, Docker costruirà l'immagine (potrebbe richiedere qualche minuto). L'app sarà disponibile su
http://localhost:8000. -
Per vedere i log in tempo reale:
docker-compose logs -f
-
Per fermare l'applicazione:
docker-compose down
-
Per ricostruire l'immagine dopo aver modificato il codice:
docker-compose build
Questo progetto è rilasciato sotto la Licenza MIT.