# Data model

SQLite via `better-sqlite3`, schema created on boot in `backend/src/db/index.ts`.

- [employees](./employees.md) - the whitelist of employee emails, with a soft-delete active flag
- [attendance_events](./attendance-events.md) - append-only clock-in/out/break log and the derived state machine
- [shift_slots](./shift-slots.md) - bookable shifts generated from a weekly template or added ad hoc
- [shift_signups](./shift-signups.md) - an employee's claim on a slot
- [pay_rates](./pay-rates.md) - versioned hourly rate per employee
- [month_closures](./month-closures.md) - the confirm -> lock workflow per employee per month
- [payroll](./payroll.md) - computed + admin-adjusted pay per employee per month
