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 type sc).

  • Management Portal — the administrator portal (/management-portal/, client type mc).

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-center and management-console (applications) and ft-common (shared library) — plus per-customer overlays under projects/customization-for-customers/ (genix, radisys).

  • Framework: Angular 19.2.17 with Angular Material / CDK 19.2.x, @ng-bootstrap/ng-bootstrap 18 and Bootstrap 4, TypeScript 5.8, RxJS 7.5.

  • State management: NgRx 19 (@ngrx/store, effects, entity, router-store, operators).

  • i18n: @ngx-translate/core with the HTTP loader.

  • Visualization: chart.js / ng2-charts for charts, cytoscape for network graphs, @superset-ui/embedded-sdk for embedded Superset dashboards, and embedded Grafana dashboards for the system overview.

  • AI assistant: the ft-common/ai module, enabled per installation through the backend setting AIServiceConnectionURL and routed through the container’s /ai-agent/ proxy.

  • Build outputs: support-centerdist/support-center, management-consoledist/management-console (Angular 19 application builder — the app itself lands under browser/); ft-common is 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 in docker/.

support-center and management-console are the internal Angular project names and remain in angular.json, projects/ and dist/. The product names are Support Portal and Management Portal.

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

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.