Aggiunto README con documentazione completa del progetto

This commit is contained in:
automationkriz
2026-04-05 14:55:13 +00:00
parent d296353dcb
commit 312db89a6a

192
README.md Normal file
View File

@@ -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** (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
```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.