Platforms
Route
/platform (the legacy alias /page_main_iqv_os now only redirects to /platform)
Page Purpose
List every one of the organization's platform modules (internal tools) on a single screen and let the user reach them in one click.
Fields on the Page
- A header card: "Platform" title, a live clock showing date only, a "Platform ara" (Search platforms) search box.
- A responsive grid of module cards — each card shows the module name.
- An empty state during loading, an alert + retry on error, and separate empty states for an empty list vs. an empty search result.
User Actions
- Type in the search box to filter by module name/URL.
- Click a module card to go to its address — an in-app (relative) address navigates within the SPA; an external one opens in a new tab (guarded against double-opening).
There is NO module creation/editing/deletion on this page — those actions live only on the Settings page.
Data Used
- The platform module list (id, name, url, order number, created date) — auto-refreshed every 30 seconds, cached for instant display.
- Ordering is computed on the backend: the saved platform ordering (queue) if one exists, otherwise
created_atorder. The page no longer issues a separate ordering request and no longer recomputes the order.
Access and Visibility
Reachable by any logged-in user; there is no role-based restriction (see Target Users). It is the only page shown in the sidebar for users with the user role.
Components Used
dashboard/src/components/platform/index.tsx— the page component, and theModuleCardcomponent defined here, also reused on the Settings page.dashboard/src/components/hooks/useClock.tsx— date display.dashboard/src/components/hooks/usePolling.tsx— the 30-second auto-refresh.
API Communication
| Action | Method | Endpoint | Purpose |
|---|---|---|---|
| Fetch module list | GET | /platform/modules (public /api/v1/platform/modules) |
Pre-ordered module list — a single request |
The page now uses a single endpoint. The POST /platform-queue-list call has been removed from this page (the endpoint itself and the Settings > Sort screen stay in place); the legacy GET /iqv_platform_modulleri endpoint keeps serving the Notes/Reminder/Settings pages.
For details, see API Documentation › Platform Modules.
State Management
- Module list: a 60-second stale-while-revalidate in-memory cache plus a localStorage persistent cache in the service layer (
platformService.tsx→getOrderedModules), giving instant display on page re-entry. Saving a new order on Settings > Sort invalidates this cache. - Search text and selection state: local React state.
- Session/role info: the Redux
adminslice — the page no longer reads it; scope (company/organization) is derived from the JWT on the server.