Appearance
Frontend App Roster
Complete reference for all 13 frontend applications in the MFE-Apps workspace.
Application Table
| # | App (Nx name) | Dev Port | Base Href | Purpose | MFE Role | Deployment Target |
|---|---|---|---|---|---|---|
| 1 | dashboard | 4200 | / | Host shell — Module Federation container, navigation, layout | Host | Azure Blob Storage ($web) |
| 2 | bussinessOwners | 4301 | /bussiness-owners/ | Business Owner portal — tenant management, overview, approvals | Remote | Azure Static Web Apps (SWA) |
| 3 | erpHome | 4401 | /erp/ | ERP home dashboard — module selector, announcements | Remote | Azure Blob Storage ($web) |
| 4 | accounting | 4402 | /accounting/ | Accounting module — chart of accounts, journals, GL reports | Remote | Azure Blob Storage ($web) |
| 5 | hr | 4403 | /hr/ | HR module — employees, payroll, leaves, contracts | Remote | Azure Blob Storage ($web) |
| 6 | finance | 4404 | /finance/ | Finance module — bank accounts, fund transfers, finance reports | Remote | Azure Blob Storage ($web) |
| 7 | sales | 4405 | /sales/ | Sales module — orders, customers, invoicing, quotations | Remote | Azure Blob Storage ($web) |
| 8 | purchase | 4406 | /purchase/ | Purchase module — suppliers, POs, goods receipt | Remote | Azure Blob Storage ($web) |
| 9 | inventory | 4407 | /inventory/ | Inventory module — warehouses, stock, items, transfers | Remote | Azure Blob Storage ($web) |
| 10 | distribution | 4408 | /distribution/ | Distribution module — routes, deliveries, van sales | Remote | Azure Blob Storage ($web) |
| 11 | fixedAssets | 4409 | /fixed-assets/ | Fixed assets — asset register, depreciation, disposals | Remote | Azure Blob Storage ($web) |
| 12 | templates | 4410 | /templates/ | Templates — printable invoice templates, report designer | Remote | Azure Blob Storage ($web) |
| 13 | adminportal | varies | /adminportal/ | Admin portal — internal admin tool for platform management | Remote | Azure Blob Storage ($web) |
Keycloak Realm by App
| App | Keycloak Realm | Why |
|---|---|---|
bussinessOwners | businessowner | Separate identity space for Business Owners |
| All other apps | microtec | Single shared ERP realm for tenants |
Realm detection is automatic — the Keycloak init factory reads the URL path at startup (/bussiness-owners path triggers businessowner realm).
App Details
dashboard (Host Shell)
- Port:
4200 - Role: Module Federation host — loads all remote modules
- Responsibilities:
- Top-level navigation (sidebar, header)
- Keycloak initialization and token management
- Cross-module routing (dev: port-based URLs; prod: relative paths)
- Layout theme and global styles
- Backend: calls
bussinessOwnersAPI for tenant/user context
bussinessOwners
- Port:
4301 - Role: Remote + standalone (can run independently)
- Responsibilities:
- Tenant registration and onboarding
- Subscription and licensing management
- App/module activation per tenant
- Company profile
- Backend:
BusinessOwners.Apisvia/bo-apis/ - Deployment: Azure Static Web Apps (SWA) — separate from other apps
- Realm:
businessowner
Spelling
The app is intentionally named bussinessOwners (double s) throughout the codebase and Azure infrastructure. Do not correct this.
erpHome
- Port:
4401 - Role: Remote
- Responsibilities: ERP landing page after login — module cards, recent activity, system announcements
- Backend:
AppsPortal.Apisvia/erp-apis/
accounting
- Port:
4402 - Role: Remote
- Responsibilities: Full accounting lifecycle — chart of accounts, journal entries, general ledger, trial balance, income statement, balance sheet
- Backend:
AppsPortal.Apisvia/erp-apis/
hr
- Port:
4403 - Role: Remote
- Responsibilities: Human resources — employee directory, departments, contracts, leaves, payroll, loans
- Backend:
HR.Apisvia/hr-apis/
finance
- Port:
4404 - Role: Remote
- Responsibilities: Finance — bank accounts, cheques, fund transfers, financial reports
- Backend:
AppsPortal.Apisvia/erp-apis/
sales
- Port:
4405 - Role: Remote
- Responsibilities: Sales cycle — customers, price lists, quotations, sales orders, invoices, ZATCA e-invoicing QR
- Backend:
AppsPortal.Apisvia/erp-apis/
purchase
- Port:
4406 - Role: Remote
- Responsibilities: Procurement — suppliers, purchase orders, goods receipt notes, purchase invoices
- Backend:
AppsPortal.Apisvia/erp-apis/
inventory
- Port:
4407 - Role: Remote
- Responsibilities: Inventory — items catalogue, units of measure, warehouses, stock movements, inventory count
- Backend:
Inventory.Apisvia/inventory-apis/
distribution
- Port:
4408 - Role: Remote
- Responsibilities: Distribution — delivery routes, van sales, dispatch management
- Backend:
AppsPortal.Apisvia/erp-apis/
fixedAssets
- Port:
4409 - Role: Remote
- Responsibilities: Fixed asset register — asset categories, acquisition, depreciation schedules, disposals
- Backend:
AppsPortal.Apisvia/erp-apis/
templates
- Port:
4410 - Role: Remote
- Responsibilities:
- Printable templates — custom HTML invoice templates per company (API:
template-apis) - Report templates — full report designer with pre-built invoice variants
- Printable templates — custom HTML invoice templates per company (API:
- Backend:
Template.Apisvia/template-apis/ - License gated:
Modules.Templates
adminportal
- Port: varies (not a fixed dev port)
- Role: Remote
- Responsibilities: Internal admin tool for platform operators — tenant management, database explorer, Seq viewer, terminal, key generation
- Backend:
BusinessOwners.AdminPortal(Blazor API) - Access: restricted to Microtec platform administrators only
Development Port Mapping
The sidebar uses a static port map for development navigation. This is defined in libs/shared-lib/src/lib/modules/layout/layout-sidebar/layout-sidebar.component.ts:
typescript
const MODULE_DEV_PORTS: Record<string, number> = {
'bussiness-owners': 4301,
'erp': 4401,
'accounting': 4402,
'hr': 4403,
'finance': 4404,
'sales': 4405,
'purchase': 4406,
'inventory': 4407,
'distribution': 4408,
'fixed-assets': 4409,
};In production, relative paths are used (isDevelopment: false) and routing is handled by the reverse proxy / CDN.
Deployment Architecture
- Azure Blob Storage (
$webcontainer, static website enabled) hosts the dashboard and all ERP remote apps. - Azure Static Web Apps (SWA) hosts
bussinessOwnersfor its SWA-specific routing rules and authentication providers. - Azure CDN routes traffic to the correct origin based on the URL path.