# Ops Portal — Network Page Pattern Created: 2026-07-08 Session: Built `/var/www/ops/network.html` — network infrastructure page for the ops portal Domain: `ops.itpropartner.com` Root: `/var/www/ops/` ## Page structure | Section | Content | |---|---| | **Nav** | Shared via `fetch('/nav.html')` — nav partial already had the `/network.html` link | | **Header** | Title "Network", status summary, last-updated timestamp, refresh button | | **Network Health Overview** | 5-card grid: DNS Zones tracked, API Checks (ok/total), Routers tracked, Domains active, Overall health score | | **MikroTik Routers** | Amber placeholder card + conditional backup history row from S3 data | | **Ubiquiti / UISP** | Teal placeholder card | | **DNS & Domains** | Live table from `data.cloudflare_zones` or `data.domains` with soft-coded fallback | | **Network Health — Port & Service Checks** | Grid of API/port check cards | ## Reusable patterns ### 1. Fallback data for when collector is offline When a page depends on data from a live collector that may be offline, provide a hardcoded fallback so the page is useful from day one: ```javascript var KNOWN_ZONES = [ { name: 'itpropartner.com', zone: '' }, { name: 'nousresearch.com', zone: '' }, // ... ]; ``` Render logic: prefer live data → fall back to known list → show "Pending" badges → the page always has content even if the data source is down. ### 2. Placeholder card pattern Sections that aren't yet connected to a live data source use a `placeholder-card` with status badges: ```html