Rilevazione ore per studio di revisione
Rilevazione di progetti e ore del personale per uno studio di revisione · Sviluppato da zero, in autonomia
Aggiornato
Prima
Clienti, progetti e ore stavano in un unico posto dove chiunque nello studio poteva vedere e modificare tutto.
Dopo
87
caselle di permesso verificate sul database prima di ogni deploy; le 30 inutili sono state nascoste.
- 1Persona:Titolare
Crea i ruoli con caselle per area (clienti, progetti, ore, report) per visualizzare, creare, modificare ed eliminare.
- 2Persona:Collaboratore
Registra le ore su cliente, progetto e attività, oppure registra ferie e permessi.
Software:Web appSollecita chi ha ancora il timesheet vuoto prima della scadenza.
- 3Persona:Responsabile di progetto
Approva o respinge il timesheet settimanale del proprio team di progetto.
- 4Software:Database
Mostra a ciascuno solo ciò che il suo ruolo consente: i collaboratori le proprie ore, i responsabili di progetto il loro team, i titolari ogni cliente.
- 5Persona:Titolare
Legge le ore per cliente, progetto e persona nelle dashboard e nei report.
Sempre attivo
- Prima, chiunque nello studio poteva aprire ogni cliente e le ore di tutti. Ora il database rifiuta tutto ciò che un ruolo non consente, anche se una schermata lo chiede.
- Prima di ogni push, ogni ruolo viene testato su una copia isolata del database.
Problema
Uno studio di revisione gestiva clienti, progetti e ore del personale in uno strumento in cui ogni persona poteva aprire ogni cliente e le ore di tutti.
Diagnosi
Il controllo degli accessi cede in silenzio quando vive nella schermata, quindi ogni regola doveva stare nel database, dimostrata da test.
Opzioni valutate
Ogni ruolo vede dati diversi. Dove vivono le regole di accesso?
Scelta
Nel database stesso, testate per ogni ruolo prima di ogni deploy
La schermata non può esporre ciò che il database rifiuta. Costo: un ciclo di test su una copia isolata a ogni push.
Scartata
Solo nelle schermate
Una persona poteva vedere o modificare dati che la schermata voleva nascondere.
Un record non serve più. Si cancella o si conserva?
Scelta
Archiviarlo e anonimizzarlo
Lo storico dei timesheet resta intatto.
Scartata
Cancellarlo
Elimina a cascata lo storico dei timesheet.
Soluzione
Una web app single-page su Postgres gestito. Ogni regola di accesso sta nel database ed è dimostrata da una matrice automatica dei ruoli prima di ogni deploy.
- App
- React
- Vite
- TanStack Router
- TanStack Query
- shadcn/ui
- Chart.js
- Dati e sicurezza
- Supabase
- PostgreSQL row-level security
- Edge Functions (Deno)
- Hosting
- Cloudflare
- Qualità
- GitHub Actions
- Role-matrix tests
- Vitest
- Property-based tests
- Accessibility tests
Servizi correlati
Numeri: Controllo automatico dei ruoli, 2026-09-25