# jb21-main/clunnect architecture

> Architecture diagram of the GitHub repository jb21-main/clunnect, 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/jb21-main/clunnect
- Repository: https://github.com/jb21-main/clunnect

## Overview

Clunnect is a Flask application for UTD users to create accounts, authenticate, discover clubs, and join them; the README also lists club creation as a current feature. The main workflow runs from browser requests through Flask routes to domain controllers and persistent data. The tree and excerpts support additional account, event, and calendar capabilities, though event pages are noted as incomplete. The graph shows only wiring evidenced by sampled source or README; controller wiring in omitted route sections is not assumed.

Main entry points: [`src/main/TestApp.py`](https://github.com/jb21-main/clunnect/blob/main/src/main/TestApp.py) (Flask routes), [`src/main/Services/DBmgr.py`](https://github.com/jb21-main/clunnect/blob/main/src/main/Services/DBmgr.py) (Database access), [`src/main/Controllers/AuthController.py`](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/AuthController.py) (Authentication), [`src/main/Controllers/EventController.py`](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/EventController.py) (Event management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_flask["Flask routes<br/>[TestApp.py]"]
  node_templates["Page templates"]
end

subgraph group_domain["Club and event workflows"]
  node_club["Club management<br/>[ClubController.py]"]
  node_join["Club membership"]
  node_search["Club search"]
  node_event["Event management<br/>[EventController.py]"]
  node_calendar["Calendar view"]
end

subgraph group_identity["Accounts and identity"]
  node_auth["Authentication<br/>[AuthController.py]"]
  node_account["Account updates"]
  node_usercreator["User creation<br/>[UserCreator.py]"]
  node_verifier["Password verification<br/>[Verifier.py]"]
  node_sessions["Session tokens<br/>[SessionManager.py]"]
  node_validation["Input validation"]
end

subgraph group_data["Data and persistence"]
  node_models["Domain models"]
  node_dbmgr["Database access<br/>[DBmgr.py]"]
end

node_visitor(("Browser user"))
node_supabase[("Supabase")]

node_visitor -->|"sends requests"| node_flask
node_flask -->|"renders pages"| node_templates
node_flask -->|"authenticates users"| node_auth
node_flask -->|"manages clubs"| node_club
node_flask -->|"joins clubs"| node_join
node_flask -->|"searches clubs"| node_search
node_flask -->|"manages events"| node_event
node_flask -->|"loads calendar"| node_calendar
node_flask -->|"updates account"| node_account
node_auth -->|"validates email"| node_validation
node_auth -->|"checks password"| node_verifier
node_auth -->|"creates tokens"| node_sessions
node_auth -->|"creates accounts"| node_usercreator
node_auth -->|"looks up users"| node_dbmgr
node_usercreator -->|"persists users"| node_dbmgr
node_account -->|"updates users"| node_dbmgr
node_club -->|"reads and writes clubs"| node_dbmgr
node_join -->|"checks and adds members"| node_dbmgr
node_search -->|"searches clubs"| node_dbmgr
node_event -->|"validates event data"| node_validation
node_event -->|"reads and writes events"| node_dbmgr
node_calendar -->|"loads member events"| node_dbmgr
node_calendar -->|"gets club memberships"| node_dbmgr
node_event -->|"creates event objects"| node_models
node_club -->|"creates club objects"| node_models
node_join -->|"builds club object"| node_models
node_dbmgr -->|"accesses data"| node_supabase
node_calendar -->|"queries events"| node_supabase

click node_flask "https://github.com/jb21-main/clunnect/blob/main/src/main/TestApp.py"
click node_templates "https://github.com/jb21-main/clunnect/tree/main/src/main/Templates"
click node_club "https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/ClubController.py"
click node_join "https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/JoinClubController.py"
click node_search "https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/SearchController.py"
click node_event "https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/EventController.py"
click node_calendar "https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/CalendarController.py"
click node_auth "https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/AuthController.py"
click node_account "https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/AccountController.py"
click node_usercreator "https://github.com/jb21-main/clunnect/blob/main/src/main/Services/UserCreator.py"
click node_verifier "https://github.com/jb21-main/clunnect/blob/main/src/main/Services/Verifier.py"
click node_sessions "https://github.com/jb21-main/clunnect/blob/main/src/main/Services/SessionManager.py"
click node_validation "https://github.com/jb21-main/clunnect/blob/main/src/main/Services/ValidationService.py"
click node_models "https://github.com/jb21-main/clunnect/tree/main/src/main/Data"
click node_dbmgr "https://github.com/jb21-main/clunnect/blob/main/src/main/Services/DBmgr.py"

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_flask,node_templates,node_visitor toneBlue
class node_club,node_join,node_search,node_event,node_calendar,node_supabase toneAmber
class node_auth,node_account,node_usercreator,node_verifier,node_sessions,node_validation toneMint
class node_models,node_dbmgr toneRose
```

## Components

### Web interface

- [Flask routes](https://github.com/jb21-main/clunnect/blob/main/src/main/TestApp.py): `src/main/TestApp.py`
- [Page templates](https://github.com/jb21-main/clunnect/tree/main/src/main/Templates): `src/main/Templates`

### Club and event workflows

- [Club management](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/ClubController.py): `src/main/Controllers/ClubController.py`
- [Club membership](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/JoinClubController.py): `src/main/Controllers/JoinClubController.py`
- [Club search](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/SearchController.py): `src/main/Controllers/SearchController.py`
- [Event management](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/EventController.py): `src/main/Controllers/EventController.py`
- [Calendar view](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/CalendarController.py): `src/main/Controllers/CalendarController.py`

### Accounts and identity

- [Authentication](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/AuthController.py): `src/main/Controllers/AuthController.py`
- [Account updates](https://github.com/jb21-main/clunnect/blob/main/src/main/Controllers/AccountController.py): `src/main/Controllers/AccountController.py`
- [User creation](https://github.com/jb21-main/clunnect/blob/main/src/main/Services/UserCreator.py): `src/main/Services/UserCreator.py`
- [Password verification](https://github.com/jb21-main/clunnect/blob/main/src/main/Services/Verifier.py): `src/main/Services/Verifier.py`
- [Session tokens](https://github.com/jb21-main/clunnect/blob/main/src/main/Services/SessionManager.py): `src/main/Services/SessionManager.py`
- [Input validation](https://github.com/jb21-main/clunnect/blob/main/src/main/Services/ValidationService.py): `src/main/Services/ValidationService.py`

### Data and persistence

- [Domain models](https://github.com/jb21-main/clunnect/tree/main/src/main/Data): `src/main/Data`
- [Database access](https://github.com/jb21-main/clunnect/blob/main/src/main/Services/DBmgr.py): `src/main/Services/DBmgr.py`

### Other components

- **Browser user**
- **Supabase**

## Connections

- Browser user → Flask routes: sends requests
- Flask routes → Page templates: renders pages
- Flask routes → Authentication: authenticates users
- Flask routes → Club management: manages clubs
- Flask routes → Club membership: joins clubs
- Flask routes → Club search: searches clubs
- Flask routes → Event management: manages events
- Flask routes → Calendar view: loads calendar
- Flask routes → Account updates: updates account
- Authentication → Input validation: validates email
- Authentication → Password verification: checks password
- Authentication → Session tokens: creates tokens
- Authentication → User creation: creates accounts
- Authentication → Database access: looks up users
- User creation → Database access: persists users
- Account updates → Database access: updates users
- Club management → Database access: reads and writes clubs
- Club membership → Database access: checks and adds members
- Club search → Database access: searches clubs
- Event management → Input validation: validates event data
- Event management → Database access: reads and writes events
- Calendar view → Database access: loads member events
- Calendar view → Database access: gets club memberships
- Event management → Domain models: creates event objects
- Club management → Domain models: creates club objects
- Club membership → Domain models: builds club object
- Database access → Supabase: accesses data
- Calendar view → Supabase: queries events
