BookingZone Repository Registry
Canonical list of all repositories in the BookingZone platform.
When a new repo is added, it MUST be registered here AND have an AGENTS.md
referencing this platform context.
Production Repositories
Backend / Source of Truth
| Repo |
Role |
Stack |
Owner |
reservation-api-server |
THE source of truth. Frappe app exposing all BZ doctypes via REST. All business data lives here. |
Frappe v15, Python 3.10, MariaDB, Redis |
Backend team |
bz-api-server |
LEGACY. NestJS + DynamoDB API server being migrated to Frappe. Frozen for new features. |
NestJS, AWS Lambda, DynamoDB |
Migration team |
dynamodb-frappe-migration |
One-shot migration engine moving DynamoDB data into Frappe. |
Python 3.10, boto3 |
Migration team |
Operator-Facing Frontends
| Repo |
Role |
Stack |
admin-web-app |
Operator/admin panel. Consumed by venue staff (System Admin, Business Admin, Outlet Manager). |
React 19, Vite, tRPC, Express proxy |
bz-admin-app |
Older admin panel (legacy). |
Angular |
bz-admin-app-v2 |
Newer admin app variant. |
TBD |
Customer-Facing Frontends
| Repo |
Role |
Stack |
venuplus-app |
"At The Pier" customer-facing booking PWA (single-tenant). |
Next.js 15, RTK |
customer-web-app |
Multi-tenant white-label customer web (Scene75, Malibu Jack's, etc.). Web + Electron kiosk. |
Next.js 14, Redux Toolkit |
bz-customer-web |
Older customer web (legacy). |
Next.js |
Quality / Test Repositories
| Repo |
Role |
Stack |
reservation-browser-tests |
Playwright E2E suite for the venuplus-app PWA (VenuPlus) and admin-web-app (ATP). Canonical home of the browser-level SYS-005 P0 journeys — asserts BZBooking / payment / BZBookingAvailability state via API, not only UI text. Cross-repo test code only; ships nothing to production. |
Playwright, TypeScript, Node 22 |
Adjacent Products
| Repo |
Role |
Stack |
finco-api-server |
FinCo financial copilot — separate product, shares ECS infra patterns. |
Frappe, Python, AWS |
bz-reporting-script |
Utility scripts for DynamoDB reporting / CE product ID management. |
Python, boto3 |
Sister Frappe Products (Isolated Stacks)
| Repo |
Role |
Stack |
Isolation |
rental-api-server |
BookingZone rental domain as an isolated Frappe v15 app. Owns BZRental* and BZLocker* DocTypes (locker domain moved from booking). Zero runtime dependency on reservation-api-server — opaque Data IDs only, no mandatory HTTP. Does NOT share BookingZone MariaDB. |
Frappe v15, Python, MariaDB, Redis |
VPC 10.30.0.0/16, RDS, ECS rental-dev-cluster, ECR rental-dev-frappe, pipeline rental-dev-pipeline |
insurance-ecosystem-frappe |
RiskBridge / Insurance Ecosystem standalone Frappe app. God-agent / company listing / research live here. Not BookingZone booking SoT. |
Frappe v15, Python, MariaDB, Redis |
VPC 10.20.0.0/16, ECS insurance-dev-cluster |
Note: rental-api-server and insurance-ecosystem-frappe are sister Frappe products in the same AWS account. They share only the CodeStar connection and frappe-erpnext-base Docker image — not VPC/RDS/ECS. rental-api-server has zero runtime dependency on reservation-api-server (opaque Data IDs only, no mandatory HTTP). See ADR-0010.
Dependency Graph
┌──────────────────────────────┐
│ reservation-api-server │
│ (Frappe — BOOKING source │
│ of truth) │
└──────────────┬───────────────┘
│ REST API (whitelisted methods)
┌──────────────────┼─────────────────────┐
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌─────────────────┐ ┌──────────────────┐
│ admin-web-app │ │ venuplus-app │ │ customer-web-app │
│ (operator) │ │ (customer-ATP) │ │ (customer-multi) │
└──────────────────┘ └─────────────────┘ └──────────────────┘
│ ▲
│ proxies & enriches │
└──────────────────────────────────────────┘
(admin-web-app's Express tier
may serve as gateway for
operator-side workflows)
Legacy parallel surface:
bz-api-server (NestJS/DynamoDB) ← still active, frozen
↑ being read by bz-customer-web (legacy customer app)
════════════════════════════════════════════════════════════════
SISTER FRAPPE PRODUCTS (isolated VPCs, ZERO runtime dependency):
┌───────────────────────┐ ┌─────────────────────────────┐
│ rental-api-server │ │ insurance-ecosystem-frappe │
│ (rental + locker SoT) │ │ (RiskBridge SoT) │
│ VPC 10.30.0.0/16 │ │ VPC 10.20.0.0/16 │
│ Owns: BZRental*, │ │ │
│ BZLocker* │ │ │
└───────────────────────┘ └─────────────────────────────┘
╳ NO runtime edge ╳
┌──────────────────────────────┐
│ reservation-api-server │ ← booking domain only; locker moved out
│ (booking SoT) │
└──────────────────────────────┘
Shared AWS resources (CodeStar, frappe-erpnext-base image) only.
No shared VPC/RDS/ECS. No mandatory HTTP between rental ↔ booking.
Cross-refs use opaque Data IDs; sync is out-of-band (batch/ETL).
Note on 501 shims (reservation-api-server#893): After the rental split,
reservation-api-server keeps temporary 501 whitelist shims for
consumer_rental*, rental_inventory, and scooterbug_* methods until
clients migrate to call rental-api-server directly.
Migration risk: After deleting BZLocker* and BZRental* DocTypes from
reservation-api-server, orphan MariaDB tables (e.g., tabBZLockerUnit,
tabBZLockerBank) may remain until operators explicitly drop them. See
ADR-0010 for migration
checklist.
Cross-Repo Communication Channels
| From |
To |
Mechanism |
| Any frontend |
Frappe backend |
HTTPS REST: /api/method/<dotted.path> + token auth |
| admin-web-app |
Frappe |
Express proxy at /api/frappe/* (server-side token) |
| Frappe → external |
GoHighLevel |
OAuth 2 + scheduled sync jobs |
| Frappe → external |
OpenPhone |
REST + webhooks |
| Frappe → external |
Magensa / Datacap / Stripe |
Gateway-specific (see ADR-0003) |
| Frappe → R365 |
SFTP daily export |
|
Adding a New Repo
- Open a PR to this file adding the new row.
- Add
AGENTS.md to the new repo with the System Context section (template below).
- If the repo has its own product context, set up
.specify/memory/constitution.md inheriting from the system constitution.
- Wait for architecture review.
AGENTS.md Template
See bz-platform-context/specs/SYS-000-template/AGENTS-template.md (or any
existing repo's AGENTS.md as reference).