Architecture

Current Architecture State

Last updated: 2026-02-01 | Architecture

Current Architecture State

Overview

The Agile Network platform is built as a distributed microservice architecture hosted on Google Kubernetes Engine (GKE), deployed via ArgoCD (GitOps), and managed across ~191 repositories in the favedom-dev GitHub organization.

The architecture spans two generations of services running concurrently: - Gen 1 (“Peeq”): Java 11 / Spring Boot 2.6.8 — 107 peeq-* repos - Gen 2 (“VelocityZ”): Java 21 / Spring Boot 3.5.4 — non-prefixed repos

Architecture Diagram

graph TB
    subgraph "Frontends"
        PM[peeq-mono<br/>Angular 18/Nx/Ionic]
        FE[frontends<br/>Angular 14/Nx]
        LP[landing-page]
    end

    subgraph "Identity"
        KC[Keycloak<br/>OAuth2/OIDC]
        KCT[Keycloak Themes<br/>celeb/fan/handler]
    end

    subgraph "Core Services (Gen 2)"
        CEL[celebrity<br/>Java 21/SB 3.5]
        FAN[fan<br/>Java 21/SB 3.5]
        CON[content<br/>Java 21/SB 3.2]
        BC[broadcast]
        MSG[messages]
    end

    subgraph "Legacy Services (Gen 1)"
        PC[peeq-celebrity<br/>Java 11/SB 2.6]
        PF[peeq-fan<br/>Java 11/SB 2.6]
        PB[peeq-broadcast<br/>Java 11/SB 2.6]
        PS[peeq-stripe<br/>Java 11/SB 2.6]
        PW[peeq-wallet<br/>Java 11/SB 2.6]
        PE[peeq-email<br/>Java 11/SB 2.6]
    end

    subgraph "BPM Engine"
        CAM[CIB Seven/Camunda]
        BPM1[broadcast-bpm]
        BPM2[shoutout-bpm]
        BPM3[meet-greet-bpm]
    end

    subgraph "Data Layer"
        PG[(PostgreSQL<br/>per-service DBs)]
        ES[(Elasticsearch)]
        RMQ[RabbitMQ]
        PGB[PgBouncer]
    end

    subgraph "External Services"
        MUX[Mux<br/>Video Streaming]
        STR[Stripe<br/>Payments]
        DWL[Dwolla<br/>Disbursements]
        TXR[Tixr<br/>Ticketing]
        JIT[Jitsi<br/>Video Chat]
        ZD[Zendesk<br/>Support]
    end

    subgraph "Infrastructure"
        GKE[GKE Cluster]
        ARGO[ArgoCD]
        TF[Terraform]
        HELM[Helm Charts]
    end

    subgraph "Data Pipeline"
        AIR[Airbyte<br/>ETL]
        SS[Superset<br/>Analytics]
        DLT[DLT Pipelines]
    end

    PM --> KC
    FE --> KC
    PM --> CEL & FAN & CON & BC
    FE --> CEL & FAN & CON

    CEL --> PG
    FAN --> PG
    CON --> PG & MUX
    BC --> PG & MUX & JIT
    PS --> STR
    PW --> DWL

    PG --> PGB
    CAM --> BPM1 & BPM2 & BPM3

    ARGO --> GKE
    TF --> GKE

Service Generation Comparison

Aspect Gen 1 (peeq-*) Gen 2 (velocityz)
Java Version 11 21
Spring Boot 2.6.8 3.5.4
Package Group com.peeq com.velocityz
Repo Count 107 repos ~30 repos
Decomposition Very fine-grained (service + db + bpm + query) More consolidated
CI/CD Jenkins X (legacy) GitHub Actions
Shared Libs peeq-shared-lib, peeq-messages core-lib, messages
Status Legacy, some still running Active development

Frontend Architecture

peeq-mono (Primary Frontend)

frontends (Admin/Celeb/Org Dashboard)

Database Architecture

Each service domain has its own PostgreSQL database: - Schemas managed via Flyway migrations in dedicated *-db repos - Connection pooling via PgBouncer - H2 used for local development and testing - NFS filesystem backend for content storage (Spring Content)

Known Database Repos

DB Repo Service Migration Count
peeq-celebrity-db Celebrity profiles 18 versions
peeq-fan-db Fan profiles TBD
peeq-content-db Content/media TBD
peeq-broadcast-db Broadcasts TBD
peeq-stripe-db Payment records TBD
peeq-wallet-db Wallet/transactions TBD
peeq-shoutout-db Shoutouts TBD
peeq-message-board-db Message boards TBD
peeq-inventory-db Event inventory TBD
peeq-subscription-db Subscriptions TBD
peeq-tags-db Tagging system TBD
peeq-stream-db Streaming data TBD
peeq-sse-db SSE events TBD
peeq-notification-service-db Notifications TBD
peeq-onsite-event-db Onsite events TBD
peeq-group-profile-db Group profiles TBD
peeq-media-db Media assets TBD
peeq-encryption-db Encryption keys TBD
peeq-custom-tixr-db Tixr integration TBD
peeq-dwolla-db Dwolla payments TBD
peeq-charity-db Charity features TBD
peeq-class-catalog-db Class scheduling TBD
peeq-mux-livestream-db Mux livestreams TBD
peeq-transaction-db Transactions TBD
node-tracking-db Analytics tracking TBD

