This document maps every backend module to its functional domain, primary owner, and secondary reviewer. Use it to route issues, PR reviews, and incident escalations to the correct maintainer quickly.
Related documents:
- TRIAGE_AND_REVIEW.md — Triage workflow and review criteria
- docs/TRIAGE_ROTATION_CALENDAR.md — Weekly rotation schedule and escalation timeline
- docs/SERVICE_DEPENDENCY_MATRIX.md — Cross-service dependencies and startup order
- backend/README.md — Backend API overview and environment variables
- Find the module or feature area affected by the issue / PR in the Module Ownership Map below.
- Look up the Primary and Secondary maintainers in this registry.
- Assign or request review from the Primary first. If Primary is unavailable, go to Secondary.
- For P0/P1 incidents, page both Primary and Secondary immediately (see escalation rules in TRIAGE_ROTATION_CALENDAR.md).
| Handle | Name | Role | Domains of Expertise | Slack | Timezone |
|---|---|---|---|---|---|
@backend-lead |
[TBD] | Backend Tech Lead | All domains; architecture & breaking changes | #backend-oncall |
[TBD] |
@auth-owner |
[TBD] | Senior Engineer | Authentication, RBAC, Wallet Security | #backend-oncall |
[TBD] |
@data-owner |
[TBD] | Senior Engineer | Database, Prisma, Migrations, Exports | #backend-oncall |
[TBD] |
@vault-domain-owner |
[TBD] | Domain Specialist | Vault state, Transactions, APY, Reconciliation | #backend-oncall |
[TBD] |
@reliability-owner |
[TBD] | Reliability Engineer | Observability, Rate Limiting, Circuit Breakers, Jobs | #backend-oncall |
[TBD] |
@integrations-owner |
[TBD] | Integrations Engineer | Webhooks, Stellar/Soroban RPC, Email, S3 | #backend-oncall |
[TBD] |
@platform-owner |
[TBD] | Platform Engineer | CI/CD, Deployment, Infra, Security scanning | #platform-oncall |
[TBD] |
To update this registry (e.g., new hire, role change):
- Open a docs-only PR modifying this table.
- Tag the current Backend Tech Lead for approval.
- Notify the team so triage rotation calendars are updated.
Modules are grouped by functional domain. Each entry lists:
- Domain / Module — High-level area and the specific source files under
backend/src/. - Primary — Default assignee and first reviewer for changes in this area.
- Secondary — Backup reviewer and escalation target.
- Criticality —
Core(P0 if broken),High(P1),Medium(P2),Low(P3). - Related Tests — Key test files under
backend/src/__tests__/that guard this module. - Labels — GitHub labels to apply when routing.
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Server entry, route mounting, dependency wiring | @backend-lead |
@reliability-owner |
Core | index.ts, swagger.ts, prisma.ts, prismaClient.ts, database.ts | api.test.ts | backend, api, core |
| Graceful shutdown & drain | @reliability-owner |
@backend-lead |
High | gracefulShutdown.ts | — | backend, reliability |
| Request context & scoped state | @backend-lead |
@auth-owner |
High | requestContext.ts, types/express.d.ts | requestContext.test.ts | backend, core |
| OpenTelemetry tracing | @reliability-owner |
@backend-lead |
Medium | tracing.ts | — | backend, observability |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| JWT login, nonce, refresh, logout | @auth-owner |
@backend-lead |
Core | auth.ts | auth.test.ts | backend, auth, security |
| Wallet nonce, signature & replay protection | @auth-owner |
@backend-lead |
Core | walletNonce.ts, walletSignature.ts, walletLock.ts, walletUtils.ts | walletNonce.test.ts, walletUtils.test.ts | backend, auth, security, wallet |
| API Key lifecycle & validation | @auth-owner |
@backend-lead |
Core | middleware/apiKeyAuth.ts, scopedAdminTokens.ts | rbac.test.ts | backend, auth, rbac, security |
| API Key audit trail | @auth-owner |
@data-owner |
High | apiKeyAudit.ts | — | backend, audit, security |
| Role-Based Access Control (admin tiers) | @auth-owner |
@backend-lead |
Core | middleware/rbac.ts | rbac.test.ts | backend, rbac, security |
| Admin impersonation sessions | @auth-owner |
@backend-lead |
High | impersonationSessionService.ts | impersonationSessions.test.ts | backend, auth, admin, security |
| Tenant guard (multi-tenancy hooks) | @auth-owner |
@backend-lead |
Medium | middleware/tenantGuard.ts | — | backend, auth |
| Wallet query guard (authorization) | @auth-owner |
@vault-domain-owner |
High | middleware/walletQueryGuard.ts | walletQueryGuard.test.ts | backend, auth, security |
| Wallet signed-action middleware | @auth-owner |
@vault-domain-owner |
Core | middleware/walletSignedAction.ts | — | backend, auth, wallet |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| CORS & origin restriction | @auth-owner |
@reliability-owner |
High | middleware/cors.ts | cors.test.ts | backend, middleware, security |
| Correlation ID injection | @reliability-owner |
@backend-lead |
Medium | middleware/correlationId.ts | — | backend, observability, middleware |
| Structured logging | @reliability-owner |
@backend-lead |
Medium | middleware/structuredLogging.ts | — | backend, observability, middleware |
| Request timeout per route tier | @reliability-owner |
@backend-lead |
High | middleware/timeoutMiddleware.ts | timeoutMiddleware.test.ts | backend, reliability, middleware |
| Error boundary & error formatting | @reliability-owner |
@backend-lead |
High | middleware/errorBoundary.ts, redaction.ts, sanitization.ts | errorBoundary.test.ts, sanitization.test.ts | backend, reliability, middleware |
| Zod request validation | @auth-owner |
@backend-lead |
High | middleware/validate.ts | validation.test.ts | backend, middleware |
| Payload size limits (tiered body parser) | @reliability-owner |
@auth-owner |
High | middleware/payloadLimit.ts | payloadLimit.test.ts | backend, middleware, security |
| Geofencing / country-based blocking | @auth-owner |
@reliability-owner |
High | middleware/geofencing.ts | geofencing.test.ts | backend, middleware, security |
| Allowlist middleware | @auth-owner |
@vault-domain-owner |
High | middleware/allowlist.ts | allowlist.test.ts | backend, middleware, whitelist |
| Response caching middleware | @reliability-owner |
@data-owner |
High | middleware/cache.ts | — | backend, cache, middleware |
| Adaptive throttling (SLO-driven) | @reliability-owner |
@backend-lead |
Medium | middleware/adaptiveThrottle.ts | — | backend, reliability, middleware |
| Withdrawal daily limit override | @vault-domain-owner |
@auth-owner |
High | middleware/withdrawalDailyLimit.ts | withdrawalDailyLimit.test.ts | backend, vault, limits |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Rate limiter factory (Redis + memory tiers) | @reliability-owner |
@auth-owner |
Core | rateLimiter.ts | rateLimiter.test.ts, rateLimiter.property.test.ts, rateLimiter.tiers.test.ts | backend, rate-limit, reliability |
| Idempotency store & key handling | @reliability-owner |
@data-owner |
High | idempotency.ts, idempotencyRetention.ts | idempotencyRetention.test.ts | backend, reliability, idempotency |
| Retry budget (circuit-breaker adjunct) | @reliability-owner |
@backend-lead |
Medium | retryBudget.ts | — | backend, reliability |
| Soroban RPC circuit breaker | @integrations-owner |
@reliability-owner |
High | circuitBreaker.ts | circuitBreaker.test.ts | backend, reliability, stellar |
| Withdrawal partial-failure recovery (saga journal) | @reliability-owner |
@vault-domain-owner |
Core | withdrawalRecovery.ts | withdrawalRecovery.test.ts, withdrawalRecoveryEndpoint.test.ts | backend, reliability, vault |
| Transfer orchestration (idempotent, retry-safe) | @reliability-owner |
@vault-domain-owner |
Core | transferOrchestrator.ts | transferOrchestrator.test.ts | backend, reliability, idempotency |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Vault endpoints (summary, metrics, APY) | @vault-domain-owner |
@backend-lead |
Core | vaultEndpoints.ts | — | backend, vault, api |
| Transaction endpoints & history | @vault-domain-owner |
@data-owner |
Core | transactionEndpoints.ts | transactions.test.ts | backend, transactions, api |
| Transaction backfill (catch-up indexing) | @vault-domain-owner |
@integrations-owner |
High | transactionBackfill.ts | transactionBackfill.persistence.test.ts | backend, transactions, indexer |
| APY snapshots (scheduler + backfill) | @vault-domain-owner |
@reliability-owner |
High | apySnapshot.ts | apySnapshot.test.ts | backend, vault, apy |
| List endpoints (vault history, portfolio, holdings) | @vault-domain-owner |
@data-owner |
High | listEndpoints.ts | — | backend, api, vault |
| Pagination primitives | @data-owner |
@vault-domain-owner |
High | pagination.ts, dateRange.ts | pagination.test.ts | backend, pagination, data |
| Wallet alias endpoints & service | @vault-domain-owner |
@auth-owner |
Medium | walletAliasEndpoints.ts, walletAliasService.ts | walletAliasEndpoints.test.ts, walletAliasService.test.ts | backend, wallet, alias |
| Referral endpoints & service | @vault-domain-owner |
@data-owner |
Medium | referralEndpoints.ts, referralService.ts | referral.test.ts | backend, referrals, growth |
| On-chain event polling & replay | @integrations-owner |
@vault-domain-owner |
Core | eventPollingService.ts | eventPollingService.test.ts | backend, indexer, stellar, events |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Prisma schema & migrations | @data-owner |
@backend-lead |
Core | prisma/schema.prisma, migrations/, scripts/migrate-postgres.js, scripts/check-postgres-drift.js | — | backend, database, migrations |
| Database health & connections | @data-owner |
@reliability-owner |
Core | database.ts, prismaClient.ts, prisma.ts | — | backend, database |
| Transaction export jobs (single-shot) | @data-owner |
@vault-domain-owner |
High | exportJobs.ts | — | backend, exports, data |
| Bulk export jobs (async, S3-backed) | @data-owner |
@integrations-owner |
Medium | bulkExportJobs.ts | — | backend, exports, data |
| Export manifest & checksum verification | @data-owner |
@auth-owner |
High | exportManifest.ts | exportManifest.test.ts | backend, exports, integrity |
| API contract schema snapshots | @data-owner |
@backend-lead |
High | apiContractSnapshots.ts, schema-snapshots/ | — | backend, api, contract-testing |
| Audit redaction & PII scrubbing | @data-owner |
@auth-owner |
High | auditRedaction.ts, redaction.ts | — | backend, audit, privacy |
| Sanitization (input/output cleaning) | @data-owner |
@auth-owner |
High | sanitization.ts | sanitization.test.ts | backend, security, data |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Webhook delivery, registration, retries | @integrations-owner |
@reliability-owner |
High | webhookDelivery.ts | webhookVerification.test.ts, webhookDeadLetter.test.ts, webhookSoftDelete.test.ts | backend, webhooks |
| Webhook deduplication (idempotent ingest) | @integrations-owner |
@reliability-owner |
High | webhookDeduplication.ts | webhookDeduplication.test.ts | backend, webhooks, reliability |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Admin audit logging (every /admin request) | @auth-owner |
@data-owner |
High | auditLog.ts, adminAudit.ts, writeAheadAuditLog.ts | — | backend, audit, admin, security |
| Admin configuration change audit | @auth-owner |
@data-owner |
High | adminConfigChangeAudit.ts | — | backend, audit, admin |
| Admin receipts (tamper-evident action proofs) | @auth-owner |
@backend-lead |
Medium | adminReceipt.ts | adminReceipt.test.ts | backend, admin, audit |
| Maintenance mode & windows scheduler | @reliability-owner |
@backend-lead |
High | maintenanceMode.ts, maintenanceWindow.ts | — | backend, admin, reliability, maintenance |
| Feature flag overrides | @backend-lead |
@reliability-owner |
High | featureFlags.ts | featureFlags.test.ts | backend, admin, feature-flags |
| Admin features & governance controls | @backend-lead |
@auth-owner |
Medium | — | adminFeatures.test.ts, governance.test.ts | backend, admin, governance |
| Governance snapshot export | @data-owner |
@backend-lead |
Medium | governanceSnapshotExport.ts | governanceSnapshotExport.test.ts | backend, exports, governance |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Job governance: registry, health, metrics | @reliability-owner |
@backend-lead |
High | jobGovernance.ts | jobGovernanceMetrics.test.ts | backend, jobs, reliability |
| Position & ledger reconciliation jobs | @vault-domain-owner |
@data-owner |
High | positionReconciliationJob.ts | ledgerReconciliationJob.test.ts | backend, jobs, reconciliation, vault |
| Reconciliation reports | @vault-domain-owner |
@data-owner |
Medium | reconciliationReport.ts | reconciliationReport.test.ts | backend, reports, reconciliation |
| Database backup scheduler | @data-owner |
@reliability-owner |
High | dbBackupJob.ts | dbBackupJob.test.ts | backend, jobs, database, backup |
| Diagnostics bundle (support artifact) | @reliability-owner |
@data-owner |
Medium | diagnosticsBundle.ts | diagnosticsBundle.test.ts | backend, support, diagnostics |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Prometheus metrics registry | @reliability-owner |
@backend-lead |
High | metrics.ts | — | backend, observability, metrics |
| Health & readiness probes | @reliability-owner |
@backend-lead |
Core | healthProbe.ts | — | backend, observability, health |
| Latency monitoring & SLO tracking | @reliability-owner |
@backend-lead |
High | latencyMonitoring.ts | latencyMonitoring.test.ts, sloMetrics.test.ts | backend, observability, slo |
| Endpoint SLA registry | @reliability-owner |
@backend-lead |
Medium | endpointSlaRegistry.ts | endpointSlaRegistry.test.ts | backend, observability, slo |
| Domain / Module | Primary | Secondary | Criticality | Source Files | Related Tests | Labels |
|---|---|---|---|---|---|---|
| Stellar / Soroban RPC client | @integrations-owner |
@vault-domain-owner |
Core | sorobanClient.ts | sorobanClient.test.ts | backend, stellar, rpc, integrations |
| Email service & queue | @integrations-owner |
@reliability-owner |
Medium | emailService.ts, emailQueue.ts | emailService.test.ts, emailQueue.test.ts | backend, email, integrations |
Use this table when you only know the source filename and need to find the owning domain.
| File(s) | Domain | Primary |
|---|---|---|
index.ts, swagger.ts |
Bootstrap & Entrypoint | @backend-lead |
auth.ts, walletNonce.ts, walletSignature.ts, walletLock.ts, walletUtils.ts, scopedAdminTokens.ts, impersonationSessionService.ts |
Auth & Identity Security | @auth-owner |
middleware/apiKeyAuth.ts, middleware/rbac.ts, middleware/tenantGuard.ts, middleware/walletQueryGuard.ts, middleware/walletSignedAction.ts |
Auth & Identity Security | @auth-owner |
apiKeyAudit.ts, auditLog.ts, adminAudit.ts, adminConfigChangeAudit.ts, writeAheadAuditLog.ts, auditRedaction.ts |
Admin Audit | @auth-owner / @data-owner |
adminReceipt.ts |
Admin Receipts | @auth-owner |
middleware/correlationId.ts, middleware/structuredLogging.ts, tracing.ts |
Observability middleware | @reliability-owner |
middleware/timeoutMiddleware.ts, middleware/errorBoundary.ts, middleware/adaptiveThrottle.ts |
Reliability middleware | @reliability-owner |
middleware/cors.ts, middleware/geofencing.ts, middleware/allowlist.ts, middleware/validate.ts, middleware/payloadLimit.ts |
Security middleware | @auth-owner |
middleware/cache.ts |
Cache middleware | @reliability-owner |
middleware/withdrawalDailyLimit.ts |
Vault limits | @vault-domain-owner |
rateLimiter.ts, idempotency.ts, idempotencyRetention.ts, retryBudget.ts, circuitBreaker.ts, withdrawalRecovery.ts, transferOrchestrator.ts |
Resilience & Throttling | @reliability-owner |
vaultEndpoints.ts, apySnapshot.ts |
Vault domain | @vault-domain-owner |
transactionEndpoints.ts, transactionBackfill.ts |
Transactions | @vault-domain-owner |
listEndpoints.ts, pagination.ts, dateRange.ts |
Data & pagination | @data-owner |
walletAliasEndpoints.ts, walletAliasService.ts |
Wallet aliases | @vault-domain-owner |
referralEndpoints.ts, referralService.ts |
Referrals | @vault-domain-owner |
eventPollingService.ts |
Event indexing | @integrations-owner |
prismaClient.ts, prisma.ts, database.ts, prisma/schema.prisma, migrations/ |
Database | @data-owner |
exportJobs.ts, bulkExportJobs.ts, exportManifest.ts, governanceSnapshotExport.ts |
Exports | @data-owner |
apiContractSnapshots.ts, schema-snapshots/ |
API contracts | @data-owner |
redaction.ts, sanitization.ts |
Data hygiene | @data-owner |
webhookDelivery.ts, webhookDeduplication.ts |
Webhooks | @integrations-owner |
maintenanceMode.ts, maintenanceWindow.ts |
Maintenance | @reliability-owner |
featureFlags.ts |
Feature flags | @backend-lead |
jobGovernance.ts, metrics.ts, healthProbe.ts, latencyMonitoring.ts, endpointSlaRegistry.ts, gracefulShutdown.ts |
Observability & Job Governance | @reliability-owner |
positionReconciliationJob.ts, reconciliationReport.ts |
Reconciliation | @vault-domain-owner |
dbBackupJob.ts |
Database backup | @data-owner |
diagnosticsBundle.ts |
Diagnostics | @reliability-owner |
sorobanClient.ts |
Stellar RPC | @integrations-owner |
emailService.ts, emailQueue.ts |
@integrations-owner |
|
requestContext.ts, stellar-sdk-shim.d.ts, types/express.d.ts |
Core scaffolding | @backend-lead |
When opening a PR, auto-assign reviewers based on which top-level directories / patterns your changes touch:
| If your PR changes… | Add these labels… | Request review from… |
|---|---|---|
backend/src/auth.ts OR backend/src/wallet*.ts OR backend/src/scopedAdminTokens.ts OR backend/src/middleware/{apiKeyAuth,rbac,tenantGuard,walletQueryGuard,walletSignedAction}.ts |
backend, auth, security |
@auth-owner (Primary), @backend-lead (Secondary) |
backend/src/middleware/*.ts (any middleware) |
backend, middleware |
Primary = owner per module above; Secondary = @backend-lead |
backend/src/{rateLimiter,circuitBreaker,idempotency*,retryBudget,withdrawalRecovery,transferOrchestrator}.ts |
backend, reliability |
@reliability-owner (Primary), @auth-owner (Secondary) |
backend/src/{vaultEndpoints,transactionEndpoints,apySnapshot,listEndpoints,referral*,walletAlias*}.ts |
backend, vault or backend, transactions |
@vault-domain-owner (Primary), @data-owner (Secondary) |
backend/prisma/schema.prisma OR backend/migrations/ OR backend/scripts/{migrate-postgres,check-postgres-drift}.js |
backend, database, migrations |
@data-owner (Primary), @backend-lead (Secondary) — 2 approvals required for schema changes |
backend/src/{export*,bulkExport*,exportManifest,apiContractSnapshots,governanceSnapshotExport,pagination,dateRange}.ts OR backend/schema-snapshots/ |
backend, data |
@data-owner (Primary), @vault-domain-owner (Secondary) |
backend/src/{webhook*,eventPollingService,sorobanClient,email*}.ts |
backend, webhooks or backend, stellar |
@integrations-owner (Primary), @reliability-owner (Secondary) |
backend/src/{metrics,healthProbe,latencyMonitoring,endpointSlaRegistry,jobGovernance,diagnosticsBundle,gracefulShutdown}.ts |
backend, observability |
@reliability-owner (Primary), @backend-lead (Secondary) |
backend/src/{maintenanceMode,maintenanceWindow,featureFlags,adminReceipt,adminAudit,auditLog,adminConfigChangeAudit}.ts |
backend, admin |
Primary = owner per domain; Secondary = @backend-lead |
backend/src/__tests__/* only (test-only change) |
backend, tests |
Owner of the module under test |
backend/README.md OR backend/docs/ OR any docs/*.md referencing backend |
documentation, backend |
@backend-lead |
- Smart contract changes (
contracts/) follow a separate 2-approval rule; see TRIAGE_AND_REVIEW.md. - Cross-domain PRs (touches 3+ modules): assign
@backend-leadas Primary and one owner per affected module. - Docs-only PRs: single approval from any maintainer is sufficient.
- Dependency upgrades (backend
package.json): require@data-owner+@backend-leadreview; runnpm auditand link output.
Copy-paste the following command pattern when routing a newly opened issue:
/area backend
/label <module-label> <priority-label>
/assign @<primary-owner>
/cc @<secondary-owner>
Use the Labels column in the module ownership tables to pick <module-label>. Priority labels are P0–P3 as defined in TRIAGE_AND_REVIEW.md.
- No obvious owner? → Assign to
@backend-leadwith labeltriage-needs-owner. - Owner unresponsive > 48 business hours? → Re-assign to Secondary owner and add label
triage-escalated. - Both owners unresponsive > 5 business days? → Follow TRIAGE_ROTATION_CALENDAR.md escalation; tag the on-call Primary team from the weekly rotation.
- Quarterly review: At the start of each quarter the Backend Tech Lead audits this document for:
- New modules added since last review
- Stale / deprecated modules removed
- Maintainer handles and roles current
- Ownership assignments match reality on the ground
- Immediate updates required when:
- A new source file is added to
backend/src/at the top level (not a pure test helper) - A module is split, merged, or deprecated
- A maintainer changes team, leaves, or goes on leave > 2 weeks
- A new source file is added to
- Contributing an update: Open a docs-only PR titled
Docs: Update backend module ownership mapand tag@backend-lead. No changelog entry needed.
Version: 1.0.0
Last Updated: July 2026
Owned by: Backend Tech Lead (@backend-lead)