# mpumelelo-kenny-gabuza/dr-nogaga-surgery architecture

> Architecture diagram of the GitHub repository mpumelelo-kenny-gabuza/dr-nogaga-surgery, 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/mpumelelo-kenny-gabuza/dr-nogaga-surgery
- Repository: https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery

## Overview

This repository is currently the routed foundation for a planned practice website and CMS, not the finished product. Visitors enter through the public layout and see placeholder routes; administrators have a separate layout with placeholder management routes, while login is also only a placeholder. The README documents planned content management, enquiry handling, blog engagement and Supabase services, but those features are not implemented in the sampled source. Dashed, uncited links indicate planned or unverified integrations; the graph does not imply they are running.

Main entry points: [`src/App.tsx`](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx) (App Routes), [`src/layouts/PublicLayout.tsx`](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/layouts/PublicLayout.tsx) (Public Layout), [`src/pages/Placeholder.tsx`](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/pages/Placeholder.tsx) (Route Placeholder), [`src/pages/NotFound.tsx`](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/pages/NotFound.tsx) (Not Found)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_routing["App Shell"]
  node_router["App Routes<br/>[App.tsx]"]
  node_not_found["Not Found<br/>[NotFound.tsx]"]
  node_placeholder["Route Placeholder<br/>[Placeholder.tsx]"]
end

subgraph group_public["Public Website"]
  node_public_layout["Public Layout<br/>[PublicLayout.tsx]"]
  node_practice_info["Practice Pages<br/>[App.tsx]"]
  node_procedures["Procedures<br/>[App.tsx]"]
  node_resources["Patient Resources<br/>[App.tsx]"]
  node_gallery_testimonials["Gallery &amp; Testimonials<br/>[App.tsx]"]
  node_faq_contact["FAQ &amp; Contact<br/>[App.tsx]"]
  node_consultation["Consultation Enquiry<br/>[App.tsx]"]
end

subgraph group_admin["Admin CMS"]
  node_admin_layout["Admin Layout<br/>[AdminLayout.tsx]"]
  node_content_management["Content Management<br/>[App.tsx]"]
  node_enquiry_dashboard["Enquiry Dashboard<br/>[App.tsx]"]
  node_blog_moderation["Blog Engagement<br/>[App.tsx]"]
  node_authentication["Admin Authentication<br/>[App.tsx]"]
end

subgraph group_shared["Shared UI"]
  node_logo["Logo<br/>[Logo.tsx]"]
  node_button["Button Styles<br/>[Button.tsx]"]
  node_container["Container<br/>[Container.tsx]"]
end

node_visitor(("Website Visitor"))
node_administrator(("Administrator"))
node_supabase[("Supabase Services")]

node_visitor -->|"opens routes"| node_router
node_administrator -->|"opens routes"| node_router
node_router -->|"routes through"| node_public_layout
node_router -->|"routes through"| node_admin_layout
node_router -->|"renders"| node_placeholder
node_router -->|"renders fallback"| node_not_found
node_public_layout -->|"renders outlet"| node_placeholder
node_admin_layout -.->|"renders outlet"| node_placeholder
node_public_layout -->|"renders"| node_logo
node_public_layout -->|"uses styles"| node_button
node_public_layout -->|"uses"| node_container
node_not_found -->|"uses"| node_container
node_not_found -->|"uses styles"| node_button
node_placeholder -->|"uses"| node_container
node_router -->|"routes placeholders"| node_practice_info
node_router -->|"routes placeholders"| node_procedures
node_router -->|"routes placeholders"| node_resources
node_router -->|"routes placeholders"| node_gallery_testimonials
node_router -->|"routes placeholders"| node_faq_contact
node_router -->|"routes placeholder"| node_consultation
node_router -->|"routes placeholders"| node_content_management
node_router -->|"routes placeholder"| node_enquiry_dashboard
node_router -->|"routes placeholder"| node_blog_moderation
node_router -->|"routes login placeholder"| node_authentication
node_content_management -.->|"planned content storage"| node_supabase
node_enquiry_dashboard -.->|"planned enquiry handling"| node_supabase
node_authentication -.->|"planned authentication"| node_supabase

