# oscode-iiitdwd/club-website architecture

> Architecture diagram of the GitHub repository oscode-iiitdwd/club-website, 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/oscode-iiitdwd/club-website
- Repository: https://github.com/oscode-iiitdwd/club-website

## Overview

This appears to be an OS Code club website with public event, member, and resource pages and member-authenticated event/resource management. The sampled routes show event CRUD, JWT-cookie sessions, MongoDB access, and a GitHub image-upload integration; the tree indicates member/resource and presentation subsystems whose detailed wiring was not sampled. The README only documents component usage, so broader product capabilities are inferred cautiously from the route and component names.

Main entry points: [`lib/session.ts`](https://github.com/oscode-iiitdwd/club-website/blob/main/lib/session.ts) (Session handling), [`app/api/auth/login/route.ts`](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/auth/login/route.ts) (Login API), [`app/api/events/route.ts`](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/events/route.ts) (Event API), [`app/api/events/[slug]/route.ts`](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/events/%5Bslug%5D/route.ts) (Single-event API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_home["Home page<br/>[page.tsx]"]
  node_event_list["Event listing<br/>[page.tsx]"]
  node_event_detail["Event detail page<br/>[page.tsx]"]
  node_member_pages["Member pages<br/>[page.tsx]"]
  node_member_profile["Member profile<br/>[page.tsx]"]
  node_resources_page["Resources page<br/>[page.tsx]"]
  node_linktree["Linktree page<br/>[page.tsx]"]
  node_navigation["Navigation and visuals<br/>[navigation.tsx]"]
end

subgraph group_events["Event management"]
  node_event_ui["Event displays"]
  node_event_admin["Event editor"]
  node_event_routes["Event API<br/>[route.ts]"]
  node_event_item_route["Single-event API<br/>[route.ts]"]
  node_event_service["Event service<br/>[event-service.ts]"]
end

subgraph group_identity["Member identity"]
  node_login_ui["Login form<br/>[login-form.tsx]"]
  node_login_route["Login API<br/>[route.ts]"]
  node_session["Session handling<br/>[session.ts]"]
  node_auth_routes["Session status and logout<br/>[route.ts]"]
end

subgraph group_data["Data services"]
  node_event_store[("Event documents<br/>[event.ts]")]
  node_resource_route["Resource API<br/>[route.ts]"]
  node_resource_store[("Resource documents<br/>[resource.ts]")]
  node_member_store[("Member documents<br/>[member.ts]")]
  node_db["MongoDB connection<br/>[db.ts]"]
end

subgraph group_integrations["Integrations"]
  node_github_upload["Image upload API<br/>[route.ts]"]
  node_github["GitHub Contents API"]
end

node_visitor(("Visitor"))
node_member(("Signed-in member"))

node_visitor -->|"opens"| node_home
node_visitor -->|"browses"| node_event_list
node_visitor -->|"views"| node_event_detail
node_visitor -->|"browses"| node_member_pages
node_visitor -->|"views"| node_member_profile
node_visitor -->|"browses"| node_resources_page
node_visitor -->|"opens"| node_linktree
node_home -->|"renders"| node_navigation
node_event_list -->|"renders"| node_event_ui
node_event_detail -->|"renders"| node_event_ui
node_event_list -->|"fetches events"| node_event_routes
node_event_detail -->|"fetches event"| node_event_item_route
node_event_routes -->|"calls"| node_event_service
node_event_item_route -->|"calls"| node_event_service
node_event_service -->|"connects"| node_db
node_event_service -->|"queries and writes"| node_event_store
node_member -->|"signs in"| node_login_ui
node_login_ui -->|"submits credentials"| node_login_route
node_login_route -->|"connects"| node_db
node_login_route -->|"finds member"| node_member_store
node_login_route -->|"creates session"| node_session
node_event_admin -->|"creates event"| node_event_routes
node_event_admin -->|"updates or deletes"| node_event_item_route
node_event_admin -->|"uploads image"| node_github_upload
node_github_upload -->|"requires session"| node_session
node_github_upload -.->|"writes image"| node_github
node_resource_route -->|"requires session"| node_session
node_resource_route -->|"connects"| node_db
node_resource_route -->|"queries and writes"| node_resource_store
node_auth_routes -->|"reads or clears"| node_session
node_event_routes -->|"requires session"| node_session
node_event_item_route -->|"requires session"| node_session

click node_home "https://github.com/oscode-iiitdwd/club-website/blob/main/app/page.tsx"
click node_event_list "https://github.com/oscode-iiitdwd/club-website/blob/main/app/events/page.tsx"
click node_event_detail "https://github.com/oscode-iiitdwd/club-website/blob/main/app/events/%5Bslug%5D/page.tsx"
click node_member_pages "https://github.com/oscode-iiitdwd/club-website/blob/main/app/members/page.tsx"
click node_member_profile "https://github.com/oscode-iiitdwd/club-website/blob/main/app/members/%5Busername%5D/page.tsx"
click node_resources_page "https://github.com/oscode-iiitdwd/club-website/blob/main/app/resources/page.tsx"
click node_linktree "https://github.com/oscode-iiitdwd/club-website/blob/main/app/linktree/page.tsx"
click node_navigation "https://github.com/oscode-iiitdwd/club-website/blob/main/components/navigation.tsx"
click node_event_ui "https://github.com/oscode-iiitdwd/club-website/blob/main/components/events/events-sections.tsx"
click node_event_admin "https://github.com/oscode-iiitdwd/club-website/blob/main/components/events/event-form-dialog.tsx"
click node_event_routes "https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/events/route.ts"
click node_event_item_route "https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/events/%5Bslug%5D/route.ts"
click node_event_service "https://github.com/oscode-iiitdwd/club-website/blob/main/lib/event-service.ts"
click node_event_store "https://github.com/oscode-iiitdwd/club-website/blob/main/lib/models/event.ts"
click node_resource_route "https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/resources/route.ts"
click node_resource_store "https://github.com/oscode-iiitdwd/club-website/blob/main/lib/models/resource.ts"
click node_member_store "https://github.com/oscode-iiitdwd/club-website/blob/main/lib/models/member.ts"
click node_db "https://github.com/oscode-iiitdwd/club-website/blob/main/lib/db.ts"
click node_login_ui "https://github.com/oscode-iiitdwd/club-website/blob/main/components/auth/login-form.tsx"
click node_login_route "https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/auth/login/route.ts"
click node_session "https://github.com/oscode-iiitdwd/club-website/blob/main/lib/session.ts"
click node_github_upload "https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/uploads/github/route.ts"
click node_auth_routes "https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/auth/me/route.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_home,node_event_list,node_event_detail,node_member_pages,node_member_profile,node_resources_page,node_linktree,node_navigation toneBlue
class node_event_ui,node_event_admin,node_event_routes,node_event_item_route,node_event_service toneAmber
class node_login_ui,node_login_route,node_session,node_auth_routes toneMint
class node_event_store,node_resource_route,node_resource_store,node_member_store,node_db toneRose
class node_github_upload,node_github,node_visitor,node_member toneIndigo
```

## Components

### Web experience

- [Home page](https://github.com/oscode-iiitdwd/club-website/blob/main/app/page.tsx): `app/page.tsx`
- [Event listing](https://github.com/oscode-iiitdwd/club-website/blob/main/app/events/page.tsx): `app/events/page.tsx`
- [Event detail page](https://github.com/oscode-iiitdwd/club-website/blob/main/app/events/%5Bslug%5D/page.tsx): `app/events/[slug]/page.tsx`
- [Member pages](https://github.com/oscode-iiitdwd/club-website/blob/main/app/members/page.tsx): `app/members/page.tsx`
- [Member profile](https://github.com/oscode-iiitdwd/club-website/blob/main/app/members/%5Busername%5D/page.tsx): `app/members/[username]/page.tsx`
- [Resources page](https://github.com/oscode-iiitdwd/club-website/blob/main/app/resources/page.tsx): `app/resources/page.tsx`
- [Linktree page](https://github.com/oscode-iiitdwd/club-website/blob/main/app/linktree/page.tsx): `app/linktree/page.tsx`
- [Navigation and visuals](https://github.com/oscode-iiitdwd/club-website/blob/main/components/navigation.tsx): `components/navigation.tsx`

### Event management

- [Event displays](https://github.com/oscode-iiitdwd/club-website/blob/main/components/events/events-sections.tsx): `components/events/events-sections.tsx`
- [Event editor](https://github.com/oscode-iiitdwd/club-website/blob/main/components/events/event-form-dialog.tsx): `components/events/event-form-dialog.tsx`
- [Event API](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/events/route.ts): `app/api/events/route.ts`
- [Single-event API](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/events/%5Bslug%5D/route.ts): `app/api/events/[slug]/route.ts`
- [Event service](https://github.com/oscode-iiitdwd/club-website/blob/main/lib/event-service.ts): `lib/event-service.ts`

### Member identity

- [Login form](https://github.com/oscode-iiitdwd/club-website/blob/main/components/auth/login-form.tsx): `components/auth/login-form.tsx`
- [Login API](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/auth/login/route.ts): `app/api/auth/login/route.ts`
- [Session handling](https://github.com/oscode-iiitdwd/club-website/blob/main/lib/session.ts): `lib/session.ts`
- [Session status and logout](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/auth/me/route.ts): `app/api/auth/me/route.ts`

### Data services

- [Event documents](https://github.com/oscode-iiitdwd/club-website/blob/main/lib/models/event.ts): `lib/models/event.ts`
- [Resource API](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/resources/route.ts): `app/api/resources/route.ts`
- [Resource documents](https://github.com/oscode-iiitdwd/club-website/blob/main/lib/models/resource.ts): `lib/models/resource.ts`
- [Member documents](https://github.com/oscode-iiitdwd/club-website/blob/main/lib/models/member.ts): `lib/models/member.ts`
- [MongoDB connection](https://github.com/oscode-iiitdwd/club-website/blob/main/lib/db.ts): `lib/db.ts`

### Integrations

- [Image upload API](https://github.com/oscode-iiitdwd/club-website/blob/main/app/api/uploads/github/route.ts): `app/api/uploads/github/route.ts`
- **GitHub Contents API**

### Other components

- **Visitor**
- **Signed-in member**

## Connections

- Visitor → Home page: opens
- Visitor → Event listing: browses
- Visitor → Event detail page: views
- Visitor → Member pages: browses
- Visitor → Member profile: views
- Visitor → Resources page: browses
- Visitor → Linktree page: opens
- Home page → Navigation and visuals: renders
- Event listing → Event displays: renders
- Event detail page → Event displays: renders
- Event listing → Event API: fetches events
- Event detail page → Single-event API: fetches event
- Event API → Event service: calls
- Single-event API → Event service: calls
- Event service → MongoDB connection: connects
- Event service → Event documents: queries and writes
- Signed-in member → Login form: signs in
- Login form → Login API: submits credentials
- Login API → MongoDB connection: connects
- Login API → Member documents: finds member
- Login API → Session handling: creates session
- Event editor → Event API: creates event
- Event editor → Single-event API: updates or deletes
- Event editor → Image upload API: uploads image
- Image upload API → Session handling: requires session
- Image upload API → GitHub Contents API: writes image
- Resource API → Session handling: requires session
- Resource API → MongoDB connection: connects
- Resource API → Resource documents: queries and writes
- Session status and logout → Session handling: reads or clears
- Event API → Session handling: requires session
- Single-event API → Session handling: requires session
