# 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.