# edgyulnazaryandev/activity-booking-platform architecture

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

- Interactive diagram: https://gitdiagram.com/edgyulnazaryandev/activity-booking-platform
- Repository: https://github.com/edgyulnazaryandev/activity-booking-platform

## Overview

This is an activity-booking platform with a React client and NestJS API. The main user journey is browsing activities, selecting a resource and time, creating a booking, then paying through a wallet or IDram; administrators manage bookings and review operational reports. The tree also shows authentication, pricing, resource and staff management, notifications, and real-time infrastructure. Controller excerpts confirm several API-to-service calls, but booking-service internals and most frontend wiring were not sampled, so uncertain connections are omitted.

Main entry points: [`frontend/src/services/api.ts`](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/services/api.ts) (API client), [`src/config/prisma.service.ts`](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/config/prisma.service.ts) (PostgreSQL data), [`frontend/src/App.tsx`](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/App.tsx) (Booking interface), [`src/bookings/bookings.controller.ts`](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/bookings/bookings.controller.ts) (Booking endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_web["Booking interface<br/>[App.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
  node_activity_pages["Activity browsing<br/>[ActivitiesPage.tsx]"]
  node_booking_pages["Booking views<br/>[BookingsPage.tsx]"]
  node_auth_pages["Account views<br/>[LoginPage.tsx]"]
end

subgraph group_booking["Booking domain"]
  node_booking_controller["Booking endpoints"]
  node_booking_service["Booking lifecycle"]
  node_activity_service["Activity catalog"]
  node_resource_service["Bookable resources"]
  node_pricing_controller["Pricing endpoints"]
  node_pricing_engine["Price calculation"]
end

subgraph group_money["Payments and wallet"]
  node_wallet_controller["Wallet endpoints"]
  node_wallet_service["Wallet transactions<br/>[wallet.service.ts]"]
  node_idram_controller["IDram endpoints"]
  node_idram_service["IDram payments<br/>[idram.service.ts]"]
end

subgraph group_operations["Operations"]
  node_admin_controller["Admin bookings"]
  node_admin_service["Admin operations<br/>[admin.service.ts]"]
  node_reports["Revenue reports<br/>[reports.service.ts]"]
  node_staff["Staff management<br/>[staff.service.ts]"]
end

subgraph group_platform["Platform services"]
  node_auth_controller["Authentication endpoints<br/>[auth.controller.ts]"]
  node_auth_service["Identity service<br/>[auth.service.ts]"]
  node_notifications["Notifications"]
  node_realtime["Realtime gateway"]
  node_database[("PostgreSQL data<br/>[prisma.service.ts]")]
  node_redis[("Redis service<br/>[redis.service.ts]")]
end

node_visitor(("Visitor or admin"))
node_idram(("IDram gateway"))

node_visitor -->|"uses"| node_web
node_web -->|"presents"| node_activity_pages
node_web -->|"presents"| node_booking_pages
node_web -->|"presents"| node_auth_pages
node_activity_pages -->|"requests data"| node_api_client
node_booking_pages -->|"requests bookings"| node_api_client
node_auth_pages -->|"requests identity"| node_api_client
node_api_client -->|"calls API"| node_booking_controller
node_api_client -->|"calls API"| node_auth_controller
node_booking_controller -->|"delegates"| node_booking_service
node_booking_controller -->|"delegates"| node_activity_service
node_booking_controller -->|"delegates"| node_resource_service
node_pricing_controller -->|"delegates"| node_pricing_engine
node_auth_controller -->|"delegates"| node_auth_service
node_admin_controller -->|"lists bookings"| node_booking_service
node_admin_controller -->|"delegates"| node_admin_service
node_wallet_controller -->|"delegates"| node_wallet_service
node_idram_controller -->|"delegates"| node_idram_service
node_idram_service -->|"initiates payment"| node_idram
node_booking_service -->|"persists bookings"| node_database
node_pricing_engine -->|"reads pricing rules"| node_database
node_auth_service -->|"reads and writes users"| node_database
node_wallet_service -->|"reads and writes wallet"| node_database
node_admin_service -->|"reads and updates"| node_database

click node_web "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/App.tsx"
click node_api_client "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/services/api.ts"
click node_activity_pages "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/pages/ActivitiesPage.tsx"
click node_booking_pages "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/pages/BookingsPage.tsx"
click node_auth_pages "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/pages/LoginPage.tsx"
click node_booking_controller "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/bookings/bookings.controller.ts"
click node_booking_service "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/bookings/bookings.service.ts"
click node_activity_service "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/activities/activities.service.ts"
click node_resource_service "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/resources/resources.service.ts"
click node_pricing_controller "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/pricing/pricing.controller.ts"
click node_pricing_engine "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/pricing/pricing-engine.service.ts"
click node_auth_controller "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/auth/auth.controller.ts"
click node_auth_service "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/auth/auth.service.ts"
click node_wallet_controller "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/wallet/wallet.controller.ts"
click node_wallet_service "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/wallet/wallet.service.ts"
click node_idram_controller "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/payments/idram.controller.ts"
click node_idram_service "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/payments/idram.service.ts"
click node_admin_controller "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/admin/admin-bookings.controller.ts"
click node_admin_service "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/admin/admin.service.ts"
click node_reports "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/reports/reports.service.ts"
click node_staff "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/staff/staff.service.ts"
click node_notifications "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/notifications/notifications.service.ts"
click node_realtime "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/websocket/websocket.gateway.ts"
click node_database "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/config/prisma.service.ts"
click node_redis "https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/common/redis/redis.service.ts"

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_web,node_api_client,node_activity_pages,node_booking_pages,node_auth_pages toneBlue
class node_booking_controller,node_booking_service,node_activity_service,node_resource_service,node_pricing_controller,node_pricing_engine toneAmber
class node_wallet_controller,node_wallet_service,node_idram_controller,node_idram_service toneMint
class node_admin_controller,node_admin_service,node_reports,node_staff toneRose
class node_auth_controller,node_auth_service,node_notifications,node_realtime,node_database,node_redis,node_visitor,node_idram toneIndigo
```

## Components

### Web client

- [Booking interface](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [API client](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/services/api.ts): `frontend/src/services/api.ts`
- [Activity browsing](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/pages/ActivitiesPage.tsx): `frontend/src/pages/ActivitiesPage.tsx`
- [Booking views](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/pages/BookingsPage.tsx): `frontend/src/pages/BookingsPage.tsx`
- [Account views](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/frontend/src/pages/LoginPage.tsx): `frontend/src/pages/LoginPage.tsx`

### Booking domain

- [Booking endpoints](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/bookings/bookings.controller.ts): `src/bookings/bookings.controller.ts`
- [Booking lifecycle](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/bookings/bookings.service.ts): `src/bookings/bookings.service.ts`
- [Activity catalog](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/activities/activities.service.ts): `src/activities/activities.service.ts`
- [Bookable resources](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/resources/resources.service.ts): `src/resources/resources.service.ts`
- [Pricing endpoints](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/pricing/pricing.controller.ts): `src/pricing/pricing.controller.ts`
- [Price calculation](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/pricing/pricing-engine.service.ts): `src/pricing/pricing-engine.service.ts`

### Payments and wallet

- [Wallet endpoints](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/wallet/wallet.controller.ts): `src/wallet/wallet.controller.ts`
- [Wallet transactions](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/wallet/wallet.service.ts): `src/wallet/wallet.service.ts`
- [IDram endpoints](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/payments/idram.controller.ts): `src/payments/idram.controller.ts`
- [IDram payments](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/payments/idram.service.ts): `src/payments/idram.service.ts`

### Operations

- [Admin bookings](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/admin/admin-bookings.controller.ts): `src/admin/admin-bookings.controller.ts`
- [Admin operations](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/admin/admin.service.ts): `src/admin/admin.service.ts`
- [Revenue reports](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/reports/reports.service.ts): `src/reports/reports.service.ts`
- [Staff management](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/staff/staff.service.ts): `src/staff/staff.service.ts`

### Platform services

- [Authentication endpoints](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/auth/auth.controller.ts): `src/auth/auth.controller.ts`
- [Identity service](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/auth/auth.service.ts): `src/auth/auth.service.ts`
- [Notifications](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/notifications/notifications.service.ts): `src/notifications/notifications.service.ts`
- [Realtime gateway](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/websocket/websocket.gateway.ts): `src/websocket/websocket.gateway.ts`
- [PostgreSQL data](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/config/prisma.service.ts): `src/config/prisma.service.ts`
- [Redis service](https://github.com/edgyulnazaryandev/activity-booking-platform/blob/main/src/common/redis/redis.service.ts): `src/common/redis/redis.service.ts`

### Other components

- **Visitor or admin**
- **IDram gateway**

## Connections

- Visitor or admin → Booking interface: uses
- Booking interface → Activity browsing: presents
- Booking interface → Booking views: presents
- Booking interface → Account views: presents
- Activity browsing → API client: requests data
- Booking views → API client: requests bookings
- Account views → API client: requests identity
- API client → Booking endpoints: calls API
- API client → Authentication endpoints: calls API
- Booking endpoints → Booking lifecycle: delegates
- Booking endpoints → Activity catalog: delegates
- Booking endpoints → Bookable resources: delegates
- Pricing endpoints → Price calculation: delegates
- Authentication endpoints → Identity service: delegates
- Admin bookings → Booking lifecycle: lists bookings
- Admin bookings → Admin operations: delegates
- Wallet endpoints → Wallet transactions: delegates
- IDram endpoints → IDram payments: delegates
- IDram payments → IDram gateway: initiates payment
- Booking lifecycle → PostgreSQL data: persists bookings
- Price calculation → PostgreSQL data: reads pricing rules
- Identity service → PostgreSQL data: reads and writes users
- Wallet transactions → PostgreSQL data: reads and writes wallet
- Admin operations → PostgreSQL data: reads and updates
