Tidredovisning för revisionsbyrå
Tidredovisning för projekt och personal på en revisionsbyrå · Byggt från grunden, solo
Uppdaterad
Före
Kunder, projekt och timmar fanns på ett ställe där alla på byrån kunde se och ändra allt.
Efter
87
behörighetsrutor bevisade mot databasen före varje driftsättning; de 30 som inte gjorde något doldes.
- 1Person:Ägare
Bygger roller med kryssrutor per område (kunder, projekt, tid, rapporter) för att visa, skapa, redigera och radera.
- 2Person:Medarbetare
Loggar timmar mot en kund, ett projekt och en uppgift, eller bokar ledighet.
Programvara:WebbappPåminner alla vars tidrapport fortfarande är tom före deadline.
- 3Person:Projektadmin
Godkänner eller avslår veckans tidrapport för det egna projektteamet.
- 4Programvara:Databas
Visar varje person bara det rollen tillåter: medarbetare ser sina egna timmar, projektadmins sitt team, ägare alla kunder.
- 5Person:Ägare
Läser timmar per kund, projekt och person i dashboards och rapporter.
Alltid på
- Tidigare kunde alla på byrån öppna varje kund och allas timmar. Nu vägrar databasen allt som en roll inte tillåts, även om en skärm ber om det.
- Före varje push testas varje roll mot en isolerad kopia av databasen.
Problem
En revisionsbyrå hanterade sina kunder, projekt och personaltimmar i ett verktyg där alla kunde öppna varje kund och allas tid.
Diagnos
Åtkomstkontroll havererar tyst när den ligger i skärmen, så varje regel måste ligga i databasen och bevisas med tester.
Alternativ jag vägde
Varje roll ser olika data. Var ska åtkomstreglerna ligga?
Valt
I själva databasen, testade för varje roll före varje driftsättning
Skärmen kan inte läcka det databasen vägrar lämna ut. Kostnad: en testkörning på en isolerad kopia före varje push.
Bortvalt
Bara i skärmarna
Någon kunde se eller ändra data som skärmen försökte dölja.
En post behövs inte längre. Ska den raderas eller sparas?
Valt
Arkivera och anonymisera den
Tidrapporteringens historik förblir hel.
Bortvalt
Radera den
Radering tar med sig tidrapporternas historik.
Lösning
En ensidesapp på hanterad Postgres. Varje åtkomstregel ligger i databasen och bevisas av en automatisk rollmatris före varje driftsättning.
- App
- React
- Vite
- TanStack Router
- TanStack Query
- shadcn/ui
- Chart.js
- Data och säkerhet
- Supabase
- PostgreSQL row-level security
- Edge Functions (Deno)
- Hosting
- Cloudflare
- Kvalitet
- GitHub Actions
- Role-matrix tests
- Vitest
- Property-based tests
- Accessibility tests
Relaterade tjänster
Siffror: Automatisk rollkontroll, 2026-09-25