Private build / Property operations

HOA SaaS

A multi-tenant SaaS platform for homeowners associations and the property management firms that operate them. The project is in early development, with database schema and tenant isolation already complete.

ASSOCIATION OPERATIONS HOA SaaS 24 Open resident requests 8 Board documents pending review 3 Maintenance vendors scheduled 91% Dues visibility Documents · Residents · Notices · Work Orders

Architecture

Tenant isolation is the core design.

Database Layer

Every tenant-scoped table carries a tenant_id column, and composite foreign keys prevent cross-tenant references from existing.

Query Layer

The scopedDb wrapper automatically applies tenant filtering on reads and tenant assignment on inserts, keeping raw database access out of the public module surface.

Lint Layer

ESLint flags imports of the raw unscoped database client, requiring explicit justification for any SUPER_ADMIN-only bypass.

Stack

Next.js 15, TypeScript, Drizzle, PostgreSQL.

Framework: Next.js 15 App Router with TypeScript.

Styling: Tailwind CSS.

Database: PostgreSQL, with Supabase used in development.

ORM: Drizzle ORM and drizzle-kit migrations.

Testing: Tenant isolation runtime tests verify scoped queries, tenant context behavior, and composite foreign key protections.

Roles & Records

Built for boards, managers, residents, and platform staff.

Roles include SUPER_ADMIN, PROPERTY_MANAGER, board positions, committee members, and homeowners.

Financial amounts are stored as signed integer cents. The ledger is append-only, with corrections posted as reversing entries rather than updates or deletes.

The platform is aimed at HOA operations where resident data, property records, board documents, and financial history must remain separated by tenant.