Multi-tenant SaaS for property management + CRM with RBAC.
- Backend: NestJS 11 + PostgreSQL 16 + Prisma + Better Auth + BullMQ + Redis
- Frontend: React 19 + Vite + TanStack Router + TanStack Query + shadcn/ui
- Monorepo: pnpm workspaces + Turborepo
- Deployment: PM2 + Caddy (no Docker)
apps/
api/ # NestJS backend (Clean Architecture)
web/ # React frontend
docs/ # Architecture, conventions, guides
- Node.js 20+
- pnpm 9+
- PostgreSQL 16
- Redis 7+
# Install dependencies
pnpm install
# Copy environment files
cp .env.example .env
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env
# Set up database
pnpm db:push
pnpm db:generate
# Start development
pnpm devpnpm dev # Both API + Web (Turborepo)
pnpm dev:api # API only (port 3000)
pnpm dev:web # Web only (port 5173)
pnpm build # Build all
pnpm lint # Lint all
# Database
pnpm db:generate # Generate Prisma client
pnpm db:migrate # Run migrations
pnpm db:push # Push schema (dev)
pnpm db:studio # Prisma Studio GUI| Module | Description |
|---|---|
| Auth | Better Auth + RBAC + multi-tenancy |
| Property | Buildings, floors, units |
| Lease | Residential + commercial lease lifecycle |
| CRM | Unified contacts, activity tracking, automation |
| Maintenance | Work orders, preventive maintenance, inspections |
| Procurement | Purchase requests, approvals, POs |
| Sales | Listings, pipeline, deals, commissions |
| Finance | Invoicing, payments, reporting |
| Notifications | In-app + email notifications |
| Reporting | Dashboards + custom reports |
- Architecture - Full feature map, flows, domain model
- Coding Standards - Naming, patterns, function signatures
- Module Guide - How to create a new backend module
- API Conventions - Endpoint patterns, response format
- Frontend Conventions - React, TanStack patterns
- Database Guide - Prisma schema rules, multi-tenancy
- Permissions Guide - RBAC system, roles, adding permissions
Proprietary - NOVEK ICT Solutions