PM
Property Management SaaSPhase 1 Active
Phase 1 ConfiguredNext.js App Router + shadcn/ui + Supabase RLS

Multi-Tenant Maintenance Platform

Core data layer, Row-Level Security policies, and UI foundation initialized according to the PLAN.md specification.

Core Tables (6/6)
PostgreSQL Schema with RLS
organizationsReady
usersReady
propertiesReady
unitsReady
ticketsReady
ticket_eventsReady
Security Definer helpers prevent RLS recursion
Role Isolation
Strict Row-Level Security

Manager Role

Scoped strictly to authenticated org_id across properties, units, and tickets.

Tenant Role

Isolated strictly to assigned unit_id and self-submitted maintenance tickets.

Postgres 15+ Native RLS
Supabase Client
Full TypeScript Typing

Configured both browser and server client utilities with complete table definitions.

src/lib/supabase/client.ts
src/lib/supabase/server.ts
src/types/database.types.ts
Requires env keys from .env.example

Strict Ticket Pipeline State Machine

No free-text statuses permitted. Inngest stagnation engine hooks ready.

SUBMITTED

Initial creation by tenant

UNVIEWED

Pending manager review (Alert: 2-4h)

VIEWED

Manager reviewed (Prompt: 24h)

ASSIGNED

Vendor or staff allocated (Alert: 48-72h)

IN_PROGRESS

Work is actively happening

WAITING_ON_PARTS

Exception: timers paused

COMPLETED

Issue successfully resolved