Files
diario_coversazioni/README.md
2026-04-05 14:55:13 +00:00

6.6 KiB
Raw Blame History

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


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 (0100%) 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

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

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