System Overview
Purpose
The OneIoT Angular UI is the browser front end of the OneIoT Web platform. It delivers two Angular single-page applications:
-
Support Portal — the end-user support portal (
/support-portal/, client typesc). -
Management Portal — the administrator portal (
/management-portal/, client typemc).
Both are a presentation layer only: all data operations go to a single service, the UI Backend REST API, reached through the portals' own Nginx reverse proxy. All other infrastructure (database, Hazelcast, ClickHouse, FTACS) is reached through the backend, never directly by the browser.
Key facts (from the repository)
-
Workspace: an Angular CLI 19 multi-project workspace (
angular.json) with three build projects —support-centerandmanagement-console(applications) andft-common(shared library) — plus per-customer overlays underprojects/customization-for-customers/(genix,radisys). -
Framework: Angular
19.2.17with Angular Material / CDK19.2.x,@ng-bootstrap/ng-bootstrap18 and Bootstrap 4, TypeScript5.8, RxJS7.5. -
State management: NgRx 19 (
@ngrx/store,effects,entity,router-store,operators). -
i18n:
@ngx-translate/corewith the HTTP loader. -
Visualization:
chart.js/ng2-chartsfor charts,cytoscapefor network graphs,@superset-ui/embedded-sdkfor embedded Superset dashboards, and embedded Grafana dashboards for the system overview. -
AI assistant: the
ft-common/aimodule, enabled per installation through the backend settingAIServiceConnectionURLand routed through the container’s/ai-agent/proxy. -
Build outputs:
support-center→dist/support-center,management-console→dist/management-console(Angular 19applicationbuilder — the app itself lands underbrowser/);ft-commonis built first and consumed as@ft/common(file:dist/ft-common). -
Deployed base paths:
--base-href /support-portal/and--base-href /management-portal/, applied at build time (the sources carry<base href="/">). -
Container runtime: a single
nginx:alpine-based image (hub.friendly-tech.com/ui/portals:<tag>) serves both apps and reverse-proxies the upstream APIs. Image sources live indocker/.
|
|
System boundary
The portals depend on the UI Backend for all data operations:
-
authentication and session management,
-
platform data and configuration APIs,
-
portal permission upload on startup.
Two upstreams are optional and proxied by the same Nginx instance: the AI Agent (/ai-agent/) and
Grafana (/grafana-ro/). Anything not served by the portals (database, caches, analytics, device
management) is owned by the UI Backend and its environment.
Roles & permissions
Access in the OneIoT portals is governed by user groups and portal permissions. Permissions are
defined per portal (client type sc = Support Portal, mc = Management Portal) and uploaded to the
UI Backend by the portals container on startup (see
Installation & Deployment).
The applications enforce the same rules in the UI: route and tab guards hide what a user group is not allowed to open, and the navigation menu is filtered to the permitted entries. The backend re-checks every permission, so hiding an action in the UI is a convenience, not the security boundary.
- Operator
-
Day-to-day portal user. Can view data and perform the operations enabled for their user group.
- Administrator
-
Operator capabilities plus user and permission management.
| What you can see and do is determined by your user group and the portal permissions applied by the backend. If an action is not available to you, contact an administrator to review your access. |