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