# shr3e23/ai-solutions architecture

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

- Interactive diagram: https://gitdiagram.com/shr3e23/ai-solutions
- Repository: https://github.com/shr3e23/ai-solutions

## Overview

AI-Solutions is a public company website and a separate admin console backed by an Express/MongoDB API, with a Gemini-powered chatbot. The public workflow presents company and service information, lets visitors explore events and content, register, contact the company, or submit reviews; administrators authenticate and manage content and customer feedback. The graph preserves the major documented content areas and separates API routing, domain operations, and persistence. Several page and admin implementations were not sampled, so their internal calls are omitted; dashed links mark documented integrations whose frontend calls were not shown.

Main entry points: [`server/routes`](https://github.com/shr3e23/ai-solutions/tree/main/server/routes) (Content API routes), [`client/src/App.jsx`](https://github.com/shr3e23/ai-solutions/blob/main/client/src/App.jsx) (Public app shell), [`admin/src/pages/AdminDashboard.jsx`](https://github.com/shr3e23/ai-solutions/blob/main/admin/src/pages/AdminDashboard.jsx) (Admin dashboard), [`admin/src/App.jsx`](https://github.com/shr3e23/ai-solutions/blob/main/admin/src/App.jsx) (Admin app shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public website"]
  node_public_app["Public app shell<br/>[App.jsx]"]
  node_public_pages["Company and services"]
  node_events_pages["Events and gallery"]
  node_case_articles["Case studies and articles"]
  node_reviews_contact["Reviews and contact"]
  node_chat_widget["Chat widget<br/>[Chatbot.jsx]"]
end

subgraph group_admin["Admin console"]
  node_admin_app["Admin app shell<br/>[App.jsx]"]
  node_admin_login["Admin login<br/>[AdminLogin.jsx]"]
  node_admin_dashboard["Admin dashboard<br/>[AdminDashboard.jsx]"]
  node_admin_content["Content management"]
  node_admin_inquiries["Inquiry management<br/>[AdminInquiries.jsx]"]
  node_admin_reviews["Review management<br/>[AdminReviews.jsx]"]
end

subgraph group_api["API and domain logic"]
  node_auth["Admin authentication<br/>[adminController.js]"]
  node_content_routes["Content API routes"]
  node_content_logic["Content controllers"]
end

subgraph group_data["Persistence and uploads"]
  node_mongo[("MongoDB<br/>[db.js]")]
  node_content_models[("Content models")]
  node_uploads["Image uploads"]
end

subgraph group_ai["AI integration"]
  node_chat_api["Chat endpoint<br/>[chatRoutes.js]"]
end

node_visitor(("Website visitor"))
node_admin_user(("Administrator"))
node_gemini["Google Gemini"]

node_visitor -->|"visits"| node_public_app
node_public_app -->|"routes to"| node_public_pages
node_public_app -->|"routes to"| node_events_pages
node_public_app -->|"routes to"| node_case_articles
node_public_app -->|"routes to"| node_reviews_contact
node_public_app -->|"renders"| node_chat_widget
node_public_app -.->|"requests content"| node_content_routes
node_reviews_contact -->|"fetches reviews"| node_content_routes
node_chat_widget -.->|"sends messages"| node_chat_api
node_admin_user -->|"opens console"| node_admin_app
node_admin_app -->|"routes to"| node_admin_login
node_admin_app -->|"protects route"| node_admin_dashboard
node_admin_dashboard -->|"renders managers"| node_admin_content
node_admin_dashboard -->|"renders manager"| node_admin_inquiries
node_admin_dashboard -->|"renders manager"| node_admin_reviews
node_admin_login -.->|"authenticates"| node_auth
node_admin_content -.->|"manages content"| node_content_routes
node_admin_inquiries -.->|"tracks inquiries"| node_content_routes
node_admin_reviews -->|"manages reviews"| node_content_routes
node_content_routes -->|"dispatches requests"| node_content_logic
node_content_routes -->|"checks protected requests"| node_auth
node_content_logic -->|"reads and writes"| node_content_models
node_content_models -.->|"persists records"| node_mongo
node_content_routes -->|"accepts image files"| node_uploads
node_chat_api -->|"generates replies"| node_gemini

click node_public_app "https://github.com/shr3e23/ai-solutions/blob/main/client/src/App.jsx"
click node_public_pages "https://github.com/shr3e23/ai-solutions/tree/main/client/src/pages"
click node_events_pages "https://github.com/shr3e23/ai-solutions/tree/main/client/src/pages"
click node_case_articles "https://github.com/shr3e23/ai-solutions/tree/main/client/src/pages"
click node_reviews_contact "https://github.com/shr3e23/ai-solutions/tree/main/client/src/pages"
click node_chat_widget "https://github.com/shr3e23/ai-solutions/blob/main/client/src/components/Chatbot.jsx"
click node_admin_app "https://github.com/shr3e23/ai-solutions/blob/main/admin/src/App.jsx"
click node_admin_login "https://github.com/shr3e23/ai-solutions/blob/main/admin/src/pages/AdminLogin.jsx"
click node_admin_dashboard "https://github.com/shr3e23/ai-solutions/blob/main/admin/src/pages/AdminDashboard.jsx"
click node_admin_content "https://github.com/shr3e23/ai-solutions/tree/main/admin/src/components/admin"
click node_admin_inquiries "https://github.com/shr3e23/ai-solutions/blob/main/admin/src/components/admin/AdminInquiries.jsx"
click node_admin_reviews "https://github.com/shr3e23/ai-solutions/blob/main/admin/src/pages/AdminReviews.jsx"
click node_auth "https://github.com/shr3e23/ai-solutions/blob/main/server/controllers/adminController.js"
click node_content_routes "https://github.com/shr3e23/ai-solutions/tree/main/server/routes"
click node_content_logic "https://github.com/shr3e23/ai-solutions/tree/main/server/controllers"
click node_chat_api "https://github.com/shr3e23/ai-solutions/blob/main/server/routes/chatRoutes.js"
click node_mongo "https://github.com/shr3e23/ai-solutions/blob/main/server/config/db.js"
click node_content_models "https://github.com/shr3e23/ai-solutions/tree/main/server/models"
click node_uploads "https://github.com/shr3e23/ai-solutions/blob/main/server/middleware/uploadMiddleware.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_public_app,node_public_pages,node_events_pages,node_case_articles,node_reviews_contact,node_chat_widget toneBlue
class node_admin_app,node_admin_login,node_admin_dashboard,node_admin_content,node_admin_inquiries,node_admin_reviews toneAmber
class node_auth,node_content_routes,node_content_logic toneMint
class node_mongo,node_content_models,node_uploads toneRose
class node_chat_api,node_visitor,node_admin_user,node_gemini toneIndigo
```

## Components

### Public website

- [Public app shell](https://github.com/shr3e23/ai-solutions/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Company and services](https://github.com/shr3e23/ai-solutions/tree/main/client/src/pages): `client/src/pages`
- [Events and gallery](https://github.com/shr3e23/ai-solutions/tree/main/client/src/pages): `client/src/pages`
- [Case studies and articles](https://github.com/shr3e23/ai-solutions/tree/main/client/src/pages): `client/src/pages`
- [Reviews and contact](https://github.com/shr3e23/ai-solutions/tree/main/client/src/pages): `client/src/pages`
- [Chat widget](https://github.com/shr3e23/ai-solutions/blob/main/client/src/components/Chatbot.jsx): `client/src/components/Chatbot.jsx`

### Admin console

- [Admin app shell](https://github.com/shr3e23/ai-solutions/blob/main/admin/src/App.jsx): `admin/src/App.jsx`
- [Admin login](https://github.com/shr3e23/ai-solutions/blob/main/admin/src/pages/AdminLogin.jsx): `admin/src/pages/AdminLogin.jsx`
- [Admin dashboard](https://github.com/shr3e23/ai-solutions/blob/main/admin/src/pages/AdminDashboard.jsx): `admin/src/pages/AdminDashboard.jsx`
- [Content management](https://github.com/shr3e23/ai-solutions/tree/main/admin/src/components/admin): `admin/src/components/admin`
- [Inquiry management](https://github.com/shr3e23/ai-solutions/blob/main/admin/src/components/admin/AdminInquiries.jsx): `admin/src/components/admin/AdminInquiries.jsx`
- [Review management](https://github.com/shr3e23/ai-solutions/blob/main/admin/src/pages/AdminReviews.jsx): `admin/src/pages/AdminReviews.jsx`

### API and domain logic

- [Admin authentication](https://github.com/shr3e23/ai-solutions/blob/main/server/controllers/adminController.js): `server/controllers/adminController.js`
- [Content API routes](https://github.com/shr3e23/ai-solutions/tree/main/server/routes): `server/routes`
- [Content controllers](https://github.com/shr3e23/ai-solutions/tree/main/server/controllers): `server/controllers`

### Persistence and uploads

- [MongoDB](https://github.com/shr3e23/ai-solutions/blob/main/server/config/db.js): `server/config/db.js`
- [Content models](https://github.com/shr3e23/ai-solutions/tree/main/server/models): `server/models`
- [Image uploads](https://github.com/shr3e23/ai-solutions/blob/main/server/middleware/uploadMiddleware.js): `server/middleware/uploadMiddleware.js`

### AI integration

- [Chat endpoint](https://github.com/shr3e23/ai-solutions/blob/main/server/routes/chatRoutes.js): `server/routes/chatRoutes.js`

### Other components

- **Website visitor**
- **Administrator**
- **Google Gemini**

## Connections

- Website visitor → Public app shell: visits
- Public app shell → Company and services: routes to (evidence: `client/src/App.jsx`)
- Public app shell → Events and gallery: routes to (evidence: `client/src/App.jsx`)
- Public app shell → Case studies and articles: routes to (evidence: `client/src/App.jsx`)
- Public app shell → Reviews and contact: routes to (evidence: `client/src/App.jsx`)
- Public app shell → Chat widget: renders (evidence: `client/src/App.jsx`)
- Public app shell → Content API routes: requests content
- Reviews and contact → Content API routes: fetches reviews
- Chat widget → Chat endpoint: sends messages
- Administrator → Admin app shell: opens console
- Admin app shell → Admin login: routes to (evidence: `admin/src/App.jsx`)
- Admin app shell → Admin dashboard: protects route (evidence: `admin/src/App.jsx`)
- Admin dashboard → Content management: renders managers (evidence: `admin/src/pages/AdminDashboard.jsx`)
- Admin dashboard → Inquiry management: renders manager (evidence: `admin/src/pages/AdminDashboard.jsx`)
- Admin dashboard → Review management: renders manager (evidence: `admin/src/pages/AdminDashboard.jsx`)
- Admin login → Admin authentication: authenticates
- Content management → Content API routes: manages content
- Inquiry management → Content API routes: tracks inquiries
- Review management → Content API routes: manages reviews (evidence: `admin/src/pages/AdminReviews.jsx`)
- Content API routes → Content controllers: dispatches requests (evidence: `server/routes/reviewRoutes.js`)
- Content API routes → Admin authentication: checks protected requests (evidence: `server/routes/reviewRoutes.js`)
- Content controllers → Content models: reads and writes (evidence: `server/controllers/reviewController.js`)
- Content models → MongoDB: persists records
- Content API routes → Image uploads: accepts image files (evidence: `server/routes/galleryRoutes.js`)
- Chat endpoint → Google Gemini: generates replies (evidence: `server/routes/chatRoutes.js`)
