# niyamulgoni/project_bridge architecture

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

## Overview

ProjectBridge connects university project teams with industry supporters. Users register or sign in, create and submit projects, then discover and view published work; professionals can engage, contact teams, and make offers, while admins review submissions and reports. The React app routes user actions through its API client to Express feature routes and services, with Prisma-backed PostgreSQL state and optional media storage. The README documents additional role, sharing, notification, and messaging capabilities. Some client-to-API wiring and unsampled feature internals are not shown, so those links are marked unverified.

Main entry points: [`server/src/app.ts`](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/app.ts) (Express application), [`client/src/App.tsx`](https://github.com/niyamulgoni/project_bridge/blob/master/client/src/App.tsx) (App routes), [`client/src/api.ts`](https://github.com/niyamulgoni/project_bridge/blob/master/client/src/api.ts) (API client), [`server/src/modules/projects/routes.ts`](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/projects/routes.ts) (Project routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_app["App routes<br/>[App.tsx]"]
  node_authui["Account screens<br/>[Login.tsx]"]
  node_projectui["Project screens<br/>[ProjectEditor.tsx]"]
  node_exploreui["Explore screens<br/>[Explore.tsx]"]
  node_adminui["Admin screens<br/>[AdminArea.tsx]"]
  node_apiclient["API client<br/>[api.ts]"]
end

subgraph group_platform["API platform"]
  node_express["Express application<br/>[app.ts]"]
  node_auth["Session and access<br/>[auth.ts]"]
  node_accounts["Account access<br/>[routes.ts]"]
  node_storage["Media storage<br/>[storage.ts]"]
  node_prisma["Prisma database access<br/>[prisma.ts]"]
end

subgraph group_projects["Project lifecycle"]
  node_projectroutes["Project routes<br/>[routes.ts]"]
  node_projectservice["Project lifecycle<br/>[service.ts]"]
  node_media["Project media<br/>[media.ts]"]
  node_discovery["Feed and search<br/>[routes.ts]"]
  node_visibility["Role visibility<br/>[visibility.ts]"]
end

subgraph group_community["Community features"]
  node_engagement["Likes and comments<br/>[service.ts]"]
  node_messaging["Contact and messages<br/>[routes.ts]"]
  node_offers["Paid offers<br/>[service.ts]"]
  node_notifications["Notifications<br/>[service.ts]"]
  node_sharing["Public sharing<br/>[service.ts]"]
end

subgraph group_governance["Review and governance"]
  node_adminroutes["Admin review<br/>[routes.ts]"]
  node_reports["Report filing<br/>[service.ts]"]
  node_roles["Role requests<br/>[service.ts]"]
end

node_user(("University users"))
node_admin(("Administrators"))
node_postgres[("Supabase Postgres")]
node_supastorage["Supabase Storage"]

node_user -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"routes to"| node_authui
node_app -->|"routes to"| node_projectui
node_app -->|"routes to"| node_exploreui
node_app -->|"routes to"| node_adminui
node_authui -.->|"requests"| node_apiclient
node_projectui -.->|"requests"| node_apiclient
node_exploreui -.->|"requests"| node_apiclient
node_adminui -.->|"requests"| node_apiclient
node_apiclient -.->|"calls API"| node_express
node_express -->|"mounts"| node_accounts
node_express -->|"mounts"| node_projectroutes
node_express -->|"mounts"| node_discovery
node_express -->|"mounts"| node_messaging
node_express -->|"mounts"| node_adminroutes
node_projectroutes -->|"calls"| node_projectservice
node_projectroutes -->|"calls"| node_media
node_media -->|"uses"| node_storage
node_storage -->|"stores media"| node_supastorage
node_discovery -->|"formats by tier"| node_visibility
node_discovery -->|"formats comments"| node_engagement
node_discovery -->|"gets share info"| node_sharing
node_adminroutes -->|"reviews offers"| node_offers
node_accounts -->|"uses gates"| node_auth
node_projectroutes -->|"uses gates"| node_auth
node_projectservice -->|"accesses data"| node_prisma
node_prisma -.->|"queries"| node_postgres
node_engagement -->|"notifies"| node_notifications

click node_app "https://github.com/niyamulgoni/project_bridge/blob/master/client/src/App.tsx"
click node_authui "https://github.com/niyamulgoni/project_bridge/blob/master/client/src/pages/Login.tsx"
click node_projectui "https://github.com/niyamulgoni/project_bridge/blob/master/client/src/pages/ProjectEditor.tsx"
click node_exploreui "https://github.com/niyamulgoni/project_bridge/blob/master/client/src/pages/Explore.tsx"
click node_adminui "https://github.com/niyamulgoni/project_bridge/blob/master/client/src/pages/AdminArea.tsx"
click node_apiclient "https://github.com/niyamulgoni/project_bridge/blob/master/client/src/api.ts"
click node_express "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/app.ts"
click node_auth "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/middleware/auth.ts"
click node_accounts "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/accounts/routes.ts"
click node_projectroutes "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/projects/routes.ts"
click node_projectservice "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/projects/service.ts"
click node_media "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/projects/media.ts"
click node_storage "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/lib/storage.ts"
click node_discovery "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/discovery/routes.ts"
click node_visibility "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/discovery/visibility.ts"
click node_engagement "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/engagement/service.ts"
click node_messaging "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/messaging/routes.ts"
click node_offers "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/offers/service.ts"
click node_notifications "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/notifications/service.ts"
click node_sharing "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/sharing/service.ts"
click node_adminroutes "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/admin/routes.ts"
click node_reports "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/reports/service.ts"
click node_roles "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/roles/service.ts"
click node_prisma "https://github.com/niyamulgoni/project_bridge/blob/master/server/src/lib/prisma.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_app,node_authui,node_projectui,node_exploreui,node_adminui,node_apiclient,node_user toneBlue
class node_express,node_auth,node_accounts,node_storage,node_prisma,node_postgres,node_supastorage toneAmber
class node_projectroutes,node_projectservice,node_media,node_discovery,node_visibility toneMint
class node_engagement,node_messaging,node_offers,node_notifications,node_sharing toneRose
class node_adminroutes,node_reports,node_roles,node_admin toneIndigo
```

## Components

### Web client

- [App routes](https://github.com/niyamulgoni/project_bridge/blob/master/client/src/App.tsx): `client/src/App.tsx`
- [Account screens](https://github.com/niyamulgoni/project_bridge/blob/master/client/src/pages/Login.tsx): `client/src/pages/Login.tsx`
- [Project screens](https://github.com/niyamulgoni/project_bridge/blob/master/client/src/pages/ProjectEditor.tsx): `client/src/pages/ProjectEditor.tsx`
- [Explore screens](https://github.com/niyamulgoni/project_bridge/blob/master/client/src/pages/Explore.tsx): `client/src/pages/Explore.tsx`
- [Admin screens](https://github.com/niyamulgoni/project_bridge/blob/master/client/src/pages/AdminArea.tsx): `client/src/pages/AdminArea.tsx`
- [API client](https://github.com/niyamulgoni/project_bridge/blob/master/client/src/api.ts): `client/src/api.ts`

### API platform

- [Express application](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/app.ts): `server/src/app.ts`
- [Session and access](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/middleware/auth.ts): `server/src/middleware/auth.ts`
- [Account access](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/accounts/routes.ts): `server/src/modules/accounts/routes.ts`
- [Media storage](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/lib/storage.ts): `server/src/lib/storage.ts`
- [Prisma database access](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/lib/prisma.ts): `server/src/lib/prisma.ts`

### Project lifecycle

- [Project routes](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/projects/routes.ts): `server/src/modules/projects/routes.ts`
- [Project lifecycle](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/projects/service.ts): `server/src/modules/projects/service.ts`
- [Project media](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/projects/media.ts): `server/src/modules/projects/media.ts`
- [Feed and search](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/discovery/routes.ts): `server/src/modules/discovery/routes.ts`
- [Role visibility](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/discovery/visibility.ts): `server/src/modules/discovery/visibility.ts`

### Community features

- [Likes and comments](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/engagement/service.ts): `server/src/modules/engagement/service.ts`
- [Contact and messages](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/messaging/routes.ts): `server/src/modules/messaging/routes.ts`
- [Paid offers](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/offers/service.ts): `server/src/modules/offers/service.ts`
- [Notifications](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/notifications/service.ts): `server/src/modules/notifications/service.ts`
- [Public sharing](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/sharing/service.ts): `server/src/modules/sharing/service.ts`

### Review and governance

- [Admin review](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/admin/routes.ts): `server/src/modules/admin/routes.ts`
- [Report filing](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/reports/service.ts): `server/src/modules/reports/service.ts`
- [Role requests](https://github.com/niyamulgoni/project_bridge/blob/master/server/src/modules/roles/service.ts): `server/src/modules/roles/service.ts`

### Other components

- **University users**
- **Administrators**
- **Supabase Postgres**
- **Supabase Storage**

## Connections

- University users → App routes: uses (evidence: `client/src/App.tsx`)
- Administrators → App routes: uses (evidence: `client/src/App.tsx`)
- App routes → Account screens: routes to (evidence: `client/src/App.tsx`)
- App routes → Project screens: routes to (evidence: `client/src/App.tsx`)
- App routes → Explore screens: routes to (evidence: `client/src/App.tsx`)
- App routes → Admin screens: routes to (evidence: `client/src/App.tsx`)
- Account screens → API client: requests
- Project screens → API client: requests
- Explore screens → API client: requests
- Admin screens → API client: requests
- API client → Express application: calls API
- Express application → Account access: mounts (evidence: `server/src/app.ts`)
- Express application → Project routes: mounts (evidence: `server/src/app.ts`)
- Express application → Feed and search: mounts (evidence: `server/src/app.ts`)
- Express application → Contact and messages: mounts (evidence: `server/src/app.ts`)
- Express application → Admin review: mounts (evidence: `server/src/app.ts`)
- Project routes → Project lifecycle: calls (evidence: `server/src/modules/projects/routes.ts`)
- Project routes → Project media: calls (evidence: `server/src/modules/projects/routes.ts`)
- Project media → Media storage: uses (evidence: `server/src/modules/projects/media.ts`)
- Media storage → Supabase Storage: stores media (evidence: `server/src/lib/storage.ts`)
- Feed and search → Role visibility: formats by tier (evidence: `server/src/modules/discovery/routes.ts`)
- Feed and search → Likes and comments: formats comments (evidence: `server/src/modules/discovery/routes.ts`)
- Feed and search → Public sharing: gets share info (evidence: `server/src/modules/discovery/routes.ts`)
- Admin review → Paid offers: reviews offers (evidence: `server/src/modules/admin/routes.ts`)
- Account access → Session and access: uses gates (evidence: `server/src/modules/accounts/routes.ts`)
- Project routes → Session and access: uses gates (evidence: `server/src/modules/projects/routes.ts`)
- Project lifecycle → Prisma database access: accesses data (evidence: `server/src/modules/projects/service.ts`)
- Prisma database access → Supabase Postgres: queries
- Likes and comments → Notifications: notifies (evidence: `server/src/modules/engagement/service.ts`)
