# sola-man/my-portfolio architecture

> Architecture diagram of the GitHub repository sola-man/my-portfolio, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sola-man/my-portfolio
- Repository: https://github.com/sola-man/my-portfolio

## Overview

This is a React portfolio site for presenting the developer, skills, and projects, with contact and resume-download actions. A visitor enters through the application shell, navigates routed pages or the home-page showcase, and can inspect project details or submit a contact message. The graph includes the routed views, shared layout, data-driven showcase, and contact integration. Some modules are represented based on the SOURCE INDEX; unsampled behavior and asset wiring are not inferred.

Main entry points: [`src/App.jsx`](https://github.com/sola-man/my-portfolio/blob/main/src/App.jsx) (Routes and shell), [`src/pages/Home.jsx`](https://github.com/sola-man/my-portfolio/blob/main/src/pages/Home.jsx) (Home page), [`src/components/sections/Contact.jsx`](https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Contact.jsx) (Contact form), [`src/data/developerData.js`](https://github.com/sola-man/my-portfolio/blob/main/src/data/developerData.js) (Developer profile data)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_react_app["App entry<br/>[main.jsx]"]
  node_router["Routes and shell<br/>[App.jsx]"]
  node_home["Home page<br/>[Home.jsx]"]
  node_projects_page["Projects page<br/>[Projects.jsx]"]
  node_project_detail["Project detail<br/>[ProjectDetail.jsx]"]
  node_about["About page<br/>[About.jsx]"]
  node_contact_page["Contact page<br/>[Contact.jsx]"]
end

subgraph group_showcase["Portfolio content"]
  node_hero["Hero section<br/>[Hero.jsx]"]
  node_skills["Skills section<br/>[Skills.jsx]"]
  node_project_gallery["Project gallery<br/>[Projects.jsx]"]
  node_contact_form["Contact form<br/>[Contact.jsx]"]
  node_developer_data["Developer profile data<br/>[developerData.js]"]
  node_project_data["Project catalogue<br/>[projectsData.js]"]
  node_skills_data["Skills catalogue<br/>[skillsData.js]"]
end

subgraph group_shared["Shared components"]
  node_header["Header navigation<br/>[Header.jsx]"]
  node_footer["Footer<br/>[Footer.jsx]"]
  node_theme["Theme toggle<br/>[ThemeToggle.jsx]"]
  node_cv_helper["Resume download<br/>[helpers.js]"]
end

node_visitor(("Visitor"))
node_email_service["EmailJS"]

node_visitor -->|"opens"| node_react_app
node_react_app -->|"renders"| node_router
node_router -->|"renders"| node_header
node_router -->|"renders"| node_footer
node_router -->|"routes to"| node_home
node_router -->|"routes to"| node_projects_page
node_router -->|"routes to"| node_project_detail
node_router -->|"routes to"| node_about
node_router -->|"routes to"| node_contact_page
node_header -->|"renders"| node_theme
node_header -->|"calls"| node_cv_helper
node_home -->|"renders"| node_hero
node_home -->|"renders"| node_skills
node_home -->|"renders"| node_project_gallery
node_home -->|"renders"| node_contact_form
node_hero -->|"reads"| node_developer_data
node_hero -->|"calls"| node_cv_helper
node_skills -->|"reads"| node_skills_data
node_project_gallery -->|"reads"| node_project_data
node_projects_page -->|"reads"| node_project_data
node_project_detail -->|"reads"| node_project_data
node_about -->|"reads"| node_developer_data
node_footer -->|"reads"| node_developer_data
node_contact_page -->|"renders"| node_contact_form
node_contact_form -->|"reads"| node_developer_data
node_visitor -->|"submits message"| node_contact_form
node_contact_form -->|"sends email"| node_email_service

click node_react_app "https://github.com/sola-man/my-portfolio/blob/main/src/main.jsx"
click node_router "https://github.com/sola-man/my-portfolio/blob/main/src/App.jsx"
click node_home "https://github.com/sola-man/my-portfolio/blob/main/src/pages/Home.jsx"
click node_projects_page "https://github.com/sola-man/my-portfolio/blob/main/src/pages/Projects.jsx"
click node_project_detail "https://github.com/sola-man/my-portfolio/blob/main/src/pages/ProjectDetail.jsx"
click node_about "https://github.com/sola-man/my-portfolio/blob/main/src/pages/About.jsx"
click node_contact_page "https://github.com/sola-man/my-portfolio/blob/main/src/pages/Contact.jsx"
click node_header "https://github.com/sola-man/my-portfolio/blob/main/src/components/layout/Header.jsx"
click node_footer "https://github.com/sola-man/my-portfolio/blob/main/src/components/layout/Footer.jsx"
click node_theme "https://github.com/sola-man/my-portfolio/blob/main/src/components/layout/ThemeToggle.jsx"
click node_cv_helper "https://github.com/sola-man/my-portfolio/blob/main/src/utils/helpers.js"
click node_hero "https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Hero.jsx"
click node_skills "https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Skills.jsx"
click node_project_gallery "https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Projects.jsx"
click node_contact_form "https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Contact.jsx"
click node_developer_data "https://github.com/sola-man/my-portfolio/blob/main/src/data/developerData.js"
click node_project_data "https://github.com/sola-man/my-portfolio/blob/main/src/data/projectsData.js"
click node_skills_data "https://github.com/sola-man/my-portfolio/blob/main/src/data/skillsData.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_react_app,node_router,node_home,node_projects_page,node_project_detail,node_about,node_contact_page toneBlue
class node_hero,node_skills,node_project_gallery,node_contact_form,node_developer_data,node_project_data,node_skills_data toneAmber
class node_header,node_footer,node_theme,node_cv_helper toneMint
class node_visitor,node_email_service toneIndigo
```

## Components

### Application shell

- [App entry](https://github.com/sola-man/my-portfolio/blob/main/src/main.jsx): `src/main.jsx`
- [Routes and shell](https://github.com/sola-man/my-portfolio/blob/main/src/App.jsx): `src/App.jsx`
- [Home page](https://github.com/sola-man/my-portfolio/blob/main/src/pages/Home.jsx): `src/pages/Home.jsx`
- [Projects page](https://github.com/sola-man/my-portfolio/blob/main/src/pages/Projects.jsx): `src/pages/Projects.jsx`
- [Project detail](https://github.com/sola-man/my-portfolio/blob/main/src/pages/ProjectDetail.jsx): `src/pages/ProjectDetail.jsx`
- [About page](https://github.com/sola-man/my-portfolio/blob/main/src/pages/About.jsx): `src/pages/About.jsx`
- [Contact page](https://github.com/sola-man/my-portfolio/blob/main/src/pages/Contact.jsx): `src/pages/Contact.jsx`

### Portfolio content

- [Hero section](https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Hero.jsx): `src/components/sections/Hero.jsx`
- [Skills section](https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Skills.jsx): `src/components/sections/Skills.jsx`
- [Project gallery](https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Projects.jsx): `src/components/sections/Projects.jsx`
- [Contact form](https://github.com/sola-man/my-portfolio/blob/main/src/components/sections/Contact.jsx): `src/components/sections/Contact.jsx`
- [Developer profile data](https://github.com/sola-man/my-portfolio/blob/main/src/data/developerData.js): `src/data/developerData.js`
- [Project catalogue](https://github.com/sola-man/my-portfolio/blob/main/src/data/projectsData.js): `src/data/projectsData.js`
- [Skills catalogue](https://github.com/sola-man/my-portfolio/blob/main/src/data/skillsData.js): `src/data/skillsData.js`

### Shared components

- [Header navigation](https://github.com/sola-man/my-portfolio/blob/main/src/components/layout/Header.jsx): `src/components/layout/Header.jsx`
- [Footer](https://github.com/sola-man/my-portfolio/blob/main/src/components/layout/Footer.jsx): `src/components/layout/Footer.jsx`
- [Theme toggle](https://github.com/sola-man/my-portfolio/blob/main/src/components/layout/ThemeToggle.jsx): `src/components/layout/ThemeToggle.jsx`
- [Resume download](https://github.com/sola-man/my-portfolio/blob/main/src/utils/helpers.js): `src/utils/helpers.js`

### Other components

- **Visitor**
- **EmailJS**

## Connections

- Visitor → App entry: opens (evidence: `src/main.jsx`)
- App entry → Routes and shell: renders (evidence: `src/main.jsx`)
- Routes and shell → Header navigation: renders (evidence: `src/App.jsx`)
- Routes and shell → Footer: renders (evidence: `src/App.jsx`)
- Routes and shell → Home page: routes to (evidence: `src/App.jsx`)
- Routes and shell → Projects page: routes to (evidence: `src/App.jsx`)
- Routes and shell → Project detail: routes to (evidence: `src/App.jsx`)
- Routes and shell → About page: routes to (evidence: `src/App.jsx`)
- Routes and shell → Contact page: routes to (evidence: `src/App.jsx`)
- Header navigation → Theme toggle: renders (evidence: `src/components/layout/Header.jsx`)
- Header navigation → Resume download: calls (evidence: `src/components/layout/Header.jsx`)
- Home page → Hero section: renders (evidence: `src/pages/Home.jsx`)
- Home page → Skills section: renders (evidence: `src/pages/Home.jsx`)
- Home page → Project gallery: renders (evidence: `src/pages/Home.jsx`)
- Home page → Contact form: renders (evidence: `src/pages/Home.jsx`)
- Hero section → Developer profile data: reads (evidence: `src/components/sections/Hero.jsx`)
- Hero section → Resume download: calls (evidence: `src/components/sections/Hero.jsx`)
- Skills section → Skills catalogue: reads (evidence: `src/components/sections/Skills.jsx`)
- Project gallery → Project catalogue: reads (evidence: `src/components/sections/Projects.jsx`)
- Projects page → Project catalogue: reads (evidence: `src/pages/Projects.jsx`)
- Project detail → Project catalogue: reads (evidence: `src/pages/ProjectDetail.jsx`)
- About page → Developer profile data: reads (evidence: `src/pages/About.jsx`)
- Footer → Developer profile data: reads (evidence: `src/components/layout/Footer.jsx`)
- Contact page → Contact form: renders (evidence: `src/pages/Contact.jsx`)
- Contact form → Developer profile data: reads (evidence: `src/components/sections/Contact.jsx`)
- Visitor → Contact form: submits message (evidence: `src/components/sections/Contact.jsx`)
- Contact form → EmailJS: sends email (evidence: `src/components/sections/Contact.jsx`)
