08 β Portal Module Catalog
The IP4CMS admin portal (src/tenant-frontend) β an Angular SPA, the staff/operator UI. Feature modules are lazy-loaded under an authenticated shell and map closely to tenant-api modules (07). The portal shows only the features the tenant's license enables (04).
Portal structure & auth
- Two backends. All feature services call a shared
ApiService(services/api.service.ts) whose base URL resolves at call time to the tenant-api / regional API (environment.apiBaseUrl). A separate core-api (environment.coreApiUrl) handles authentication and domain resolution. So the portal talks to core-api for auth/domain and tenant-api for all feature data. - Tenant header. Every request carries
Authorization: Bearer <JWT>andx-tenant-id: <paas_tenant_id>(set byAuthService.getAuthHeaders), plus anX-Branding-Key. The tenant id is read fromlocalStorage('paas_tenant_id')(localhost dev falls back toenvironment.defaultTenantId). - Auth flow. JWT access/refresh tokens in localStorage;
interceptors/auth.interceptor.tscatches401s and performs a single-flight token refresh (queuing concurrent requests), retrying with the new token, logging out if refresh fails. Login screens live inauth/. - Guards.
guards/auth.guard.tsgates the authenticated shell; additional guards are license/permission-aware (settings-route-access.guard.ts,documents-*guards). - Layout & navigation.
layout/layout.componentis the authenticated chrome (sidebar + header). Navigation is build-time-configurable (navigation/build-time-nav-menu*.ts, with.prod/.member24/.flex25variants) andenvironment.navLabelOverridesrelabels menu items per deployment β so the same module key surfaces under different UI names per vertical (e.g.financialsβ "Accounting",reportingβ "Dashboard",flowsβ "Forms"). - License-aware UI.
ApiService.handleErrorspecially formats tenant-api403"Module not enabled in license" responses, and a portalModuleServiceshows/hides nav and route guards by the tenant'senabled_modules(prefix-aware β a base enables its sub-modules). See 04.
Feature modules live under src/tenant-frontend/src/app/modules/. Below, grouped by domain, each with the tenant-api endpoints it primarily consumes.
Financial & Collections
- financials β Accounting back office: ledgers/accounts, transactions, billing cycles, collections, disbursements, payment authorizations. (β
/financials,/transactions,/accounts,/collections,/billing-cycles,/payment-links,/payment-channels) - sales β Sales/orders: product catalog, packages, order management, provisioning channels. (β
/sales,/products,/orders,/packages,/provisioning-channels) - customers β Customer records and their products/subscriptions. (β
/customers,/customer-products) - suppliers β Supplier directory and categories. (β
/suppliers,/supplier-categories)
Membership & People
- members β Core member roster: create/edit, member types, custom properties. (β
/members,/member-types,/custom-properties) - member-ranks β Member rank/tier definitions. (β
/member-ranks) - member-requests β Inbound member-initiated requests/approvals queue. (β
/member-requests) - directory β Member/contact directory browse view. (β
/directory) - contact-groups β Audience/contact groups for targeting communications. (β
/contact-groups)
Property/Estate & Facilities
- properties β Property/estate register, property claims and a verification queue tying properties to members. (β
/properties,/property-claims,/members) - facilities β Bookable facilities/amenities with calendar and reservations. (β
/facilities,/bookings,/booking-calendar) - locations β Location hierarchy (sites/branches/zones). (β
/locations) - mapping β GIS/map view of locations and assets. (β
/mapping, map/tile) - vehicles β Vehicle register and types. (β
/vehicles,/vehicle-types)
Communications & Engagement
- communications β Central comms hub: compose/send, bulk messaging, templates, dashboards. (β
/communications,/message-templates,/bulk) - news-stands β News/announcement publishing to members. (β
/news-stands,/send-logs) - surveys β Member surveys/eForms with send tracking. (β
/surveys,/eforms,/send-logs) - gallery β Photo albums/media gallery with storage usage. (β
/gallery,/albums) - events β Event scheduling and event types. (β
/events,/event-types) - classifieds β Member classifieds/marketplace listings. (β
/classifieds) - faq β FAQ content management. (β
/faq) - notifications β In-app notification center: list, read/unread, bulk actions. (β
/notifications)
Access, Security & Compliance
- panic β Panic/emergency-button monitoring: triggers, emergency types, responder groups. (β
/panic,/emergency-types,/panic-responder-groups) - access-invites β Visitor/access invitations and access-management settings. (β
/access-invites,/access-management) - visiting-points β Access/check-in points (gates/entry points). (β
/visiting-points) - visiting-point-rules β Access rules governing visiting points. (β
/visiting-point-rules) - kyc-requests β KYC verification request queue. (β
/kyc-requests) - certificates β Certificate templates and member/location certificate issuance + download. (β
/certificate-templates,/certificates) - devices β Registered device inventory (IoT/access devices). (β
/devices)
Operations & Field
- taskr β Field-task / work-order management (Taskr), flows-driven. (β
/taskr,/flows) - feasibility β Feasibility requests and request groups. (β
/feasibility-requests,/feasibility-request-groups) - utilities β Utility metering: channels, ingestion logs, activation. (β
/utilities,/utility-channels,/utility-ingestion-logs) - support β Support tickets / help desk. (β
/support) - documents / member-documents β Document library / file management for entities and members. (β
/documents,/document-types) - flows β Onboarding/workflow flows: templates, instances, onboarding records. (β
/flow-templates,/flow-instances,/onboarding-records)
Platform & Configuration
- settings β Tenant configuration hub: branding, domain configs, numbering, payment/SMS/mail gateways, omni-channels, custom properties. (β
/settings,/domain-configs,/sms-gateways,/mail-servers,/omni-channels) - users β Admin/staff user accounts. (β
/users) - roles β RBAC roles and permission assignment. (β
/roles,/permissions) - reporting β Dashboards/analytics, including Metabase-embedded dashboards. (β
/reporting,/dashboards,/metabase,/embed-token) - webhooks β Outbound webhook subscription management. (β
/webhooks)
Notes & caveats
- Labels are deployment-specific via
navLabelOverrides, so the same module surfaces under different UI names per tenant/vertical. - Some areas are nested under route groups rather than top-level (e.g.
feasibility,kyc-requests,access-invitesunder suppliers/documents groups;utilities,devicesunder settings). - Module wiring is mixed: some use NgModule routing modules, others standalone
*.routes.tsroute arrays.
Key source paths: src/tenant-frontend/src/app/ β app-routing.module.ts, modules/*, services/{api.service,api-auth-bridge,auth.service}.ts, interceptors/auth.interceptor.ts, guards/, navigation/build-time-nav-menu*.ts, environments/environment.ts.