click node_router "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_not_found "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/pages/NotFound.tsx"
click node_placeholder "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/pages/Placeholder.tsx"
click node_public_layout "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/layouts/PublicLayout.tsx"
click node_practice_info "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_procedures "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_resources "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_gallery_testimonials "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_faq_contact "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_consultation "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_admin_layout "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/layouts/AdminLayout.tsx"
click node_content_management "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_enquiry_dashboard "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_blog_moderation "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_authentication "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx"
click node_logo "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/components/ui/Logo.tsx"
click node_button "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/components/ui/Button.tsx"
click node_container "https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/components/ui/Container.tsx"

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_router,node_not_found,node_placeholder toneBlue
class node_public_layout,node_practice_info,node_procedures,node_resources,node_gallery_testimonials,node_faq_contact,node_consultation,node_supabase toneAmber
class node_admin_layout,node_content_management,node_enquiry_dashboard,node_blog_moderation,node_authentication toneMint
class node_logo,node_button,node_container toneRose
class node_visitor,node_administrator toneIndigo
```

## Components

### App Shell

- [App Routes](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [Not Found](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/pages/NotFound.tsx): `src/pages/NotFound.tsx`
- [Route Placeholder](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/pages/Placeholder.tsx): `src/pages/Placeholder.tsx`

### Public Website

- [Public Layout](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/layouts/PublicLayout.tsx): `src/layouts/PublicLayout.tsx`
- [Practice Pages](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [Procedures](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [Patient Resources](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [Gallery & Testimonials](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [FAQ & Contact](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [Consultation Enquiry](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`

### Admin CMS

- [Admin Layout](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/layouts/AdminLayout.tsx): `src/layouts/AdminLayout.tsx`
- [Content Management](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [Enquiry Dashboard](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [Blog Engagement](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`
- [Admin Authentication](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/App.tsx): `src/App.tsx`

### Shared UI

- [Logo](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/components/ui/Logo.tsx): `src/components/ui/Logo.tsx`
- [Button Styles](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/components/ui/Button.tsx): `src/components/ui/Button.tsx`
- [Container](https://github.com/mpumelelo-kenny-gabuza/dr-nogaga-surgery/blob/main/src/components/ui/Container.tsx): `src/components/ui/Container.tsx`

### Other components

- **Website Visitor**
- **Administrator**
- **Supabase Services**

## Connections

- Website Visitor → App Routes: opens routes
- Administrator → App Routes: opens routes
- App Routes → Public Layout: routes through (evidence: `src/App.tsx`)
- App Routes → Admin Layout: routes through (evidence: `src/App.tsx`)
- App Routes → Route Placeholder: renders (evidence: `src/App.tsx`)
- App Routes → Not Found: renders fallback (evidence: `src/App.tsx`)
- Public Layout → Route Placeholder: renders outlet (evidence: `src/layouts/PublicLayout.tsx`)
- Admin Layout → Route Placeholder: renders outlet
- Public Layout → Logo: renders (evidence: `src/layouts/PublicLayout.tsx`)
- Public Layout → Button Styles: uses styles (evidence: `src/layouts/PublicLayout.tsx`)
- Public Layout → Container: uses (evidence: `src/layouts/PublicLayout.tsx`)
- Not Found → Container: uses (evidence: `src/pages/NotFound.tsx`)
- Not Found → Button Styles: uses styles (evidence: `src/pages/NotFound.tsx`)
- Route Placeholder → Container: uses (evidence: `src/pages/Placeholder.tsx`)
- App Routes → Practice Pages: routes placeholders (evidence: `src/App.tsx`)
- App Routes → Procedures: routes placeholders (evidence: `src/App.tsx`)
- App Routes → Patient Resources: routes placeholders (evidence: `src/App.tsx`)
- App Routes → Gallery & Testimonials: routes placeholders (evidence: `src/App.tsx`)
- App Routes → FAQ & Contact: routes placeholders (evidence: `src/App.tsx`)
- App Routes → Consultation Enquiry: routes placeholder (evidence: `src/App.tsx`)
- App Routes → Content Management: routes placeholders (evidence: `src/App.tsx`)
- App Routes → Enquiry Dashboard: routes placeholder (evidence: `src/App.tsx`)
- App Routes → Blog Engagement: routes placeholder (evidence: `src/App.tsx`)
- App Routes → Admin Authentication: routes login placeholder (evidence: `src/App.tsx`)
- Content Management → Supabase Services: planned content storage
- Enquiry Dashboard → Supabase Services: planned enquiry handling
- Admin Authentication → Supabase Services: planned authentication
