Aggiunto README con documentazione completa del progetto
This commit is contained in:
192
README.md
Normal file
192
README.md
Normal 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** (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.
|
||||||
Reference in New Issue
Block a user