Block a user
Frontend: A4 — Join household (accept invite)
Frontend: A3/D3 — Pantry staples component (onboarding + settings)
Frontend: A2 — Household setup + invite
Frontend: App shell — responsive layout, navigation, routing
Frontend: Design system foundation — Tailwind 4 theme, CSS tokens, fonts
No password complexity requirements beyond minimum length
createInvite has no role check — any member can invite
No household-level DB enforcement — isolation relies solely on application code
Shopping list addItem does not validate ingredient belongs to household
Unbounded limit/offset parameters allow resource exhaustion
No CORS configuration — will block frontend or risk misconfiguration
Admin audit log does not capture IP addresses
Login error responses enable account enumeration via HTTP status codes
Missing catch-all exception handler — stack traces leak to clients
Swagger UI exposed to unauthenticated users in all environments
No validation on systemRole values — arbitrary roles accepted
Sessions not invalidated on password/role change or deactivation
Signup creates session but never authenticates the user