# gatocoder282/mapit architecture

> Architecture diagram of the GitHub repository gatocoder282/mapit, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/gatocoder282/mapit
- Repository: https://github.com/gatocoder282/mapit

## Overview

MapIt is a multi-tenant spatial operations product: staff configure businesses and floor/sector maps, then users operate on live space state; public users can discover availability, book and pay. The graph also preserves tenant onboarding, authentication, and documented reservation/payment capabilities. Some reservation, payment, map-editor and realtime wiring is represented only at module/directory level because the supplied excerpts do not show their implementations.

Main entry points: [`apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/TenantController.java`](https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/TenantController.java) (Tenant REST API), [`apps/console/src/app/app.routes.ts`](https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/app.routes.ts) (Staff console), [`apps/console/src/app/features/spaces/ui/spaces.ts`](https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/features/spaces/ui/spaces.ts) (Space configuration), [`apps/public-web/src/app/app.routes.ts`](https://github.com/gatocoder282/mapit/blob/main/apps/public-web/src/app/app.routes.ts) (Public web)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_staff["Staff Console"]
  node_console["Staff console<br/>[app.routes.ts]"]
  node_tenant_admin["Tenant admin<br/>[tenant-list.ts]"]
  node_space_ui["Space configuration<br/>[spaces.ts]"]
  node_space_api_client["Spaces API client<br/>[spaces-api.ts]"]
end

subgraph group_public["Public Web"]
  node_public_web["Public web<br/>[app.routes.ts]"]
  node_availability_booking["Availability &amp; booking<br/>[reservas.ts]"]
  node_activation["Admin activation<br/>[activation-api.ts]"]
end

subgraph group_platform["Platform Backend"]
  node_backend_app["Spring application"]
  node_tenant_api["Tenant REST API"]
  node_tenant_service["Tenant onboarding<br/>[TenantService.java]"]
  node_tenant_store["Tenant persistence"]
  node_invitation_email["Invitation email adapter"]
  node_identity["Identity &amp; JWT"]
end

subgraph group_spaces["Space Operations"]
  node_space_api["Space REST APIs"]
  node_space_services["Establishment &amp; floor services"]
  node_space_domain["Space domain"]
  node_space_store["Space persistence adapters"]
  node_map_engine["Map engine port<br/>[map-engine.port.ts]"]
end

subgraph group_extensions["Live &amp; Commerce"]
  node_reservations["Reservations"]
  node_payments["Payments"]
  node_realtime["Realtime events"]
  node_flags["Feature flags"]
end

node_staff_user(("Staff"))
node_customer(("Public customer"))
node_email_service["Email service"]
node_websocket["WebSocket / STOMP"]
node_unleash["Unleash"]
node_database[("PostgreSQL")]

node_staff_user -->|"uses"| node_console
node_customer -->|"uses"| node_public_web
node_console -->|"routes to"| node_tenant_admin
node_console -->|"routes to"| node_space_ui
node_space_ui -->|"requests data"| node_space_api_client
node_space_api_client -->|"calls REST"| node_space_api
node_public_web -->|"routes to"| node_availability_booking
node_public_web -->|"routes to"| node_activation
node_backend_app -->|"hosts"| node_tenant_api
node_tenant_api -->|"invokes"| node_tenant_service
node_tenant_service -->|"reads/writes"| node_tenant_store
node_tenant_service -->|"sends invitation"| node_invitation_email
node_invitation_email -->|"delivers email"| node_email_service
node_activation -->|"activates account"| node_tenant_api
node_tenant_api -->|"persists tenants"| node_database
node_backend_app -->|"configures security"| node_identity
node_space_api -->|"invokes"| node_space_services
node_space_services -->|"uses domain"| node_space_domain
node_space_services -->|"reads/writes"| node_space_store
node_space_store -->|"persists spaces"| node_database
node_space_ui -->|"edits maps"| node_map_engine
node_availability_booking -.->|"supports booking"| node_reservations
node_reservations -.->|"supports payment"| node_payments
node_realtime -->|"dispatches events"| node_websocket
node_flags -->|"queries flags"| node_unleash

click node_console "https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/app.routes.ts"
click node_tenant_admin "https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/features/administration/tenants/ui/tenant-list.ts"
click node_space_ui "https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/features/spaces/ui/spaces.ts"
click node_space_api_client "https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/features/spaces/data/spaces-api.ts"
click node_public_web "https://github.com/gatocoder282/mapit/blob/main/apps/public-web/src/app/app.routes.ts"
click node_availability_booking "https://github.com/gatocoder282/mapit/blob/main/apps/public-web/src/app/features/reservas/reservas.ts"
click node_activation "https://github.com/gatocoder282/mapit/blob/main/apps/public-web/src/app/features/activation/data/activation-api.ts"
click node_backend_app "https://github.com/gatocoder282/mapit/blob/main/apps/backend/bootstrap/src/main/java/com/mapit/MapItApplication.java"
click node_tenant_api "https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/TenantController.java"
click node_tenant_service "https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-application/src/main/java/com/mapit/platform/application/TenantService.java"
click node_tenant_store "https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/TenantPersistenceAdapter.java"
click node_invitation_email "https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/AdminInvitationEmailAdapter.java"
click node_identity "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/identity/identity-infrastructure/src/main/java/com/mapit/identity/infrastructure"
click node_space_api "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/spaces/spaces-infrastructure/src/main/java/com/mapit/spaces/infrastructure"
click node_space_services "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/spaces/spaces-application/src/main/java/com/mapit/spaces/application"
click node_space_domain "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/spaces/spaces-domain/src/main/java/com/mapit/spaces/domain"
click node_space_store "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/spaces/spaces-infrastructure/src/main/java/com/mapit/spaces/infrastructure"
click node_map_engine "https://github.com/gatocoder282/mapit/blob/main/libs/map-engine/src/lib/map-engine.port.ts"
click node_reservations "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/reservations"
click node_payments "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/payments"
click node_realtime "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/operations/operations-infrastructure/src/main/java/com/mapit/operations/infrastructure/realtime"
click node_flags "https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/flags"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_console,node_tenant_admin,node_space_ui,node_space_api_client toneBlue
class node_public_web,node_availability_booking,node_activation,node_database toneAmber
class node_backend_app,node_tenant_api,node_tenant_service,node_tenant_store,node_invitation_email,node_identity toneMint
class node_space_api,node_space_services,node_space_domain,node_space_store,node_map_engine toneRose
class node_reservations,node_payments,node_realtime,node_flags,node_staff_user,node_customer,node_email_service,node_websocket,node_unleash toneIndigo
```

## Components

### Staff Console

- [Staff console](https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/app.routes.ts): `apps/console/src/app/app.routes.ts`
- [Tenant admin](https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/features/administration/tenants/ui/tenant-list.ts): `apps/console/src/app/features/administration/tenants/ui/tenant-list.ts`
- [Space configuration](https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/features/spaces/ui/spaces.ts): `apps/console/src/app/features/spaces/ui/spaces.ts`
- [Spaces API client](https://github.com/gatocoder282/mapit/blob/main/apps/console/src/app/features/spaces/data/spaces-api.ts): `apps/console/src/app/features/spaces/data/spaces-api.ts`

### Public Web

- [Public web](https://github.com/gatocoder282/mapit/blob/main/apps/public-web/src/app/app.routes.ts): `apps/public-web/src/app/app.routes.ts`
- [Availability & booking](https://github.com/gatocoder282/mapit/blob/main/apps/public-web/src/app/features/reservas/reservas.ts): `apps/public-web/src/app/features/reservas/reservas.ts`
- [Admin activation](https://github.com/gatocoder282/mapit/blob/main/apps/public-web/src/app/features/activation/data/activation-api.ts): `apps/public-web/src/app/features/activation/data/activation-api.ts`

### Platform Backend

- [Spring application](https://github.com/gatocoder282/mapit/blob/main/apps/backend/bootstrap/src/main/java/com/mapit/MapItApplication.java): `apps/backend/bootstrap/src/main/java/com/mapit/MapItApplication.java`
- [Tenant REST API](https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/TenantController.java): `apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/TenantController.java`
- [Tenant onboarding](https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-application/src/main/java/com/mapit/platform/application/TenantService.java): `apps/backend/modules/platform/platform-application/src/main/java/com/mapit/platform/application/TenantService.java`
- [Tenant persistence](https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/TenantPersistenceAdapter.java): `apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/TenantPersistenceAdapter.java`
- [Invitation email adapter](https://github.com/gatocoder282/mapit/blob/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/AdminInvitationEmailAdapter.java): `apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/AdminInvitationEmailAdapter.java`
- [Identity & JWT](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/identity/identity-infrastructure/src/main/java/com/mapit/identity/infrastructure): `apps/backend/modules/identity/identity-infrastructure/src/main/java/com/mapit/identity/infrastructure`

### Space Operations

- [Space REST APIs](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/spaces/spaces-infrastructure/src/main/java/com/mapit/spaces/infrastructure): `apps/backend/modules/spaces/spaces-infrastructure/src/main/java/com/mapit/spaces/infrastructure`
- [Establishment & floor services](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/spaces/spaces-application/src/main/java/com/mapit/spaces/application): `apps/backend/modules/spaces/spaces-application/src/main/java/com/mapit/spaces/application`
- [Space domain](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/spaces/spaces-domain/src/main/java/com/mapit/spaces/domain): `apps/backend/modules/spaces/spaces-domain/src/main/java/com/mapit/spaces/domain`
- [Space persistence adapters](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/spaces/spaces-infrastructure/src/main/java/com/mapit/spaces/infrastructure): `apps/backend/modules/spaces/spaces-infrastructure/src/main/java/com/mapit/spaces/infrastructure`
- [Map engine port](https://github.com/gatocoder282/mapit/blob/main/libs/map-engine/src/lib/map-engine.port.ts): `libs/map-engine/src/lib/map-engine.port.ts`

### Live & Commerce

- [Reservations](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/reservations): `apps/backend/modules/reservations`
- [Payments](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/payments): `apps/backend/modules/payments`
- [Realtime events](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/operations/operations-infrastructure/src/main/java/com/mapit/operations/infrastructure/realtime): `apps/backend/modules/operations/operations-infrastructure/src/main/java/com/mapit/operations/infrastructure/realtime`
- [Feature flags](https://github.com/gatocoder282/mapit/tree/main/apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/flags): `apps/backend/modules/platform/platform-infrastructure/src/main/java/com/mapit/platform/infrastructure/flags`

### Other components

- **Staff**
- **Public customer**
- **Email service**
- **WebSocket / STOMP**
- **Unleash**
- **PostgreSQL**

## Connections

- Staff → Staff console: uses
- Public customer → Public web: uses
- Staff console → Tenant admin: routes to
- Staff console → Space configuration: routes to
- Space configuration → Spaces API client: requests data
- Spaces API client → Space REST APIs: calls REST
- Public web → Availability & booking: routes to
- Public web → Admin activation: routes to
- Spring application → Tenant REST API: hosts
- Tenant REST API → Tenant onboarding: invokes
- Tenant onboarding → Tenant persistence: reads/writes
- Tenant onboarding → Invitation email adapter: sends invitation
- Invitation email adapter → Email service: delivers email
- Admin activation → Tenant REST API: activates account
- Tenant REST API → PostgreSQL: persists tenants
- Spring application → Identity & JWT: configures security
- Space REST APIs → Establishment & floor services: invokes
- Establishment & floor services → Space domain: uses domain
- Establishment & floor services → Space persistence adapters: reads/writes
- Space persistence adapters → PostgreSQL: persists spaces
- Space configuration → Map engine port: edits maps
- Availability & booking → Reservations: supports booking
- Reservations → Payments: supports payment
- Realtime events → WebSocket / STOMP: dispatches events
- Feature flags → Unleash: queries flags
