# mrpandaman56/cs450-event-manager-starter architecture

> Architecture diagram of the GitHub repository mrpandaman56/cs450-event-manager-starter, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mrpandaman56/cs450-event-manager-starter
- Repository: https://github.com/mrpandaman56/cs450-event-manager-starter

## Overview

Event Manager is a React client backed by an Express gateway, separate user and event services, and PostgreSQL accessed through Prisma. The main workflow is account sign-in, event discovery or creation, then invitation response or registration; the client also supports hosted/attending event views and capacity-aware cancellation. The README documents gateway routing and shared database use; sampled service code shows request validation, session handling, and event/registration/invitation operations. Some frontend and service behavior is unsampled, so the graph avoids inferring its internal calls.

Main entry points: [`backend/src/userService/app.ts`](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/userService/app.ts) (User service), [`backend/src/eventService/app.ts`](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/eventService/app.ts) (Event service), [`backend/src/app.ts`](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/app.ts) (API gateway), [`backend/prisma/schema.prisma`](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/prisma/schema.prisma) (PostgreSQL data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_workspace["Event workspace<br/>[App.tsx]"]
end

subgraph group_gateway["API routing"]
  node_gateway_app["API gateway<br/>[app.ts]"]
end

subgraph group_accounts["Accounts and sessions"]
  node_user_service["User service<br/>[app.ts]"]
  node_session_auth["Session authentication<br/>[auth.ts]"]
  node_auth_validation["Account validation<br/>[authSchemas.ts]"]
end

subgraph group_events["Event operations and persistence"]
  node_body_validation["Body validation<br/>[validateBody.ts]"]
  node_event_validation["Event validation<br/>[eventSchema.ts]"]
  node_event_service["Event service<br/>[app.ts]"]
  node_database[("PostgreSQL data<br/>[schema.prisma]")]
  node_demo_seed["Demo event seed<br/>[seed.ts]"]
end

node_attendee(("Organizer or attendee"))

node_attendee -->|"uses"| node_workspace
node_workspace -->|"sends API requests"| node_gateway_app
node_gateway_app -->|"proxies auth"| node_user_service
node_gateway_app -->|"proxies event requests"| node_event_service
node_user_service -->|"uses session helpers"| node_session_auth
node_user_service -->|"validates account input"| node_auth_validation
node_user_service -->|"validates request bodies"| node_body_validation
node_event_service -->|"requires authentication"| node_session_auth
node_event_service -->|"validates request bodies"| node_body_validation
node_event_service -->|"checks event input"| node_event_validation
node_user_service -->|"reads and writes accounts"| node_database
node_event_service -->|"reads and writes events"| node_database
node_demo_seed -.->|"seeds demo data"| node_database

click node_workspace "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/frontend/src/App.tsx"
click node_gateway_app "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/app.ts"
click node_user_service "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/userService/app.ts"
click node_session_auth "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/middleware/auth.ts"
click node_auth_validation "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/schemas/authSchemas.ts"
click node_body_validation "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/middleware/validateBody.ts"
click node_event_validation "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/schemas/eventSchema.ts"
click node_event_service "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/eventService/app.ts"
click node_database "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/prisma/schema.prisma"
click node_demo_seed "https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/prisma/seed.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_workspace toneBlue
class node_gateway_app toneAmber
class node_user_service,node_session_auth,node_auth_validation toneMint
class node_body_validation,node_event_validation,node_event_service,node_database,node_demo_seed toneRose
class node_attendee toneIndigo
```

## Components

### Web client

- [Event workspace](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`

### API routing

- [API gateway](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/app.ts): `backend/src/app.ts`

### Accounts and sessions

- [User service](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/userService/app.ts): `backend/src/userService/app.ts`
- [Session authentication](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/middleware/auth.ts): `backend/src/middleware/auth.ts`
- [Account validation](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/schemas/authSchemas.ts): `backend/src/schemas/authSchemas.ts`

### Event operations and persistence

- [Body validation](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/middleware/validateBody.ts): `backend/src/middleware/validateBody.ts`
- [Event validation](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/schemas/eventSchema.ts): `backend/src/schemas/eventSchema.ts`
- [Event service](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/src/eventService/app.ts): `backend/src/eventService/app.ts`
- [PostgreSQL data](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/prisma/schema.prisma): `backend/prisma/schema.prisma`
- [Demo event seed](https://github.com/mrpandaman56/cs450-event-manager-starter/blob/main/backend/prisma/seed.ts): `backend/prisma/seed.ts`

### Other components

- **Organizer or attendee**

## Connections

- Organizer or attendee → Event workspace: uses (evidence: `README.md`)
- Event workspace → API gateway: sends API requests (evidence: `README.md`)
- API gateway → User service: proxies auth (evidence: `backend/src/app.ts`)
- API gateway → Event service: proxies event requests (evidence: `backend/src/app.ts`)
- User service → Session authentication: uses session helpers (evidence: `backend/src/userService/app.ts`)
- User service → Account validation: validates account input (evidence: `backend/src/userService/app.ts`)
- User service → Body validation: validates request bodies (evidence: `backend/src/userService/app.ts`)
- Event service → Session authentication: requires authentication (evidence: `backend/src/eventService/app.ts`)
- Event service → Body validation: validates request bodies (evidence: `backend/src/eventService/app.ts`)
- Event service → Event validation: checks event input (evidence: `backend/src/eventService/app.ts`)
- User service → PostgreSQL data: reads and writes accounts (evidence: `backend/src/userService/app.ts`)
- Event service → PostgreSQL data: reads and writes events (evidence: `backend/src/eventService/app.ts`)
- Demo event seed → PostgreSQL data: seeds demo data
