OOBE/Super User — Engineering Implementation (GRO-198) #149

Closed
opened 2026-03-28 20:16:51 +00:00 by the-dogfather-cto[bot] · 1 comment
the-dogfather-cto[bot] commented 2026-03-28 20:16:51 +00:00 (Migrated from github.com)

Summary

Implement the OOBE (out-of-box experience) and super user permission system for GroomBook.

Paperclip tracking: GRO-198 (parent: GRO-182)

Scope

  1. Schema: Add is_super_user boolean to staff table + Drizzle migration
  2. OOBE flow: Detect first-run (no super user in DB), redirect to /setup wizard
  3. RBAC middleware: requireSuperUser() for business settings, staff CRUD, billing, data export
  4. Super user management UI: Grant/Revoke toggle on Staff page
  5. Guardrail: API-level prevention of deleting/deactivating last super user
  6. Dev mode: Update AUTH_DISABLED to inject mock super user
  7. QA/UAT: Integration tests + browser-based acceptance testing

Acceptance Criteria

  • Fresh install redirects first login to /setup
  • Super user claim persists; subsequent logins skip OOBE
  • Business settings, staff CRUD return 403 for non-super-users
  • Appointment/client/service routes remain accessible to manager role
  • Last super user cannot be deleted or deactivated (clear API error)
  • Second super user can be granted from Staff page by an existing super user
  • AUTH_DISABLED dev mode works without regression

Subtasks

  • Schema + Migration + Types (GRO-201)
  • RBAC Middleware + Route Guards + Dev Mode (GRO-203)
  • OOBE Backend + Frontend (GRO-205)
  • Super User Management UI + API (GRO-206)
  • Integration Tests (GRO-207)
  • UAT Pass (GRO-208)

cc @cpfarhood

## Summary Implement the OOBE (out-of-box experience) and super user permission system for GroomBook. Paperclip tracking: GRO-198 (parent: GRO-182) ## Scope 1. **Schema**: Add `is_super_user` boolean to `staff` table + Drizzle migration 2. **OOBE flow**: Detect first-run (no super user in DB), redirect to `/setup` wizard 3. **RBAC middleware**: `requireSuperUser()` for business settings, staff CRUD, billing, data export 4. **Super user management UI**: Grant/Revoke toggle on Staff page 5. **Guardrail**: API-level prevention of deleting/deactivating last super user 6. **Dev mode**: Update `AUTH_DISABLED` to inject mock super user 7. **QA/UAT**: Integration tests + browser-based acceptance testing ## Acceptance Criteria - Fresh install redirects first login to `/setup` - Super user claim persists; subsequent logins skip OOBE - Business settings, staff CRUD return 403 for non-super-users - Appointment/client/service routes remain accessible to manager role - Last super user cannot be deleted or deactivated (clear API error) - Second super user can be granted from Staff page by an existing super user - `AUTH_DISABLED` dev mode works without regression ## Subtasks - [ ] Schema + Migration + Types (GRO-201) - [ ] RBAC Middleware + Route Guards + Dev Mode (GRO-203) - [ ] OOBE Backend + Frontend (GRO-205) - [ ] Super User Management UI + API (GRO-206) - [ ] Integration Tests (GRO-207) - [ ] UAT Pass (GRO-208) cc @cpfarhood
the-dogfather-cto[bot] commented 2026-04-01 10:15:32 +00:00 (Migrated from github.com)

Closing — the corresponding Paperclip issue GRO-198 (OOBE/Super User) is marked done. All implementation work has been completed and merged.

Closing — the corresponding Paperclip issue GRO-198 (OOBE/Super User) is marked done. All implementation work has been completed and merged.
This repo is archived. You cannot comment on issues.
1 Participants
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: groombook/app#149