Skip to content

OPS Ecosystem — MQA Governance Portal

Services & Costs — full vendor & pricing overview · Executive Overview — decision-maker summaries

Status: August 2026 · Type: SMG (MQA Group client project)

Architecture Overview

                    ┌─────────────────────────────────┐
                    │  Cloudflare (DNS + R2)          │
                    │  mqa.group                      │
                    │  ⚠️ Migration → MQA org pending │
                    └──────────┬──────────────────────┘

         portal.mqa.group      │      api.mqa.group
              ┌────────────────┴────────────────┐
              ▼                                 ▼
    ┌──────────────────┐              ┌──────────────────┐
    │ mqa-frontend     │   HTTPS      │ mqa-backend      │
    │ Render (Node)    │─────────────▶│ Render (Docker)  │
    │ Frankfurt        │              │ Frankfurt        │
    └──────────────────┘              └────────┬─────────┘


                                    ┌──────────────────┐
                                    │ mqa-postgres     │
                                    │ Render Pro PG18  │
                                    │ Frankfurt        │
                                    └──────────────────┘

Platform Accounts (Target State)

PlatformOrg AccountStatusOwner
GitHubMQA-Group✅ Private repoMQA Dev
RenderMQA Group Team✅ Production live, project “MQA Governance Portal”MQA Dev
CloudflareMQA Organisation⚠️ R2 ✅ · DNS zone still privateDNS migration pending
Azure ADMQA Tenant✅ OAuth Microsoft 365MQA IT
Resend / EmailMQAMQA Dev

Production Domains

RoleURL
Frontendhttps://portal.mqa.group
Backend APIhttps://api.mqa.group/api
Legacy frontendhttps://governance.mqa.group (legacy CORS)

Render Project Structure

ProjectEnvironmentsServices
MQA Governance Portal (prj-d9ofcgjncjis73bu7960)Production, Staging4 web services (2× prod, 2× staging)

Postgres instances (mqa-postgres, mqa-postgres-staging) currently sit outside the project — Render API does not allow moving them later; assign manually in the dashboard if needed.

Staging (live)

RoleURL
Frontendhttps://staging.portal.mqa.group
Backendhttps://staging.api.mqa.group/api

Blueprint: render-staging.yaml — see STAGING-SETUP

CI/CD

StepTool
SourceGitHub MQA-Group/MQA-Governance-Portal
CIGitHub Actions (.github/workflows/ci.yml)
CDRender auto-deploy on push to main

Data Flows

  • Auth: Microsoft OAuth → JWT (Bearer, frontend sessionStorage)
  • Media Hub: Browser → presigned URL → Cloudflare R2 (EU)
  • Legacy uploads: /uploads/* on backend disk (auth-protected; migrate to R2 recommended)
  • Email: Resend / Microsoft Graph (server-side)

Single Points of Failure (Aug 2026)

RiskStatusNotes
Cloudflare on personal accountPartially resolvedR2 mqa-media → MQA org ✅ · DNS zone mqa.group still on private account ⚠️ → CLOUDFLARE-MIGRATION
No stagingResolveddevelop → staging services live · staging.portal / staging.api DNS live → STAGING-STATUS
No external monitoring/alertingOpenRender notifications only · Better Stack / Sentry still TODO → MONITORING
Uploads on ephemeral Render FSPartially resolvedMedia Hub → R2 ✅ · legacy /uploads/* on backend disk still present

See OPS-ROADMAP for remaining items.