Row-level isolation
Portfolio and principal boundaries are enforced in Postgres Row-Level Security policies, not only by hiding buttons in the interface.
Security architecture
Financial and resident data deserve controls that still hold when a screen is bypassed. Rentals Ledger builds the boundary into the data layer, server functions, and event paths.
Verified mechanisms
Plain descriptions, scoped claims, and no borrowed compliance logos.
Portfolio and principal boundaries are enforced in Postgres Row-Level Security policies, not only by hiding buttons in the interface.
Route visibility and actions resolve from permission snapshots backed by the database. Owners, managers, accountants, tenants, vendors, and PM companies receive different boundaries.
Administrative Supabase credentials and provider secrets remain in server or Edge Function environments. They are not imported into browser-delivered modules.
Stripe webhook paths verify signatures against the unmodified raw request body and keep event processing idempotent so retries do not duplicate state.
An append-only activity surface records sensitive changes so account owners and financial collaborators can trace who changed what and when.
Payment, bank-feed, AI, screening, e-sign, SMS, syndication, and accounting integrations stay behind explicit rollout configuration instead of silently pretending to be live.
Authentication
Account protection
The current authentication flow includes email confirmation, reset-password handling, token-aware invitations, and authenticator-app MFA controls. Role detection routes each authenticated principal into the correct shell.
Boundary principle
A client-side flag can shape rollout. It cannot grant authority.
Honest boundary
This site does not claim SOC 2, ISO 27001, or another independent audit that has not been completed.
Tax reports support preparation. Rentals Ledger does not submit a return to a tax authority.
A coded integration is not represented as active unless the provider and rollout environment are actually configured.
See the boundary in practice