diff --git a/README.md b/README.md new file mode 100644 index 0000000..e5106a4 --- /dev/null +++ b/README.md @@ -0,0 +1,192 @@ +# Diario Conversazioni β€” Olimpic Progetto Nastri + +Applicazione web interna per il team **Olimpic Progetto Nastri**: un diario digitale per tracciare conversazioni, obiettivi, documenti e attivitΓ  del gruppo di lavoro. + +**Live:** [https://diario.olimpic.click](https://diario.olimpic.click) + +--- + +## FunzionalitΓ  principali + +### πŸ“‹ Dashboard +Pagina principale con timeline unificata degli ultimi eventi (conversazioni, aggiornamenti, documenti). Nella sidebar laterale: +- **Obiettivi in corso** con barra di avanzamento e countdown alla scadenza +- **Prossime scadenze** (prossimi 30 giorni) +- **Obiettivi scaduti** evidenziati in rosso + +### πŸ’¬ Conversazioni +- Crea e modifica verbali/appunti di riunioni e conversazioni +- Assegna **partecipanti** tra gli utenti del sistema +- Aggiungi **commenti** sotto ogni conversazione (modificabili/eliminabili dall'autore) +- Allega **documenti PDF** direttamente a una conversazione + +### 🎯 Obiettivi +- Obiettivi **collettivi** o **individuali**, assegnati a uno o piΓΉ utenti +- Stato: Aperto β†’ In corso β†’ Completato / Sospeso +- **Barra di avanzamento** (0–100%) aggiornabile con slider AJAX +- **Countdown giorni rimanenti** alla scadenza con badge colorati: + - πŸ”΄ Rosso = scaduto o ≀ 3 giorni + - 🟑 Giallo = ≀ 7 giorni + - 🟒 Verde = piΓΉ di 7 giorni +- **Aggiornamenti**: note di avanzamento sotto ogni obiettivo (modificabili/eliminabili dall'autore) + +### πŸ“… Agenda +Vista cronologica che raccoglie: +- **Prossimi eventi**: scadenze obiettivi e conversazioni future, con badge countdown +- **Ultimi 30 giorni**: eventi passati con evidenziazione scaduti + +### πŸ“„ Documenti +- Upload di file **PDF** (max 10 MB) +- Collegabili a conversazioni e/o obiettivi +- Visualizzazione e download diretto + +### πŸ‘₯ Persone +- Elenco degli utenti del sistema con statistiche: + - Numero di conversazioni a cui hanno partecipato + - Numero di obiettivi assegnati +- Profilo dettaglio con le attivitΓ  recenti dell'utente + +### πŸ” Ricerca +- **Ricerca live** (HTMX) che cerca contemporaneamente in: + - Titoli e contenuti delle conversazioni + - Titoli e descrizioni degli obiettivi + - Titoli e descrizioni dei documenti +- Risultati aggiornati in tempo reale durante la digitazione + +### πŸ” Permessi +- Accesso riservato a utenti autenticati (login required su tutte le pagine) +- Solo l'**autore** di un contenuto (o un superuser) puΓ² modificarlo/eliminarlo +- Gli altri utenti vedono il contenuto in sola lettura + +--- + +## Stack tecnologico + +| Componente | Tecnologia | +|----------------|-----------------------------------| +| Backend | Django 5.2, Python 3.10 | +| Database | PostgreSQL 14 | +| Frontend | Bootstrap 5.3.3, Bootstrap Icons | +| InterattivitΓ  | HTMX 2.0.4, django-htmx | +| Web server | Nginx (reverse proxy) + Gunicorn | +| SSL | Let's Encrypt (Certbot) | + +--- + +## Struttura del progetto + +``` +olimpic_nastri/ +β”œβ”€β”€ diario/ # App Django principale +β”‚ β”œβ”€β”€ models.py # Conversazione, Obiettivo, Aggiornamento, Commento, Documento +β”‚ β”œβ”€β”€ views.py # Tutte le view (dashboard, CRUD, agenda, ricerca) +β”‚ β”œβ”€β”€ forms.py # Form per ogni modello +β”‚ β”œβ”€β”€ urls.py # URL routing dell'app +β”‚ β”œβ”€β”€ admin.py # Configurazione admin Django +β”‚ β”œβ”€β”€ templatetags/ +β”‚ β”‚ └── custom_filters.py # Filtro |abs_val per valori assoluti +β”‚ └── migrations/ # Migrazioni database +β”œβ”€β”€ olimpic_nastri/ # Configurazione progetto Django +β”‚ β”œβ”€β”€ settings.py +β”‚ β”œβ”€β”€ urls.py +β”‚ └── wsgi.py +β”œβ”€β”€ templates/diario/ # Template HTML +β”‚ β”œβ”€β”€ base.html # Layout base (navbar, sidebar, toast) +β”‚ β”œβ”€β”€ dashboard.html # Homepage con timeline + sidebar riepilogo +β”‚ β”œβ”€β”€ agenda.html # Vista agenda eventi +β”‚ β”œβ”€β”€ login.html # Pagina di login +β”‚ β”œβ”€β”€ ricerca.html # Ricerca live +β”‚ β”œβ”€β”€ conversazioni/ # CRUD conversazioni +β”‚ β”œβ”€β”€ obiettivi/ # CRUD obiettivi +β”‚ β”œβ”€β”€ documenti/ # CRUD documenti +β”‚ └── persone/ # Lista e dettaglio persone +β”œβ”€β”€ static/ +β”‚ β”œβ”€β”€ css/style.css # Stili personalizzati (countdown, agenda, badge) +β”‚ └── js/app.js # JS (CSRF, toast, slider, ricerca live) +β”œβ”€β”€ requirements.txt # Dipendenze Python +β”œβ”€β”€ manage.py +β”œβ”€β”€ olimpic-nastri-gunicorn.service # Unit file systemd per Gunicorn +└── diario.olimpic.click.nginx # Configurazione Nginx +``` + +--- + +## Installazione locale + +### Prerequisiti +- Python 3.10+ +- PostgreSQL 14+ + +### Setup + +```bash +# Clona il repository +git clone https://git.automationdev.info/automationkriz/diario_coversazioni.git +cd diario_coversazioni + +# Crea e attiva il virtualenv +python3 -m venv nastrivenv +source nastrivenv/bin/activate + +# Installa le dipendenze +pip install -r requirements.txt + +# Configura il database PostgreSQL +sudo -u postgres psql -c "CREATE DATABASE olimpic_nastri_db;" +sudo -u postgres psql -c "CREATE USER olimpic_nastri WITH PASSWORD 'la-tua-password';" +sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE olimpic_nastri_db TO olimpic_nastri;" + +# Imposta la variabile d'ambiente per la password del DB +export OLIMPIC_DB_PASSWORD='la-tua-password' + +# Applica le migrazioni +python manage.py migrate + +# Crea un superuser +python manage.py createsuperuser + +# Avvia il server di sviluppo +python manage.py runserver +``` + +L'applicazione sarΓ  disponibile su `http://localhost:8000`. + +--- + +## Deploy in produzione + +Il sito Γ¨ deployato con **Nginx + Gunicorn** su server Linux: + +```bash +# Raccogliere i file statici +python manage.py collectstatic --noinput + +# Riavviare Gunicorn +sudo systemctl restart olimpic-nastri-gunicorn.service +``` + +I file di configurazione per il deploy sono inclusi nel repository: +- `olimpic-nastri-gunicorn.service` β€” Unit systemd per Gunicorn +- `diario.olimpic.click.nginx` β€” Virtual host Nginx con SSL + +--- + +## Modelli dati + +``` +Conversazione ──┬── CommentoConversazione + └── Documento (opzionale) + +Obiettivo ──────┬── AggiornamentoObiettivo + └── Documento (opzionale) + +User (Django) ──┬── partecipa a Conversazioni + β”œβ”€β”€ assegnato a Obiettivi + └── autore di Commenti / Aggiornamenti / Documenti +``` + +--- + +## Licenza + +Progetto interno β€” Olimpic Progetto Nastri. Tutti i diritti riservati.