# vishwajith-gs/tce-connect-deploy architecture

> Architecture diagram of the GitHub repository vishwajith-gs/tce-connect-deploy, 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/vishwajith-gs/tce-connect-deploy
- Repository: https://github.com/vishwajith-gs/tce-connect-deploy

## Overview

TCE Connect is a campus event and club engagement platform for students, organizers, and administrators. Users enter through the routed React app to discover events and clubs, register through event links, and access role-specific dashboards; organizers manage events, while admins oversee platform data and analytics. The backend mounts separate user, event, club, and admin APIs, with MongoDB models providing persistence and JWT middleware enforcing protected access. The README documents discovery, filtering, bookmarks, participation tracking, and club profiles; unsampled page and route implementations limit certainty about their individual API wiring.

Main entry points: [`frontend/src/App.tsx`](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/App.tsx) (Routed app), [`backend/src/index.js`](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/index.js) (Express API server), [`backend/src/routes/admin.js`](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/admin.js) (Admin API), [`backend/src/models/Event.js`](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/models/Event.js) (Event records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web experience"]
  node_app["Routed app<br/>[App.tsx]"]
  node_events["Event discovery<br/>[Events.tsx]"]
  node_eventdetail["Event details<br/>[EventDetails.tsx]"]
  node_community["Club directory<br/>[Community.tsx]"]
  node_studentdash["Student dashboard"]
  node_orgdash["Organizer dashboard"]
  node_admindash["Admin dashboard<br/>[AdminDashboard.tsx]"]
  node_login["Account access<br/>[Login.tsx]"]
  node_register["Account registration<br/>[Register.tsx]"]
end

subgraph group_api["Platform API"]
  node_server["Express API server<br/>[index.js]"]
  node_user_api["User API<br/>[user.js]"]
  node_event_api["Event API<br/>[event.js]"]
  node_club_api["Club API<br/>[club.js]"]
  node_admin_api["Admin API<br/>[admin.js]"]
end

subgraph group_data["Domain data"]
  node_users[("User records<br/>[User.js]")]
  node_events_store[("Event records<br/>[Event.js]")]
  node_clubs[("Club records<br/>[Club.js]")]
end

subgraph group_identity["Identity and access"]
  node_frontend_auth["Client auth helpers<br/>[auth.ts]"]
  node_auth_middleware["JWT access checks<br/>[auth.js]"]
end

node_students(("Students"))
node_organizers(("Organizers"))
node_admins(("Administrators"))
node_mongo[("MongoDB Atlas")]
node_forms["Registration forms"]

node_students -->|"use platform"| node_app
node_organizers -->|"use platform"| node_app
node_admins -->|"use platform"| node_app
node_app -->|"routes to"| node_events
node_app -->|"routes to"| node_eventdetail
node_app -->|"routes to"| node_community
node_app -->|"routes to"| node_studentdash
node_app -->|"routes to"| node_orgdash
node_app -->|"routes to"| node_admindash
node_app -->|"routes to"| node_login
node_app -->|"routes to"| node_register
node_eventdetail -.->|"links registration"| node_forms
node_frontend_auth -->|"validates session"| node_server
node_server -->|"mounts API"| node_user_api
node_server -->|"mounts API"| node_event_api
node_server -->|"mounts API"| node_club_api
node_server -->|"mounts API"| node_admin_api
node_user_api -->|"queries"| node_users
node_event_api -->|"queries"| node_events_store
node_club_api -->|"queries"| node_clubs
node_admin_api -->|"checks JWT"| node_auth_middleware
node_admin_api -->|"reads and deletes"| node_users
node_admin_api -->|"reads and deletes"| node_events_store
node_admin_api -->|"reads"| node_clubs
node_auth_middleware -->|"checks event owner"| node_events_store
node_users -->|"persists in"| node_mongo
node_events_store -->|"persists in"| node_mongo
node_clubs -->|"persists in"| node_mongo

click node_app "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/App.tsx"
click node_events "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/Events.tsx"
click node_eventdetail "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/EventDetails.tsx"
click node_community "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/Community.tsx"
click node_studentdash "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/StudentDashboard.tsx"
click node_orgdash "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/OrganizerDashboard.tsx"
click node_admindash "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/AdminDashboard.tsx"
click node_login "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/Login.tsx"
click node_register "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/Register.tsx"
click node_frontend_auth "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/lib/auth.ts"
click node_server "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/index.js"
click node_user_api "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/user.js"
click node_event_api "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/event.js"
click node_club_api "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/club.js"
click node_admin_api "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/admin.js"
click node_auth_middleware "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/middleware/auth.js"
click node_users "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/models/User.js"
click node_events_store "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/models/Event.js"
click node_clubs "https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/models/Club.js"

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_app,node_events,node_eventdetail,node_community,node_studentdash,node_orgdash,node_admindash,node_login,node_register toneBlue
class node_server,node_user_api,node_event_api,node_club_api,node_admin_api,node_mongo toneAmber
class node_users,node_events_store,node_clubs toneMint
class node_frontend_auth,node_auth_middleware toneRose
class node_students,node_organizers,node_admins,node_forms toneIndigo
```

## Components

### Web experience

- [Routed app](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Event discovery](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/Events.tsx): `frontend/src/pages/Events.tsx`
- [Event details](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/EventDetails.tsx): `frontend/src/pages/EventDetails.tsx`
- [Club directory](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/Community.tsx): `frontend/src/pages/Community.tsx`
- [Student dashboard](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/StudentDashboard.tsx): `frontend/src/pages/StudentDashboard.tsx`
- [Organizer dashboard](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/OrganizerDashboard.tsx): `frontend/src/pages/OrganizerDashboard.tsx`
- [Admin dashboard](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/AdminDashboard.tsx): `frontend/src/pages/AdminDashboard.tsx`
- [Account access](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/Login.tsx): `frontend/src/pages/Login.tsx`
- [Account registration](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/pages/Register.tsx): `frontend/src/pages/Register.tsx`

### Platform API

- [Express API server](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/index.js): `backend/src/index.js`
- [User API](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/user.js): `backend/src/routes/user.js`
- [Event API](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/event.js): `backend/src/routes/event.js`
- [Club API](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/club.js): `backend/src/routes/club.js`
- [Admin API](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/routes/admin.js): `backend/src/routes/admin.js`

### Domain data

- [User records](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/models/User.js): `backend/src/models/User.js`
- [Event records](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/models/Event.js): `backend/src/models/Event.js`
- [Club records](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/models/Club.js): `backend/src/models/Club.js`

### Identity and access

- [Client auth helpers](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/frontend/src/lib/auth.ts): `frontend/src/lib/auth.ts`
- [JWT access checks](https://github.com/vishwajith-gs/tce-connect-deploy/blob/main/backend/src/middleware/auth.js): `backend/src/middleware/auth.js`

### Other components

- **Students**
- **Organizers**
- **Administrators**
- **MongoDB Atlas**
- **Registration forms**

## Connections

- Students → Routed app: use platform
- Organizers → Routed app: use platform
- Administrators → Routed app: use platform
- Routed app → Event discovery: routes to
- Routed app → Event details: routes to
- Routed app → Club directory: routes to
- Routed app → Student dashboard: routes to
- Routed app → Organizer dashboard: routes to
- Routed app → Admin dashboard: routes to
- Routed app → Account access: routes to
- Routed app → Account registration: routes to
- Event details → Registration forms: links registration
- Client auth helpers → Express API server: validates session
- Express API server → User API: mounts API
- Express API server → Event API: mounts API
- Express API server → Club API: mounts API
- Express API server → Admin API: mounts API
- User API → User records: queries
- Event API → Event records: queries
- Club API → Club records: queries
- Admin API → JWT access checks: checks JWT
- Admin API → User records: reads and deletes
- Admin API → Event records: reads and deletes
- Admin API → Club records: reads
- JWT access checks → Event records: checks event owner
- User records → MongoDB Atlas: persists in
- Event records → MongoDB Atlas: persists in
- Club records → MongoDB Atlas: persists in
