# jblms00/jomich-academic-commissions architecture

> Architecture diagram of the GitHub repository jblms00/jomich-academic-commissions, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jblms00/jomich-academic-commissions
- Repository: https://github.com/jblms00/jomich-academic-commissions

## Overview

JoMich’s Academic Commissions is a public services and portfolio website with a protected administration area. Visitors browse service information, transaction proofs, and testimonials; administrators sign in, manage proof uploads and profile details, and access dashboard functions. The repository also includes PHP/MySQL APIs for authentication, proofs, reviews, settings, and admin statistics. The sampled dashboard uses Supabase directly for authentication and proof management, while the README documents a PHP/MySQL backend; the excerpts do not establish how all frontend features connect to those APIs.

Main entry points: [`backend/config/database.php`](https://github.com/jblms00/jomich-academic-commissions/blob/main/backend/config/database.php) (Database Connection), [`frontend/src/pages/admin/AdminDashboard.jsx`](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/pages/admin/AdminDashboard.jsx) (Admin Dashboard), [`frontend/src/services/api.js`](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/services/api.js) (API Client), [`frontend/src/App.jsx`](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/App.jsx) (App Router)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public Website"]
  node_app["App Router<br/>[App.jsx]"]
  node_home["Home Page<br/>[Home.jsx]"]
  node_services["Service Offering<br/>[Services.jsx]"]
  node_proofs_ui["Proof Gallery<br/>[Proofs.jsx]"]
  node_reviews_ui["Testimonials<br/>[Reviews.jsx]"]
  node_static_reviews["Review Content<br/>[staticReviews.js]"]
end

subgraph group_admin["Admin Console"]
  node_admin_login["Admin Login<br/>[AdminLogin.jsx]"]
  node_auth_context["Auth Session<br/>[AuthContext.jsx]"]
  node_protected_route["Route Guard<br/>[ProtectedRoute.jsx]"]
  node_dashboard["Admin Dashboard<br/>[AdminDashboard.jsx]"]
  node_api_client["API Client<br/>[api.js]"]
end

subgraph group_backend["PHP API"]
  node_php_auth["PHP Authentication"]
  node_php_proofs["PHP Proof API"]
  node_php_reviews["PHP Review API"]
  node_php_settings["PHP Settings API"]
  node_php_stats["Admin Statistics<br/>[stats.php]"]
end

subgraph group_infra["Data Services"]
  node_db_config["Database Connection<br/>[database.php]"]
  node_supabase_client["Supabase Client<br/>[supabaseClient.js]"]
end

node_visitor(("Visitor"))
node_administrator(("Administrator"))
node_supabase[("Supabase")]
node_mysql[("MySQL Database")]

node_visitor -->|"opens site"| node_app
node_app -->|"routes to"| node_home
node_home -->|"renders"| node_services
node_home -->|"renders"| node_proofs_ui
node_home -->|"renders"| node_reviews_ui
node_reviews_ui -->|"reads"| node_static_reviews
node_app -->|"routes to"| node_admin_login
node_app -->|"guards admin"| node_protected_route
node_protected_route -->|"renders when allowed"| node_dashboard
node_administrator -->|"signs in"| node_admin_login
node_admin_login -->|"uses login"| node_auth_context
node_auth_context -->|"calls auth"| node_supabase_client
node_supabase_client -->|"connects"| node_supabase
node_dashboard -->|"reads and writes proofs"| node_supabase_client
node_dashboard -->|"uploads and removes proof images"| node_supabase
node_dashboard -->|"uses session and logout"| node_auth_context
node_dashboard -->|"reads statistics; updates profile"| node_supabase
node_api_client -.-> node_php_auth
node_api_client -.-> node_php_proofs
node_api_client -.-> node_php_reviews
node_api_client -.-> node_php_settings
node_php_auth -->|"uses connection"| node_db_config
node_php_proofs -->|"uses connection"| node_db_config
node_php_reviews -->|"uses connection"| node_db_config
node_php_settings -->|"uses connection"| node_db_config
node_php_stats -->|"uses connection"| node_db_config
node_db_config -->|"connects"| node_mysql

click node_app "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/App.jsx"
click node_home "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/pages/Home.jsx"
click node_services "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/components/public/Services.jsx"
click node_proofs_ui "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/components/public/Proofs.jsx"
click node_reviews_ui "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/components/public/Reviews.jsx"
click node_static_reviews "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/data/staticReviews.js"
click node_admin_login "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/pages/admin/AdminLogin.jsx"
click node_auth_context "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/context/AuthContext.jsx"
click node_protected_route "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/components/admin/ProtectedRoute.jsx"
click node_dashboard "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/pages/admin/AdminDashboard.jsx"
click node_api_client "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/services/api.js"
click node_php_auth "https://github.com/jblms00/jomich-academic-commissions/tree/main/backend/api/auth"
click node_php_proofs "https://github.com/jblms00/jomich-academic-commissions/tree/main/backend/api/proofs"
click node_php_reviews "https://github.com/jblms00/jomich-academic-commissions/tree/main/backend/api/reviews"
click node_php_settings "https://github.com/jblms00/jomich-academic-commissions/tree/main/backend/api/settings"
click node_php_stats "https://github.com/jblms00/jomich-academic-commissions/blob/main/backend/api/admin/stats.php"
click node_db_config "https://github.com/jblms00/jomich-academic-commissions/blob/main/backend/config/database.php"
click node_supabase_client "https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/services/supabaseClient.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_home,node_services,node_proofs_ui,node_reviews_ui,node_static_reviews toneBlue
class node_admin_login,node_auth_context,node_protected_route,node_dashboard,node_api_client,node_supabase,node_mysql toneAmber
class node_php_auth,node_php_proofs,node_php_reviews,node_php_settings,node_php_stats toneMint
class node_db_config,node_supabase_client toneRose
class node_visitor,node_administrator toneIndigo
```

## Components

### Public Website

- [App Router](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Home Page](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/pages/Home.jsx): `frontend/src/pages/Home.jsx`
- [Service Offering](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/components/public/Services.jsx): `frontend/src/components/public/Services.jsx`
- [Proof Gallery](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/components/public/Proofs.jsx): `frontend/src/components/public/Proofs.jsx`
- [Testimonials](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/components/public/Reviews.jsx): `frontend/src/components/public/Reviews.jsx`
- [Review Content](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/data/staticReviews.js): `frontend/src/data/staticReviews.js`

### Admin Console

- [Admin Login](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/pages/admin/AdminLogin.jsx): `frontend/src/pages/admin/AdminLogin.jsx`
- [Auth Session](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/context/AuthContext.jsx): `frontend/src/context/AuthContext.jsx`
- [Route Guard](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/components/admin/ProtectedRoute.jsx): `frontend/src/components/admin/ProtectedRoute.jsx`
- [Admin Dashboard](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/pages/admin/AdminDashboard.jsx): `frontend/src/pages/admin/AdminDashboard.jsx`
- [API Client](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### PHP API

- [PHP Authentication](https://github.com/jblms00/jomich-academic-commissions/tree/main/backend/api/auth): `backend/api/auth`
- [PHP Proof API](https://github.com/jblms00/jomich-academic-commissions/tree/main/backend/api/proofs): `backend/api/proofs`
- [PHP Review API](https://github.com/jblms00/jomich-academic-commissions/tree/main/backend/api/reviews): `backend/api/reviews`
- [PHP Settings API](https://github.com/jblms00/jomich-academic-commissions/tree/main/backend/api/settings): `backend/api/settings`
- [Admin Statistics](https://github.com/jblms00/jomich-academic-commissions/blob/main/backend/api/admin/stats.php): `backend/api/admin/stats.php`

### Data Services

- [Database Connection](https://github.com/jblms00/jomich-academic-commissions/blob/main/backend/config/database.php): `backend/config/database.php`
- [Supabase Client](https://github.com/jblms00/jomich-academic-commissions/blob/main/frontend/src/services/supabaseClient.js): `frontend/src/services/supabaseClient.js`

### Other components

- **Visitor**
- **Administrator**
- **Supabase**
- **MySQL Database**

## Connections

- Visitor → App Router: opens site
- App Router → Home Page: routes to
- Home Page → Service Offering: renders
- Home Page → Proof Gallery: renders
- Home Page → Testimonials: renders
- Testimonials → Review Content: reads
- App Router → Admin Login: routes to
- App Router → Route Guard: guards admin
- Route Guard → Admin Dashboard: renders when allowed
- Administrator → Admin Login: signs in
- Admin Login → Auth Session: uses login
- Auth Session → Supabase Client: calls auth
- Supabase Client → Supabase: connects
- Admin Dashboard → Supabase Client: reads and writes proofs
- Admin Dashboard → Supabase: uploads and removes proof images
- Admin Dashboard → Auth Session: uses session and logout
- Admin Dashboard → Supabase: reads statistics; updates profile
- API Client → PHP Authentication
- API Client → PHP Proof API
- API Client → PHP Review API
- API Client → PHP Settings API
- PHP Authentication → Database Connection: uses connection
- PHP Proof API → Database Connection: uses connection
- PHP Review API → Database Connection: uses connection
- PHP Settings API → Database Connection: uses connection
- Admin Statistics → Database Connection: uses connection
- Database Connection → MySQL Database: connects