BPM Workflows

Business processes managed by Camunda/CIB Seven:

BPM Repo Workflow
peeq-broadcast-bpm Broadcast lifecycle (schedule, go-live, end)
peeq-celeb-broadcast-bpm Celebrity-initiated broadcasts
peeq-fan-broadcast-bpm Fan-facing broadcast interactions
peeq-handler-broadcast-bpm Handler-managed broadcasts
peeq-shoutout-bpm Shoutout request/fulfill/deliver
peeq-meet-and-greet-bpm Meet-and-greet scheduling and execution
peeq-mux-livestream-bpm Mux livestream lifecycle
peeq-purchase-request-bpm Purchase request approval workflow
peeq-recording-meet-greet-keepsake-videos-bpm Post-event video delivery
purchase-request-bpm Purchase request (Gen 2)
shoutout-bpm Shoutout (Gen 2)

Infrastructure

Deployment

CI/CD

Monitoring & Logging

Configuration

Validated Production Deployment (Session 0)

Cross-referenced across 3 sources: ArgoCD prod manifests, Helm chart definitions, and Istio VirtualService routing. All 3 sources agree on the list below.

Production Tenants

4 tenants deployed: agilenetwork, nilgameplan, speedofai, vtnil

BrainTrust and FanFuze NIL appear in preview/dev configs but are NOT deployed to production.

Application Services in Production (35)

Service Tenants Category
admin-fe 4/4 Frontend
celeb-fe 4/4 Frontend
mono-web 4/4 Frontend
celebrity 4/4 Core Identity
fan 4/4 Core Identity
users 4/4 Core Identity
identityx-26 4/4 Identity/Keycloak
identityx-25 1/4 (agilenetwork) Identity/Keycloak (legacy)
content 4/4 Content & Media
media 4/4 Content & Media
webinar 4/4 Content & Streaming
stripe 4/4 Payments
subscriptions 4/4 Payments
transaction 4/4 Payments
wallet 4/4 Payments
purchase-request-bpm 4/4 BPM/Payments
shoutout 4/4 Events & Experiences
shoutout-bpm 4/4 BPM/Events
inventory 4/4 Events
class-catalog 3/4 Events
onsite-event 1/4 (vtnil) Events
email 4/4 Communication
sms 4/4 Communication
chat 3/4 Communication
notifications 4/4 Communication
sse 4/4 Communication
message-board 2/4 Communication
search 1/4 (agilenetwork) Discovery
tags 4/4 Discovery
tracking 4/4 Analytics
journey 3/4 Analytics
group-profile 4/4 Organization
org-manager 4/4 Organization
query 1/4 (vtnil) Legacy Query
investordeck 1/4 (nilgameplan) Special Purpose

Infrastructure Services in Production

Service Purpose
pgbouncer PostgreSQL connection pooling
rabbitmq Message queue
redis Caching
istio + istio-gateway Service mesh and ingress
cert-manager TLS certificate management
external-dns DNS record automation
nfs-provisioner Network file storage (Spring Content)
castai + castai-pod-node-lifecycle Kubernetes cost optimization
kube-fledged Image pre-caching
kube-prometheus-stack Monitoring
superset Analytics dashboards (3/4 tenants)
site-maintenance Maintenance page
cdn Content delivery
pvcs Persistent volume claims
secrets Secret management

NOT Deployed to Production

Service Evidence Implication
broadcast (all variants) No ArgoCD prod app H1 verified — broadcast inactive
peeq-dwolla No ArgoCD prod app H2 partially supported — Dwolla not deployed
peeq-conference / peeq-conference-sse No ArgoCD prod app Conference functionality inactive
peeq-recommendation-engine No ArgoCD prod app Recommendation not in prod
node-tracking No ArgoCD prod app (tracking IS deployed) Gen 2 tracking replaced it
athlete-manager Helm chart exists, not deployed Not yet activated
reporting Helm chart exists, not deployed Superset may have replaced it
All Gen 1 peeq-* services Only Gen 2 names in prod Gen 2 has replaced Gen 1 in prod (H3 partial)

New Discoveries (Session 0)

Archive Candidates

Repos meeting BOTH criteria: (1) no ArgoCD production deployment, AND (2) no git commits after 2025-06-30.

Tier 1: Safe to Archive Immediately (No prod deployment + No activity >18 months)

Repo Last Commit Reason
peeq-jitsi-meet 2020-05-28 Replaced by webinar service
peeq-celeb-ui 2020-07-20 Replaced by frontends/peeq-mono
peeq-shared-jitsi-library 2020-08-03 Jitsi integration inactive
peeq-celeb-fe-ui 2020-08-04 Replaced by frontends/peeq-mono
peeq-fan-app 2020-08-30 Replaced by peeq-mono Ionic
peeq-celebrity-app 2020-08-31 Replaced by peeq-mono Ionic
peeq-encryption 2020-09-24 Encryption service not in prod
peeq-keycloak-archive Pre-2022 Explicitly archived
dlt-pipelines No commits Empty repo

