Skip to content

Latest commit

 

History

149 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🗓️ Calendario Presenze — Gestione permessi e presenze per studi e PMI

License: MIT Python 3.12+ Django

App Django per la gestione presenze, permessi e smart working, pensata per studi professionali e PMI. In produzione dal 2024. Esportazione Excel mensile per il consulente del lavoro.


Funzionalità principali

  • Tipi di assenza: ROL, ferie, malattia, ex festività, permesso lutto, 104, straordinario, permesso studio
  • Smart working: pianificazione settimanale fissa + eccezioni giornaliere
  • Saldi ore: gestione manuale e automatica per ogni dipendente
  • Part-time: percentuale configurabile per dipendente, orari personalizzati
  • Permesso studio: monte ore annuo e pluriennale configurabile
  • Pausa pranzo: esclusa automaticamente dal calcolo ore (personalizzabile)
  • Export mensile: report Excel con riepilogo presenze per consulente del lavoro
  • Notifiche email: promemoria ferie accumulate via Celery Beat
  • UI responsiva: calendario mensile navigabile, tabella presenze filtrabile

Stack tecnico

Django 5 + Gunicorn       ← Web framework + WSGI server
PostgreSQL 14              ← Database principale
Redis 7                    ← Cache + message broker Celery
Celery (worker + beat)     ← Task asincroni e schedulati
Docker Compose             ← Deploy completo in un comando

Architettura

┌─── web (Django + Gunicorn)        [Port 8050]
├─── redis (Cache + Broker)         [Port 6379]
├─── celery-worker (Task asincroni)
├─── celery-beat  (Task schedulati)
├─── db (PostgreSQL 14)             [Interno]
└─── flower (Monitor Celery)        [Port 5555, profilo monitoring]

Quick Start

Prerequisiti

  • Docker + Docker Compose
  • (Solo produzione) Un dominio con SSL

1. Clona e configura

git clone https://github.com/bertorico/calendario-presenze
cd calendario-presenze
cp .env.example .env
# Modifica .env con le tue impostazioni

2. Sviluppo (crea automaticamente utente admin / admin123)

./scripts/start-dev.sh
# oppure
docker compose up --build -d

Apri http://localhost:8050

3. Produzione

./scripts/start-prod.sh
# oppure
docker compose up --build -d web db redis celery-worker celery-beat

Configurazione

Copia .env.example in .env e valorizza le variabili. Le principali:

# Django
SECRET_KEY=chiave-segreta-lunga-e-casuale
DEBUG=False
DJANGO_ENVIRONMENT=production
ALLOWED_HOSTS=tuodominio.com,www.tuodominio.com

# Database
DATABASE_NAME=calendario_db
DATABASE_USER=calendario_user
DATABASE_PASSWORD=password_sicura

# Redis (deve combaciare negli URL broker/backend)
REDIS_PASSWORD=password_redis
REDIS_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
CELERY_BROKER_URL=redis://:${REDIS_PASSWORD}@redis:6379/0
CELERY_RESULT_BACKEND=redis://:${REDIS_PASSWORD}@redis:6379/1

# Email SMTP (per notifiche ferie)
MAIL_DJANGO=tua@email.com
PASSWD_MAIL_DJANGO=app_password

Modelli dati

Modello Descrizione
Employee Profilo dipendente (part-time %, orari, permesso studio)
PermessiRichiesta Singola assenza con calcolo ore (esclude pausa pranzo)
SmartWorkingSchedule Piano smart working settimanale fisso
SmartWorkingChange Override giornaliero smart working
SaldoOre Saldo per tipo (ROL/ferie/exfest/studio) con origine
Festivita Giorni festivi ricorrenti e non
NoteRiepilogoMensile Note admin sul riepilogo mensile

Export mensile

Il report Excel mensile (scaricabile dalla UI) include per ogni dipendente:

  • Presenze giornaliere con tipo assenza
  • Totale ore per tipo (ROL, ferie, malattia, 104, ecc.)
  • Saldo ore residuo (ferie, ROL, ex festività, permesso studio)
  • Smart working giorni/mese

Il file è strutturato per essere inviato direttamente al consulente del lavoro.


Logo aziendale

Le immagini backend/media/img/logo.png e logo_sfondo.png sono placeholder 1×1. Sostituiscile con il logo della tua azienda (stessa struttura di path).


Monitoraggio

# Health check
curl http://localhost:8050/health/

# Log in tempo reale
docker compose logs -f web

# Flower (task Celery) — richiede profilo monitoring
docker compose --profile monitoring up -d
# → http://localhost:5555

Sviluppo

# Shell Django
docker compose exec web python manage.py shell

# Migrazioni
docker compose exec web python manage.py migrate

# Test
docker compose exec web python manage.py test calendario

Licenza

MIT


Autore

@bertorico — Django, automazioni fiscali, infrastruttura IT per studi professionali.
LinkedIn

About

Gestione presenze e permessi per studi e PMI — Django + Celery + Docker

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages