6.6 KiB
6.6 KiB
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 (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
# 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 Gunicorndiario.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.