635a130f0b
Build and Push Docker Images / detect-changes (push) Successful in 11s
Build and Push Docker Images / build-auth-api (push) Successful in 1m0s
Build and Push Docker Images / build-employee-api (push) Successful in 1m2s
Build and Push Docker Images / build-transit-api (push) Successful in 1m1s
Build and Push Docker Images / build-error-log-api (push) Successful in 1m5s
Build and Push Docker Images / build-admin-ui (push) Successful in 1m13s
Build and Push Docker Images / build-monitoring-ui (push) Successful in 1m15s
Build and Push Docker Images / deploy-test-node (push) Successful in 3s
### Summary of Changes
1. Documentation Consolidation:
• Relocated the docs/ folder and all repository .md files (README.md, DEPLOYMENT.md, DOCKER_README.md,
DOMAINS_README.md, GETTING_STARTED.md, CI_CD_PORTAINER_GUIDE.md, ADMIN_DEPLOYMENT_SUMMARY.md,
SECURITY_PRIVATE_FILES.md, handoff.md, azure-project-plan.md, plus service-specific READMEs) into .
• Updated document links in README.md.
2. AI Agent Project Map:
• Created PROJECT_MAP.md in the project root containing complete architecture diagrams, service specs, ports, DB
schemas, environment variables, and developer workflows.
• Added PROJECT_MAP.md to .gitignore.
3. Monitoring UI & Infrastructure Integration:
• Added monitoring_ui service to docker-compose.yml (port 5175).
• Configured Gitea workflow docker-build.yml for monitoring_ui builds.
• Added CORS middleware headers in index.js.
• Added nginx.conf copy step in Dockerfile.
──────
### Recommended Commit Message
docs: consolidate project documentation into monitoring_ui and add agent project map
- Move all markdown documentation files and docs/ folder into monitoring_ui/docs/
- Update documentation hub index (monitoring_ui/docs/README.md) with relative paths
- Generate comprehensive AI agent reference map (PROJECT_MAP.md) in repository root
- Add PROJECT_MAP.md and monitoring_ui build output/env overrides to .gitignore
- Integrate monitoring_ui service into docker-compose.yml and Gitea CI workflow
- Configure CORS handling in employee_api for monitoring dashboard access
──────
### Alternative Short Commit Message
refactor(docs): move docs to monitoring_ui and create AI agent PROJECT_MAP.md
537 lines
18 KiB
HTML
537 lines
18 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
<title>Command Center | XTransit</title>
|
|
<link rel="stylesheet" href="./theme.css" />
|
|
</head>
|
|
<body>
|
|
<div class="preview-root">
|
|
<header class="preview-header">
|
|
<div class="preview-header__brand">
|
|
<span class="preview-header__logo">XT</span>
|
|
<span>XTransit Operations</span>
|
|
</div>
|
|
<div class="preview-header__actions">
|
|
<button
|
|
class="preview-btn preview-btn--ghost"
|
|
aria-label="Search services"
|
|
>
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<circle cx="11" cy="11" r="6.5" stroke-width="1.8"></circle>
|
|
<path
|
|
d="m16 16 4.5 4.5"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
<span>Search</span>
|
|
</button>
|
|
<button
|
|
class="preview-btn preview-btn--ghost"
|
|
aria-label="View notifications"
|
|
>
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="M18 9a6 6 0 0 0-12 0c0 7-3 7-3 9h18c0-2-3-2-3-9Z"
|
|
stroke-width="1.8"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<path
|
|
d="M10 21h4"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
<span class="preview-badge preview-badge--warning">2</span>
|
|
</button>
|
|
<span class="preview-avatar" aria-label="Signed in as Ava Morgan"
|
|
>AM</span
|
|
>
|
|
</div>
|
|
</header>
|
|
|
|
<nav class="preview-nav" aria-label="Primary navigation">
|
|
<a class="preview-nav__link preview-nav__link--active" href="#">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<rect
|
|
x="3.5"
|
|
y="3.5"
|
|
width="7"
|
|
height="7"
|
|
rx="1"
|
|
stroke-width="1.8"
|
|
></rect>
|
|
<rect
|
|
x="13.5"
|
|
y="3.5"
|
|
width="7"
|
|
height="7"
|
|
rx="1"
|
|
stroke-width="1.8"
|
|
></rect>
|
|
<rect
|
|
x="3.5"
|
|
y="13.5"
|
|
width="7"
|
|
height="7"
|
|
rx="1"
|
|
stroke-width="1.8"
|
|
></rect>
|
|
<rect
|
|
x="13.5"
|
|
y="13.5"
|
|
width="7"
|
|
height="7"
|
|
rx="1"
|
|
stroke-width="1.8"
|
|
></rect>
|
|
</svg>
|
|
<span>Command Center</span>
|
|
</a>
|
|
<a class="preview-nav__link" href="./service-catalog.html">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="M4 6.5h16M4 12h16M4 17.5h16"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
<circle
|
|
cx="7"
|
|
cy="6.5"
|
|
r="1.4"
|
|
fill="currentColor"
|
|
stroke="none"
|
|
></circle>
|
|
<circle
|
|
cx="12"
|
|
cy="12"
|
|
r="1.4"
|
|
fill="currentColor"
|
|
stroke="none"
|
|
></circle>
|
|
<circle
|
|
cx="17"
|
|
cy="17.5"
|
|
r="1.4"
|
|
fill="currentColor"
|
|
stroke="none"
|
|
></circle>
|
|
</svg>
|
|
<span>Service Catalog</span>
|
|
</a>
|
|
<a class="preview-nav__link" href="./request-lab.html">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="M5 4.5h14v15H5z"
|
|
stroke-width="1.8"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<path
|
|
d="M8 8h8M8 12h8M8 16h5"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
<span>Request Lab</span>
|
|
</a>
|
|
<a class="preview-nav__link" href="./incident-log.html">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="M12 3.5 20 7v5c0 4.2-3.2 7.4-8 8.8C7.2 19.4 4 16.2 4 12V7l8-3.5Z"
|
|
stroke-width="1.8"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<path
|
|
d="M12 8v4M12 15.5v.1"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
<span>Incident Log</span>
|
|
</a>
|
|
</nav>
|
|
|
|
<div class="preview-shell">
|
|
<aside class="preview-sidebar" aria-label="Command center sections">
|
|
<div class="preview-sidebar__section">Monitor</div>
|
|
<a
|
|
class="preview-sidebar__item preview-sidebar__item--active"
|
|
href="#"
|
|
>
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="M4 17.5h16M6.5 14V9M12 14V5M17.5 14v-3"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
<path
|
|
d="M4 19.5h16"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
<span>Overview</span>
|
|
</a>
|
|
<a class="preview-sidebar__item" href="./service-catalog.html">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<rect
|
|
x="4"
|
|
y="4"
|
|
width="6"
|
|
height="6"
|
|
rx="1"
|
|
stroke-width="1.8"
|
|
></rect>
|
|
<rect
|
|
x="14"
|
|
y="4"
|
|
width="6"
|
|
height="6"
|
|
rx="1"
|
|
stroke-width="1.8"
|
|
></rect>
|
|
<rect
|
|
x="4"
|
|
y="14"
|
|
width="6"
|
|
height="6"
|
|
rx="1"
|
|
stroke-width="1.8"
|
|
></rect>
|
|
<rect
|
|
x="14"
|
|
y="14"
|
|
width="6"
|
|
height="6"
|
|
rx="1"
|
|
stroke-width="1.8"
|
|
></rect>
|
|
</svg>
|
|
<span>Services</span>
|
|
</a>
|
|
<a class="preview-sidebar__item" href="./incident-log.html">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="M5 4.5h14v15H5z"
|
|
stroke-width="1.8"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<path
|
|
d="M8 8h8M8 12h6M8 16h4"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
<span>Activity</span>
|
|
</a>
|
|
<div class="preview-sidebar__section">Workspace</div>
|
|
<a class="preview-sidebar__item" href="./request-lab.html">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="m8 8-4 4 4 4M16 8l4 4-4 4M14 5l-4 14"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
</svg>
|
|
<span>Request Lab</span>
|
|
</a>
|
|
<a class="preview-sidebar__item" href="./incident-log.html">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="M12 4.5v8l5 3"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<circle cx="12" cy="12" r="8.5" stroke-width="1.8"></circle>
|
|
</svg>
|
|
<span>Incident Log</span>
|
|
</a>
|
|
</aside>
|
|
|
|
<main class="preview-main">
|
|
<section class="preview-hero" aria-labelledby="page-title">
|
|
<div class="preview-hero__mesh"></div>
|
|
<div class="preview-hero__eyebrow">Operations / Live overview</div>
|
|
<h1 class="preview-hero__title" id="page-title">Command Center</h1>
|
|
<p class="preview-hero__subtitle">
|
|
Current health, polling freshness, and important service signals
|
|
across the XTransit platform.
|
|
</p>
|
|
<div class="preview-hero__actions">
|
|
<button class="preview-btn preview-btn--primary">
|
|
<svg
|
|
class="preview-icon"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
d="M12 4v8l4 2"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<path
|
|
d="M19.5 12a7.5 7.5 0 1 1-2.2-5.3"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
<path
|
|
d="M17 4h3v3"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
</svg>
|
|
<span>Run health check</span>
|
|
</button>
|
|
<span class="preview-badge preview-badge--success"
|
|
><span class="preview-badge__dot"></span>Polling every 60
|
|
seconds</span
|
|
>
|
|
</div>
|
|
</section>
|
|
|
|
<section class="preview-kpi-row" aria-label="Platform health summary">
|
|
<article class="preview-kpi">
|
|
<svg
|
|
class="preview-icon preview-icon--lg"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
d="M4 19.5h16M6.5 16V8M12 16V4.5M17.5 16v-5"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
<span class="preview-kpi__label">Monitored services</span>
|
|
<strong class="preview-kpi__value">4</strong>
|
|
<span class="preview-kpi__delta">Across APIs and admin UI</span>
|
|
</article>
|
|
<article class="preview-kpi">
|
|
<svg
|
|
class="preview-icon preview-icon--lg"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
d="m5 12 4.5 4.5L19 7"
|
|
stroke-width="2"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<circle cx="12" cy="12" r="9" stroke-width="1.8"></circle>
|
|
</svg>
|
|
<span class="preview-kpi__label">Operational</span>
|
|
<strong class="preview-kpi__value">3</strong>
|
|
<span class="preview-kpi__delta preview-kpi__delta--up"
|
|
>75% of monitored services</span
|
|
>
|
|
</article>
|
|
<article class="preview-kpi">
|
|
<svg
|
|
class="preview-icon preview-icon--lg"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
d="M12 4.5 20 19H4L12 4.5Z"
|
|
stroke-width="1.8"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<path
|
|
d="M12 10v4M12 16.5v.1"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
<span class="preview-kpi__label">Degraded</span>
|
|
<strong class="preview-kpi__value">1</strong>
|
|
<span class="preview-kpi__delta"
|
|
>Error Log API needs attention</span
|
|
>
|
|
</article>
|
|
<article class="preview-kpi">
|
|
<svg
|
|
class="preview-icon preview-icon--lg"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<circle cx="12" cy="12" r="8.5" stroke-width="1.8"></circle>
|
|
<path
|
|
d="M12 7v5l3.5 2"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
</svg>
|
|
<span class="preview-kpi__label">Last poll</span>
|
|
<strong class="preview-kpi__value">18 sec ago</strong>
|
|
<span class="preview-kpi__delta">Next poll in 42 seconds</span>
|
|
</article>
|
|
</section>
|
|
|
|
<section class="preview-two-column" aria-label="Service signals">
|
|
<div>
|
|
<div class="preview-section-title">
|
|
<h2 class="preview-section-title__h">
|
|
<svg
|
|
class="preview-icon"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
d="M4 12h4l2-7 4 14 2-7h4"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
</svg>
|
|
Service health
|
|
</h2>
|
|
<span class="preview-section-title__hint"
|
|
>Live response checks</span
|
|
>
|
|
</div>
|
|
<div class="preview-table-wrap">
|
|
<table class="preview-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Service</th>
|
|
<th>Latency</th>
|
|
<th>Status</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>
|
|
<strong>Transit API</strong><br /><span
|
|
class="preview-section-title__hint"
|
|
>/health</span
|
|
>
|
|
</td>
|
|
<td>184 ms</td>
|
|
<td>
|
|
<span class="preview-badge preview-badge--success"
|
|
><span class="preview-badge__dot"></span
|
|
>Operational</span
|
|
>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<strong>Employee API</strong><br /><span
|
|
class="preview-section-title__hint"
|
|
>/health</span
|
|
>
|
|
</td>
|
|
<td>96 ms</td>
|
|
<td>
|
|
<span class="preview-badge preview-badge--success"
|
|
><span class="preview-badge__dot"></span
|
|
>Operational</span
|
|
>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<strong>Error Log API</strong><br /><span
|
|
class="preview-section-title__hint"
|
|
>/health</span
|
|
>
|
|
</td>
|
|
<td>121 ms</td>
|
|
<td>
|
|
<span class="preview-badge preview-badge--warning"
|
|
><span class="preview-badge__dot"></span
|
|
>Degraded</span
|
|
>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
<strong>Admin UI</strong><br /><span
|
|
class="preview-section-title__hint"
|
|
>http://localhost:5173</span
|
|
>
|
|
</td>
|
|
<td>42 ms</td>
|
|
<td>
|
|
<span class="preview-badge preview-badge--success"
|
|
><span class="preview-badge__dot"></span
|
|
>Operational</span
|
|
>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<div>
|
|
<div class="preview-section-title">
|
|
<h2 class="preview-section-title__h">
|
|
<svg
|
|
class="preview-icon"
|
|
viewBox="0 0 24 24"
|
|
aria-hidden="true"
|
|
>
|
|
<path
|
|
d="M4.5 5.5h15v13h-15z"
|
|
stroke-width="1.8"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
<path
|
|
d="M8 9h8M8 13h5"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
</svg>
|
|
Recent poll activity
|
|
</h2>
|
|
<span class="preview-section-title__hint">Updating</span>
|
|
</div>
|
|
<div
|
|
class="preview-card"
|
|
aria-label="Recent poll activity loading"
|
|
>
|
|
<div class="preview-skeleton preview-skeleton--title"></div>
|
|
<div class="preview-skeleton preview-skeleton--line"></div>
|
|
<div class="preview-skeleton preview-skeleton--line"></div>
|
|
<div class="preview-skeleton preview-skeleton--line"></div>
|
|
<div class="preview-skeleton preview-skeleton--block"></div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<div class="preview-action-bar">
|
|
<span class="preview-section-title__hint"
|
|
>Signed in as Ava Morgan · Operator access</span
|
|
>
|
|
<button class="preview-btn preview-btn--secondary">
|
|
<svg class="preview-icon" viewBox="0 0 24 24" aria-hidden="true">
|
|
<path
|
|
d="M4 12a8 8 0 1 0 2.3-5.7"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
></path>
|
|
<path
|
|
d="M4 5v5h5"
|
|
stroke-width="1.8"
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
></path>
|
|
</svg>
|
|
<span>Refresh overview</span>
|
|
</button>
|
|
</div>
|
|
</main>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|