# sonisingh2004/portfolio architecture

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

- Interactive diagram: https://gitdiagram.com/sonisingh2004/portfolio
- Repository: https://github.com/sonisingh2004/portfolio

## Overview

This is a React personal portfolio: visitors browse an introduction, project work, skills, biography, and contact options. The app entry point renders the page composition; Projects reads its project descriptions from local data, and Toolbox delegates technology-icon rendering to TechIcons. Header and AboutMe link to the résumé PDF, while Contact submits its form to FormSubmit. The excerpts support these component relationships; other internal details are not inferred.

Main entry points: [`src/App.jsx`](https://github.com/sonisingh2004/portfolio/blob/main/src/App.jsx) (Page composition), [`src/components/Projects.jsx`](https://github.com/sonisingh2004/portfolio/blob/main/src/components/Projects.jsx) (Projects), [`src/components/Toolbox.jsx`](https://github.com/sonisingh2004/portfolio/blob/main/src/components/Toolbox.jsx) (Skills toolbox), [`src/components/AboutMe.jsx`](https://github.com/sonisingh2004/portfolio/blob/main/src/components/AboutMe.jsx) (About profile)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App composition"]
  node_entry["React entry<br/>[main.jsx]"]
  node_app["Page composition<br/>[App.jsx]"]
end

subgraph group_content["Portfolio content"]
  node_hero["Introduction<br/>[Hero.jsx]"]
  node_projects["Projects<br/>[Projects.jsx]"]
  node_projectdata["Project details<br/>[projects.js]"]
  node_toolbox["Skills toolbox<br/>[Toolbox.jsx]"]
  node_techicons["Technology icons<br/>[TechIcons.jsx]"]
  node_about["About profile<br/>[AboutMe.jsx]"]
  node_resume["Résumé PDF"]
end

subgraph group_engagement["Navigation and contact"]
  node_header["Header<br/>[Header.jsx]"]
  node_contact["Contact form<br/>[Contact.jsx]"]
  node_footer["Footer<br/>[Footer.jsx]"]
end

node_visitor(("Visitor"))
node_formsubmit["FormSubmit"]

node_entry -->|"renders"| node_app
node_app -->|"renders"| node_header
node_app -->|"renders"| node_hero
node_app -->|"renders"| node_projects
node_app -->|"renders"| node_toolbox
node_app -->|"renders"| node_about
node_app -->|"renders"| node_contact
node_app -->|"renders"| node_footer
node_projects -->|"reads"| node_projectdata
node_toolbox -->|"renders"| node_techicons
node_header -->|"links to"| node_resume
node_about -->|"links to"| node_resume
node_contact -->|"submits to"| node_formsubmit

click node_entry "https://github.com/sonisingh2004/portfolio/blob/main/src/main.jsx"
click node_app "https://github.com/sonisingh2004/portfolio/blob/main/src/App.jsx"
click node_header "https://github.com/sonisingh2004/portfolio/blob/main/src/components/Header.jsx"
click node_hero "https://github.com/sonisingh2004/portfolio/blob/main/src/components/Hero.jsx"
click node_projects "https://github.com/sonisingh2004/portfolio/blob/main/src/components/Projects.jsx"
click node_projectdata "https://github.com/sonisingh2004/portfolio/blob/main/src/data/projects.js"
click node_toolbox "https://github.com/sonisingh2004/portfolio/blob/main/src/components/Toolbox.jsx"
click node_techicons "https://github.com/sonisingh2004/portfolio/blob/main/src/components/TechIcons.jsx"
click node_about "https://github.com/sonisingh2004/portfolio/blob/main/src/components/AboutMe.jsx"
click node_resume "https://github.com/sonisingh2004/portfolio/blob/main/src/assets/SoniKumariSingh.pdf"
click node_contact "https://github.com/sonisingh2004/portfolio/blob/main/src/components/Contact.jsx"
click node_footer "https://github.com/sonisingh2004/portfolio/blob/main/src/components/Footer.jsx"

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_entry,node_app toneBlue
class node_hero,node_projects,node_projectdata,node_toolbox,node_techicons,node_about,node_resume toneAmber
class node_header,node_contact,node_footer toneMint
class node_visitor,node_formsubmit toneIndigo
```

## Components

### App composition

- [React entry](https://github.com/sonisingh2004/portfolio/blob/main/src/main.jsx): `src/main.jsx`
- [Page composition](https://github.com/sonisingh2004/portfolio/blob/main/src/App.jsx): `src/App.jsx`

### Portfolio content

- [Introduction](https://github.com/sonisingh2004/portfolio/blob/main/src/components/Hero.jsx): `src/components/Hero.jsx`
- [Projects](https://github.com/sonisingh2004/portfolio/blob/main/src/components/Projects.jsx): `src/components/Projects.jsx`
- [Project details](https://github.com/sonisingh2004/portfolio/blob/main/src/data/projects.js): `src/data/projects.js`
- [Skills toolbox](https://github.com/sonisingh2004/portfolio/blob/main/src/components/Toolbox.jsx): `src/components/Toolbox.jsx`
- [Technology icons](https://github.com/sonisingh2004/portfolio/blob/main/src/components/TechIcons.jsx): `src/components/TechIcons.jsx`
- [About profile](https://github.com/sonisingh2004/portfolio/blob/main/src/components/AboutMe.jsx): `src/components/AboutMe.jsx`
- [Résumé PDF](https://github.com/sonisingh2004/portfolio/blob/main/src/assets/SoniKumariSingh.pdf): `src/assets/SoniKumariSingh.pdf`

### Navigation and contact

- [Header](https://github.com/sonisingh2004/portfolio/blob/main/src/components/Header.jsx): `src/components/Header.jsx`
- [Contact form](https://github.com/sonisingh2004/portfolio/blob/main/src/components/Contact.jsx): `src/components/Contact.jsx`
- [Footer](https://github.com/sonisingh2004/portfolio/blob/main/src/components/Footer.jsx): `src/components/Footer.jsx`

### Other components

- **Visitor**
- **FormSubmit**

## Connections

- React entry → Page composition: renders (evidence: `src/main.jsx`)
- Page composition → Header: renders (evidence: `src/App.jsx`)
- Page composition → Introduction: renders (evidence: `src/App.jsx`)
- Page composition → Projects: renders (evidence: `src/App.jsx`)
- Page composition → Skills toolbox: renders (evidence: `src/App.jsx`)
- Page composition → About profile: renders (evidence: `src/App.jsx`)
- Page composition → Contact form: renders (evidence: `src/App.jsx`)
- Page composition → Footer: renders (evidence: `src/App.jsx`)
- Projects → Project details: reads (evidence: `src/components/Projects.jsx`)
- Skills toolbox → Technology icons: renders (evidence: `src/components/Toolbox.jsx`)
- Header → Résumé PDF: links to (evidence: `src/components/Header.jsx`)
- About profile → Résumé PDF: links to (evidence: `src/components/AboutMe.jsx`)
- Contact form → FormSubmit: submits to (evidence: `src/components/Contact.jsx`)
