https://github.com/vtvito/timbrature-pa
⏰ App PWA gratuita per dipendenti PA italiani. Traccia timbrature, calcola 36h/settimana automaticamente, supporta smart working. 100% offline, dati solo sul tuo dispositivo. No account, no cloud.
https://github.com/vtvito/timbrature-pa
36-ore dipedenti-pubblici dipendenti-pubblici offline-first orario-lavoro pa-italiana privacy pubblica-amministrazione pwa smart-working timbrature timesheet
Last synced: 2 months ago
JSON representation
⏰ App PWA gratuita per dipendenti PA italiani. Traccia timbrature, calcola 36h/settimana automaticamente, supporta smart working. 100% offline, dati solo sul tuo dispositivo. No account, no cloud.
- Host: GitHub
- URL: https://github.com/vtvito/timbrature-pa
- Owner: VTvito
- License: mit
- Created: 2026-02-03T14:55:03.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-25T13:28:50.000Z (2 months ago)
- Last Synced: 2026-03-26T13:40:51.205Z (2 months ago)
- Topics: 36-ore, dipedenti-pubblici, dipendenti-pubblici, offline-first, orario-lavoro, pa-italiana, privacy, pubblica-amministrazione, pwa, smart-working, timbrature, timesheet
- Language: JavaScript
- Homepage: https://vtvito.github.io/timbrature-pa/
- Size: 275 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ⏰ Timbra PA
PWA per tracciare le timbrature dei dipendenti pubblici italiani.
Funziona offline, si installa come app e salva i dati solo sul dispositivo.

---
## ✨ Funzionalità
- 36 ore settimanali con saldo aggiornato in tempo reale
- Pausa pranzo automatica: con coppia singola lun-gio 30 minuti fissi, con multi-timbrature conta la pausa reale; venerdì solo oltre 6h lorde
- Smart working e assenze con ore precompilate
- Timbrature multiple nello stesso giorno, con aggiunta manuale guidata dalla card del giorno
- Suggerimento ingresso/uscita sull'ultimo giorno utile in sede, considerando smart e assenze gia pianificati
- Export JSON e CSV
- Funzionamento offline e installazione come PWA
---
## 🔐 I tuoi dati sono tuoi
- Nessun account
- Nessun backend
- Storage locale: localStorage come primario, IndexedDB come fallback
- Le settimane salvate restano disponibili dopo gli update; totali e saldi vengono ricalcolati dai dati inseriti
- Export manuale quando vuoi
Nota iOS: Safari può eliminare i dati PWA dopo 7 giorni di inutilizzo. Conviene aprire l'app almeno una volta a settimana o esportare periodicamente un backup JSON.
---
## 🚀 Inizia subito
👉 **[Apri Timbra PA](https://vtvito.github.io/italian-pa-employee-attendance/)**
Installazione rapida:
- Android: apri il link in Chrome e tocca "Installa" o "Aggiungi a schermata Home"
- iPhone/iPad: apri in Safari o Chrome, poi Condividi → "Aggiungi a Home"
- Desktop: apri in Chrome o Edge e usa il pulsante Installa nella barra indirizzi
---
## 🏗️ Per sviluppatori
Pattern **MVC + Observer + Repository**, zero dipendenze:
```
js/
├── app.js # Bootstrap, SW registration, update flow
├── controllers/
│ └── AppController.js # Orchestrazione MVC
├── models/
│ ├── TimeEntry.js # Singola timbratura
│ └── WeekData.js # Dati settimana
├── views/
│ ├── UIManager.js # Rendering UI, toast, PWA install
│ └── ModalManager.js # Modali (edit, add, confirm, clean)
├── services/
│ ├── TimeCalculator.js # Calcoli ore, pause, delta, suggerimento orari ultimo giorno utile
│ ├── WeekNavigator.js # Navigazione settimane ISO 8601
│ └── ExportService.js # Export JSON / CSV, import
├── storage/
│ ├── StorageManager.js # Repository pattern, dual storage
│ ├── LocalStorageAdapter.js
│ └── IndexedDBAdapter.js
└── utils/
├── EventBus.js # Pub/Sub con eventi tipizzati
├── DateUtils.js # ISO 8601, formatting, parsing
└── Validators.js # Validazione orari
```
Stack: Vanilla JavaScript ES Modules, CSS singolo, localStorage + IndexedDB, Service Worker con app shell network-first, manifest PWA.
### Avvio locale
```bash
git clone https://github.com/VTvito/italian-pa-employee-attendance.git
cd italian-pa-employee-attendance
python -m http.server 8000
```
### Test
```bash
http://localhost:8000/tests/
```
---
## 📋 Configurazione
Le costanti principali sono in [js/services/TimeCalculator.js](js/services/TimeCalculator.js):
```javascript
export const CONFIG = {
WEEKLY_TARGET_HOURS: 36,
PAUSE_MINUTES: 30,
PAUSE_THRESHOLD_HOURS: 6,
SMART_HOURS_DEFAULT: 7.5,
SMART_HOURS_FRIDAY: 6,
DAILY_TARGET_HOURS: 7.5,
FRIDAY_TARGET_HOURS: 6
};
```
---
## 🌐 Self-hosting
Qualsiasi hosting statico va bene: GitHub Pages, Netlify, Vercel, Cloudflare Pages o un semplice server HTTP.
---
## 🤝 Contribuisci
Pull request benvenute. Per modifiche sostanziali conviene aprire prima una issue.
---
## 📄 Licenza
Distribuito sotto licenza **MIT** — vedi [LICENSE](LICENSE).
---
## 👤 Autore
**VTvito** — [@VTvito](https://github.com/VTvito)