- type
- concept
- created
- Mon Apr 06 2026 02:00:00 GMT+0200 (Central European Summer Time)
- updated
- Mon Apr 06 2026 02:00:00 GMT+0200 (Central European Summer Time)
- sources
- wiki/summaries/owner-portal-research, wiki/specs/architecture/financial-management
- tags
- owners portfolio pm-facing live
- aliases
- owners-page, owner-detail, eigentuemer
Owner Management
abstract
PM-facing owner management module at `/owners`. List page with stats + data table, detail page with 5 tabs (Overview, Properties, Financials, Tenants, Work Orders). Live since 2026-04-06.Routes
| Route | Component | Description |
|---|---|---|
/owners |
OwnersComponent |
Owner list with stats, search, filters |
/owners/:slug |
OwnerDetailComponent |
Owner detail with 5 tabs |
Slug format: slugified owner name (e.g. dr-wolfgang-huber).
Owner List Page
- 4 stats cards: Total Owners, Total Units, Avg Ownership %, Active Owners
- Search: by name or email (client-side filtering)
- Filters: status dropdown (All/Active/Pending/Inactive), sort dropdown
- Data table: avatar (navy gradient, gold initials), name, contact, units, properties, status pill, tax number
- Row click navigates to
/owners/:slug
Owner Detail Page
Header
Slim bar: avatar + name + status pill + email · phone + Email/Call action buttons.
Tab 1: Overview
- 4 KPI cards (Properties, Occupancy, Avg Ownership, Open WOs)
- 2-column: Owner Info card (address, tax, bank masked IBAN, since, role) + Portfolio at a Glance (property rows with ownership % bars)
- Activity feed placeholder (pending backend event system)
Tab 2: Properties
- 3-column card grid with property photo/gradient, ownership % badge, occupancy bar, unit/occupied/vacant stats, lifecycle pills
- Cards link to
/property-management/:slug
Tab 3: Financials
- Structured empty state with date range toggles
- Pending: income/expense chart (ApexCharts), NOI, distribution history, transaction ledger
Tab 4: Tenants
- 4 summary cards (Total, Active, Past Due, Expiring 60d)
- Filterable table: name, property, unit, lease status pill, rent, balance, lease end
- Lazy-loaded on first tab activation
Tab 5: Work Orders
- 4 KPI cards (Open, In Progress, Completed, Spend)
- Source-tracked table with color-coded source pills: Tenant (blue), IoT (purple), Preventive (green), Inspection (gray), PM Created (dark)
- Priority pills, status pills, cost column
- Lazy-loaded on first tab activation
Data Model
owners_eigentuemer (14 rows, managed=False)
Owner records: name, email, phone, address, steuernummer (tax number), bankverbindung (JSONB: iban, bic, bank_name), status (active/pending/inactive).
owners_eigentuemerliegenschaft (24 rows, managed=False)
Junction table: eigentuemer_id → property_id with anteil_prozent (ownership %), role (haupteigentuemer/miteigentuemer), seit (since date), is_active.
API Endpoints (server.js)
| Endpoint | Returns |
|---|---|
GET /api/owners |
All owners with property_count, total_units |
GET /api/owners/by-name/:slug |
Single owner by slugified name |
GET /api/owners/:id/properties |
Owner's properties with occupancy stats |
GET /api/owners/:id/tenants |
Tenants across owner's properties |
GET /api/owners/:id/work-orders |
Work orders across owner's properties |
File Structure
src/app/features/owners/
├── owner.service.ts # API service + interfaces
├── owners.component.ts # List page
└── owner-detail.component.ts # Detail page with 5 tabs
Competitive Research
8 platforms analyzed: AppFolio, Buildium, Yardi Breeze, RentManager, Entrata, Propertyware, DoorLoop, Stessa. Full research: wiki/summaries/owner-portal-research.
Related
- wiki/summaries/owner-portal-research — Competitive analysis (8 platforms)
- wiki/specs/architecture/financial-management — Owner financial reporting spec (6 tabs)
- wiki/specs/architecture/multi-portal-architecture — Owner portal auth (PortalUser)
- wiki/concepts/slug-based-urls — URL routing pattern
- wiki/concepts/navy-gold-branding — Design system (gold=positive, zero hardcoded hex)