Tier 2: Likely Archivable (No prod deployment + No activity >6 months)

These repos are not deployed to production and haven’t been modified recently. Verify no downstream dependency before archiving.

Gen 1 services with Gen 2 replacements (not in prod): - peeq-celebrity, peeq-fan, peeq-content, peeq-broadcast, peeq-media - peeq-shoutout, peeq-wallet, peeq-transaction, peeq-subscriptions - peeq-email, peeq-sms, peeq-chat, peeq-notification-service - peeq-message-board, peeq-sse, peeq-inventory, peeq-class-catalog - peeq-onsite-event, peeq-group-profile, peeq-tags, peeq-users - peeq-stream, peeq-query, peeq-webinar, peeq-mux-livestream

Gen 1 BPM repos (Gen 2 BPM replacements exist): - peeq-broadcast-bpm, peeq-celeb-broadcast-bpm, peeq-fan-broadcast-bpm - peeq-handler-broadcast-bpm, peeq-shoutout-bpm, peeq-meet-and-greet-bpm - peeq-mux-livestream-bpm, peeq-purchase-request-bpm - peeq-recording-meet-greet-keepsake-videos-bpm

Gen 1 standalone frontends: - peeq-admin-fe, peeq-celeb-fe, peeq-fan-fe, peeq-handler-fe - peeq-library-fe, peeq-fan-ionic, peeq-talent-app

Other inactive: - peeq-conference, peeq-conference-sse, peeq-dwolla - peeq-broadcast-query, peeq-celeb-broadcast - peeq-shared-secret, peeq-etl, peeq-reporting - peeq-sandbox, peeq-integration-test, peeq-load - peeq-logging, peeq-scheduler, peeq-external-task-gateway - peeq-recommendation-engine, peeq-zendesk, peeq-charity - peeq-image-processing, peeq-meetandgreet-for-iOS - peeq-nugets, peeq-meet-greet-operator

POCs and experiments: - coolify-poc, dokploy-poc, firebase-poc, zoom-cli - llm-agent-example, example-java-springboot3

Infrastructure (superseded): - peeq-keycloak, peeq-kibana, peeq-kibana-deploy - peeq-airbyte, terraform-google-jx

Archive Summary

Tier Count Action
Tier 1 (immediate) 9 Archive now — zero risk
Tier 2 (likely) ~100 Verify no hidden dependencies, then archive
Total archivable ~109 ~57% of 191 repos (supports H5)
Keep active ~82 Prod services + infra + DB repos + active tools

Access Inventory (Session 0)

What data sources are available for analysis, and which require additional access.

Resource Status Tool Impact on Analysis
GitHub repos (all 191) Available gh CLI, local clones Full code analysis possible
ArgoCD deployments Available Local clone of argocd-deployments Deployment topology validated
Helm charts Available Local clone of helm-charts Service configurations available
Istio routing Available VirtualService YAML in repos Routing topology available
Flyway migrations Available SQL files in *-db repos Schema analysis possible
gcloud CLI Installed gcloud GKE cluster access possible (auth may be needed)
kubectl Installed kubectl K8s resource inspection (context config needed)
Production databases Unknown No psql CLI installed Cannot query table sizes, row counts directly
Stripe dashboard Unknown No stripe CLI installed Cannot verify webhook configs, subscription data
Keycloak admin Unknown Web UI access needed Cannot verify realm config, client counts
RabbitMQ management Unknown Web UI access needed Cannot verify queue depths, message rates
Elasticsearch/Kibana Unknown Web UI access needed Cannot verify index sizes, query patterns
Superset Unknown Web UI access needed Cannot verify dashboard usage
Mux dashboard Unknown Web UI access needed Cannot verify stream configs

Impact on Hypotheses

Recommendation

Request access to production databases (read-only) and Stripe dashboard before Sessions 4-5 (payment domain). For Sessions 1-3, code-level analysis is sufficient.

Key Observations

  1. Significant duplication: Gen 1 and Gen 2 services exist for same domains (celebrity, fan, content, broadcast)
  2. Over-decomposed: Gen 1 has separate repos for service, DB, BPM, and query — leads to 4 repos per domain
  3. Mixed Java versions: Java 11 and Java 21 running concurrently
  4. Frontend fragmentation: Two separate Angular monorepos at different versions
  5. ~109 repos archivable: 57% of repos have no production deployment and no recent activity
  6. Large migration surface: 25+ database repos with Flyway migrations
  7. 4 production tenants: Not 5 brands — BrainTrust and FanFuze NIL are dev-only
  8. Gen 1 fully replaced in prod: Only Gen 2 service names appear in ArgoCD production

Last updated: 2026-01-30 — Session 0 validation Review by: 2026-04-30 Staleness risk: High — deployment topology changes with each release