# System overview

Two repos. One operator product.

```mermaid
graph TD
  App["re360muse-app Next PWA"]
  API["main-backend Express Prisma"]
  DB[RDS PostgreSQL]
  R2[Cloudflare R2]
  Paystack[Paystack]
  App -->|"REST JWT and session"| API
  API --> DB
  API --> R2
  API --> Paystack
  App -->|"public Market and listing sites"| Public[Public visitors]
```

Production hosts: Cloudflare DNS/CDN/R2, Lightsail for app+API, RDS for
Postgres, Amplify for this docs site. See
[Production setup](../shipping/production.md).
**Hyperdrive is not the database** — [Hyperdrive](../shipping/hyperdrive.md).

## App

`re360muse-app` is Next.js with **Chakra UI v3**. Operators install the
same product as a PWA. There is no Electron or React Native client.

Marketing pages, the OS shell, admin, public Market, and company listing
sites all live in this app. Listing-site templates and public pages are
documented in [Company listing site](../guides/company-site.md).

## API

`main-backend` is Express and Prisma. Company-scoped resources check
membership. Uploads require JWT. The Paystack webhook is public and
HMAC-verified.

Swagger: `/api/docs` on the API host.

## Entitlements

The last subscription does not win. Tools is canonical for the five
included desks. Add-on flags merge on top. A company with
`billingExempt` (godfather) unlocks every shipped OS area without a
Paystack row. See [Modules](../product/modules.md),
[Billing and team](../guides/billing-and-team.md), and
[Property as system of record](./property-sor.md).
