──────
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
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
This commit is contained in:
@@ -0,0 +1,247 @@
|
||||
{
|
||||
"schemaVersion": "2",
|
||||
"generatedAt": "2026-09-20T00:00:00.000Z",
|
||||
"mode": "NEW",
|
||||
"summary": "A new React + Vite monitoring dashboard for the existing XTransit APIs and admin UI. It will aggregate health, service capabilities, error activity, and a guarded API request tester without adding a new datastore.",
|
||||
"workspaceSignals": {
|
||||
"detectedFiles": [
|
||||
"README.md",
|
||||
"docker-compose.yml",
|
||||
"auth_api/index.js",
|
||||
"auth_api/package.json",
|
||||
"employee_api/index.js",
|
||||
"employee_api/package.json",
|
||||
"transit_api/index.js",
|
||||
"transit_api/package.json",
|
||||
"error_log_api/index.js",
|
||||
"error_log_api/package.json",
|
||||
"admin_ui/package.json",
|
||||
"admin_ui/src/api.js",
|
||||
"admin_ui/src/App.jsx",
|
||||
"DOMAINS_README.md",
|
||||
"admin_ui/README.md",
|
||||
"admin_ui/SCHEDULE_API.md",
|
||||
"transit_api/README.md"
|
||||
],
|
||||
"decision": "NEW",
|
||||
"decisionReason": "The repository contains the existing services and admin UI, but no monitoring dashboard; the requested dashboard is a new project folder within this workspace."
|
||||
},
|
||||
"services": [
|
||||
{
|
||||
"id": "transit-monitor-dashboard",
|
||||
"label": "Transit Monitor Dashboard",
|
||||
"role": "frontend",
|
||||
"root": "./monitoring_dashboard"
|
||||
},
|
||||
{
|
||||
"id": "monitoring-proxy-api",
|
||||
"label": "Monitoring Proxy API",
|
||||
"role": "backend",
|
||||
"root": "./monitoring_dashboard/server"
|
||||
}
|
||||
],
|
||||
"questions": [
|
||||
{
|
||||
"id": "transit-monitor-dashboard:language",
|
||||
"category": "service",
|
||||
"question": "Which programming language for Transit Monitor Dashboard?",
|
||||
"header": "Language",
|
||||
"answer": "TypeScript",
|
||||
"status": "confirmed",
|
||||
"rationale": "The requested framework is explicitly React + Vite, but the language was not specified; TypeScript is recommended for the dashboard's endpoint catalog and response-shape handling.",
|
||||
"options": [
|
||||
{
|
||||
"label": "TypeScript",
|
||||
"description": "Type-safe React application code"
|
||||
},
|
||||
{
|
||||
"label": "JavaScript",
|
||||
"description": "Plain JavaScript matching the existing admin UI"
|
||||
}
|
||||
],
|
||||
"recommendedChoice": "TypeScript",
|
||||
"multiSelect": false,
|
||||
"allowFreeformInput": false,
|
||||
"serviceId": "transit-monitor-dashboard"
|
||||
},
|
||||
{
|
||||
"id": "transit-monitor-dashboard:framework",
|
||||
"category": "service",
|
||||
"question": "Which frontend framework for Transit Monitor Dashboard?",
|
||||
"header": "Framework",
|
||||
"answer": "React + Vite",
|
||||
"status": "confirmed",
|
||||
"rationale": "React + Vite is explicitly requested.",
|
||||
"options": [
|
||||
{
|
||||
"label": "React + Vite",
|
||||
"description": "React SPA with Vite, as requested"
|
||||
},
|
||||
{
|
||||
"label": "Vue + Vite",
|
||||
"description": "Vue SPA with Vite"
|
||||
},
|
||||
{
|
||||
"label": "Angular",
|
||||
"description": "Angular application"
|
||||
},
|
||||
{
|
||||
"label": "Svelte",
|
||||
"description": "Svelte application with Vite"
|
||||
}
|
||||
],
|
||||
"recommendedChoice": "React + Vite",
|
||||
"multiSelect": false,
|
||||
"allowFreeformInput": true,
|
||||
"serviceId": "transit-monitor-dashboard"
|
||||
},
|
||||
{
|
||||
"id": "transit-monitor-dashboard:features",
|
||||
"category": "service",
|
||||
"question": "Describe the features or API routes for Transit Monitor Dashboard.",
|
||||
"header": "Features",
|
||||
"answer": "Service health overview for auth_api, employee_api, transit_api, error_log_api, and admin_ui; service capability catalog; error and bad-request views; guarded live request tester; configurable environments; polling controls; response timing and status history.",
|
||||
"status": "confirmed",
|
||||
"rationale": "Distilled from the requested monitoring, service-data, error, request-testing, and health-check workflows.",
|
||||
"recommendedChoice": "Service health overview for auth_api, employee_api, transit_api, error_log_api, and admin_ui; service capability catalog; error and bad-request views; guarded live request tester; configurable environments; polling controls; response timing and status history.",
|
||||
"multiSelect": false,
|
||||
"serviceId": "transit-monitor-dashboard"
|
||||
},
|
||||
{
|
||||
"id": "monitoring-proxy-api:language",
|
||||
"category": "service",
|
||||
"question": "Which programming language for Monitoring Proxy API?",
|
||||
"header": "Language",
|
||||
"answer": "TypeScript",
|
||||
"status": "confirmed",
|
||||
"rationale": "The workspace already uses Node.js services and the proxy needs shared typed endpoint metadata and response normalization; TypeScript is recommended, but the user did not explicitly choose the proxy language.",
|
||||
"options": [
|
||||
{
|
||||
"label": "TypeScript",
|
||||
"description": "Node.js + TypeScript proxy service"
|
||||
},
|
||||
{
|
||||
"label": "Python",
|
||||
"description": "Python proxy service"
|
||||
},
|
||||
{
|
||||
"label": "C# (.NET)",
|
||||
"description": ".NET proxy service"
|
||||
}
|
||||
],
|
||||
"recommendedChoice": "TypeScript",
|
||||
"multiSelect": false,
|
||||
"allowFreeformInput": false,
|
||||
"serviceId": "monitoring-proxy-api"
|
||||
},
|
||||
{
|
||||
"id": "monitoring-proxy-api:framework",
|
||||
"category": "service",
|
||||
"question": "Which backend framework for Monitoring Proxy API?",
|
||||
"header": "Framework",
|
||||
"answer": "Express",
|
||||
"status": "confirmed",
|
||||
"rationale": "Express matches the existing API services and is sufficient for an allowlisted proxy, health aggregation, and request execution endpoints.",
|
||||
"options": [
|
||||
{
|
||||
"label": "Express",
|
||||
"description": "Small Node.js HTTP proxy consistent with the existing APIs"
|
||||
},
|
||||
{
|
||||
"label": "Fastify",
|
||||
"description": "Typed, low-overhead Node.js HTTP service"
|
||||
},
|
||||
{
|
||||
"label": "Azure Functions",
|
||||
"description": "Serverless HTTP functions"
|
||||
}
|
||||
],
|
||||
"recommendedChoice": "Express",
|
||||
"multiSelect": false,
|
||||
"allowFreeformInput": true,
|
||||
"serviceId": "monitoring-proxy-api"
|
||||
},
|
||||
{
|
||||
"id": "monitoring-proxy-api:features",
|
||||
"category": "service",
|
||||
"question": "Describe the features or API routes for Monitoring Proxy API.",
|
||||
"header": "Features",
|
||||
"answer": "Environment-configured upstream base URLs; aggregated health checks including admin_ui; allowlisted endpoint catalog; authenticated request execution with safe method/body/timeout limits; error-log read proxy; redacted structured results; CORS and rate limiting.",
|
||||
"status": "confirmed",
|
||||
"rationale": "The proxy is planned to centralize cross-origin access and protect administrative/tester capabilities while preserving the existing APIs unchanged.",
|
||||
"recommendedChoice": "Environment-configured upstream base URLs; aggregated health checks including admin_ui; allowlisted endpoint catalog; authenticated request execution with safe method/body/timeout limits; error-log read proxy; redacted structured results; CORS and rate limiting.",
|
||||
"multiSelect": false,
|
||||
"serviceId": "monitoring-proxy-api"
|
||||
},
|
||||
{
|
||||
"id": "dataStores",
|
||||
"category": "data",
|
||||
"question": "Which data stores does your app need?",
|
||||
"header": "Data Stores",
|
||||
"answer": [
|
||||
"No datastore required"
|
||||
],
|
||||
"status": "confirmed",
|
||||
"rationale": "The dashboard monitors and queries the existing APIs and error-log database; it needs only bounded in-memory polling state and does not introduce persistence, file storage, queues, or caches.",
|
||||
"options": [
|
||||
{
|
||||
"label": "No datastore required",
|
||||
"description": "The dashboard reads existing APIs and does not persist new data",
|
||||
"exclusive": true
|
||||
},
|
||||
{
|
||||
"label": "Blob Storage",
|
||||
"description": "Store files and images"
|
||||
},
|
||||
{
|
||||
"label": "Queue Storage",
|
||||
"description": "Async message queue"
|
||||
},
|
||||
{
|
||||
"label": "PostgreSQL",
|
||||
"description": "Relational database"
|
||||
},
|
||||
{
|
||||
"label": "CosmosDB",
|
||||
"description": "NoSQL document database"
|
||||
},
|
||||
{
|
||||
"label": "Redis",
|
||||
"description": "In-memory cache"
|
||||
},
|
||||
{
|
||||
"label": "Azure SQL",
|
||||
"description": "Managed SQL Server"
|
||||
}
|
||||
],
|
||||
"recommendedChoice": [
|
||||
"No datastore required"
|
||||
],
|
||||
"multiSelect": true,
|
||||
"allowFreeformInput": false
|
||||
},
|
||||
{
|
||||
"id": "auth",
|
||||
"category": "auth",
|
||||
"question": "Does this app need user login?",
|
||||
"header": "API Login",
|
||||
"answer": "Yes",
|
||||
"status": "confirmed",
|
||||
"rationale": "Reading centralized errors and exercising authenticated transit/admin endpoints must be restricted to authorized dashboard users.",
|
||||
"options": [
|
||||
{
|
||||
"label": "Yes",
|
||||
"description": "Add a user sign-in flow and authenticated API access"
|
||||
},
|
||||
{
|
||||
"label": "No",
|
||||
"description": "No user sign-in or authenticated API access"
|
||||
}
|
||||
],
|
||||
"recommendedChoice": "Yes",
|
||||
"multiSelect": false,
|
||||
"allowFreeformInput": false
|
||||
}
|
||||
],
|
||||
"executionMode": "guided"
|
||||
}
|
||||
Reference in New Issue
Block a user