# adityachy07/portfolio architecture

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

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

## Overview

This repository is a personal portfolio website with a React frontend and an Express contact API. Visitors view the portfolio’s hero, about, skills, projects, and experience sections, then can submit a contact message to the server for validation and storage. The frontend entry point also provides theme context and shared layout/UI elements. The README is empty and several server modules were not sampled, so the graph shows only evidenced server routing and contact persistence; it does not assume project or authentication flows are active.

Main entry points: [`client/src/App.jsx`](https://github.com/adityachy07/portfolio/blob/main/client/src/App.jsx) (Portfolio app), [`client/src/main.jsx`](https://github.com/adityachy07/portfolio/blob/main/client/src/main.jsx) (React entry), [`server/controllers/contactController.js`](https://github.com/adityachy07/portfolio/blob/main/server/controllers/contactController.js) (Message handler), [`server/server.js`](https://github.com/adityachy07/portfolio/blob/main/server/server.js) (Server startup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Portfolio frontend"]
  node_react_entry["React entry<br/>[main.jsx]"]
  node_app["Portfolio app<br/>[App.jsx]"]
  node_theme["Theme context<br/>[ThemeContext.jsx]"]
  node_navbar["Navigation<br/>[Navbar.jsx]"]
  node_hero["Hero section<br/>[Hero.jsx]"]
  node_about["About section<br/>[About.jsx]"]
  node_skills["Skills section<br/>[Skills.jsx]"]
  node_projects["Projects section<br/>[Projects.jsx]"]
  node_experience["Experience section<br/>[Experience.jsx]"]
  node_contact_ui["Contact section<br/>[Contact.jsx]"]
  node_footer["Footer<br/>[Footer.jsx]"]
  node_scroll_ui["Scroll controls<br/>[ScrollToTop.jsx]"]
end

subgraph group_contact["Contact service"]
  node_express_app["Express app<br/>[app.js]"]
  node_contact_routes["Contact route<br/>[contactRoutes.js]"]
  node_contact_controller["Message handler"]
  node_contact_model["Contact model<br/>[Contact.js]"]
end

subgraph group_runtime["Application runtime"]
  node_server_start["Server startup<br/>[server.js]"]
  node_db_config["Database connection<br/>[db.js]"]
end

node_visitor(("Visitor"))
node_mongo[("MongoDB")]

node_visitor -->|"opens portfolio"| node_react_entry
node_react_entry -->|"provides theme"| node_theme
node_react_entry -->|"renders"| node_app
node_app -->|"renders"| node_navbar
node_app -->|"renders"| node_hero
node_app -->|"renders"| node_about
node_app -->|"renders"| node_skills
node_app -->|"renders"| node_projects
node_app -->|"renders"| node_experience
node_app -->|"renders"| node_contact_ui
node_app -->|"renders"| node_footer
node_app -->|"renders"| node_scroll_ui
node_server_start -->|"connects"| node_db_config
node_server_start -->|"starts"| node_express_app
node_express_app -->|"mounts"| node_contact_routes
node_contact_routes -->|"dispatches"| node_contact_controller
node_contact_controller -->|"creates record"| node_contact_model
node_contact_controller -->|"checks and writes"| node_mongo
node_db_config -->|"connects"| node_mongo

click node_react_entry "https://github.com/adityachy07/portfolio/blob/main/client/src/main.jsx"
click node_app "https://github.com/adityachy07/portfolio/blob/main/client/src/App.jsx"
click node_theme "https://github.com/adityachy07/portfolio/blob/main/client/src/context/ThemeContext.jsx"
click node_navbar "https://github.com/adityachy07/portfolio/blob/main/client/src/components/layout/Navbar.jsx"
click node_hero "https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Hero.jsx"
click node_about "https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/About.jsx"
click node_skills "https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Skills.jsx"
click node_projects "https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Projects.jsx"
click node_experience "https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Experience.jsx"
click node_contact_ui "https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Contact.jsx"
click node_footer "https://github.com/adityachy07/portfolio/blob/main/client/src/components/layout/Footer.jsx"
click node_scroll_ui "https://github.com/adityachy07/portfolio/blob/main/client/src/components/ui/ScrollToTop.jsx"
click node_server_start "https://github.com/adityachy07/portfolio/blob/main/server/server.js"
click node_db_config "https://github.com/adityachy07/portfolio/blob/main/server/config/db.js"
click node_express_app "https://github.com/adityachy07/portfolio/blob/main/server/app.js"
click node_contact_routes "https://github.com/adityachy07/portfolio/blob/main/server/routes/contactRoutes.js"
click node_contact_controller "https://github.com/adityachy07/portfolio/blob/main/server/controllers/contactController.js"
click node_contact_model "https://github.com/adityachy07/portfolio/blob/main/server/models/Contact.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_entry,node_app,node_theme,node_navbar,node_hero,node_about,node_skills,node_projects,node_experience,node_contact_ui,node_footer,node_scroll_ui toneBlue
class node_express_app,node_contact_routes,node_contact_controller,node_contact_model,node_mongo toneAmber
class node_server_start,node_db_config toneMint
class node_visitor toneIndigo
```

## Components

### Portfolio frontend

- [React entry](https://github.com/adityachy07/portfolio/blob/main/client/src/main.jsx): `client/src/main.jsx`
- [Portfolio app](https://github.com/adityachy07/portfolio/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Theme context](https://github.com/adityachy07/portfolio/blob/main/client/src/context/ThemeContext.jsx): `client/src/context/ThemeContext.jsx`
- [Navigation](https://github.com/adityachy07/portfolio/blob/main/client/src/components/layout/Navbar.jsx): `client/src/components/layout/Navbar.jsx`
- [Hero section](https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Hero.jsx): `client/src/components/sections/Hero.jsx`
- [About section](https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/About.jsx): `client/src/components/sections/About.jsx`
- [Skills section](https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Skills.jsx): `client/src/components/sections/Skills.jsx`
- [Projects section](https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Projects.jsx): `client/src/components/sections/Projects.jsx`
- [Experience section](https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Experience.jsx): `client/src/components/sections/Experience.jsx`
- [Contact section](https://github.com/adityachy07/portfolio/blob/main/client/src/components/sections/Contact.jsx): `client/src/components/sections/Contact.jsx`
- [Footer](https://github.com/adityachy07/portfolio/blob/main/client/src/components/layout/Footer.jsx): `client/src/components/layout/Footer.jsx`
- [Scroll controls](https://github.com/adityachy07/portfolio/blob/main/client/src/components/ui/ScrollToTop.jsx): `client/src/components/ui/ScrollToTop.jsx`

### Contact service

- [Express app](https://github.com/adityachy07/portfolio/blob/main/server/app.js): `server/app.js`
- [Contact route](https://github.com/adityachy07/portfolio/blob/main/server/routes/contactRoutes.js): `server/routes/contactRoutes.js`
- [Message handler](https://github.com/adityachy07/portfolio/blob/main/server/controllers/contactController.js): `server/controllers/contactController.js`
- [Contact model](https://github.com/adityachy07/portfolio/blob/main/server/models/Contact.js): `server/models/Contact.js`

### Application runtime

- [Server startup](https://github.com/adityachy07/portfolio/blob/main/server/server.js): `server/server.js`
- [Database connection](https://github.com/adityachy07/portfolio/blob/main/server/config/db.js): `server/config/db.js`

### Other components

- **Visitor**
- **MongoDB**

## Connections

- Visitor → React entry: opens portfolio
- React entry → Theme context: provides theme
- React entry → Portfolio app: renders
- Portfolio app → Navigation: renders
- Portfolio app → Hero section: renders
- Portfolio app → About section: renders
- Portfolio app → Skills section: renders
- Portfolio app → Projects section: renders
- Portfolio app → Experience section: renders
- Portfolio app → Contact section: renders
- Portfolio app → Footer: renders
- Portfolio app → Scroll controls: renders
- Server startup → Database connection: connects
- Server startup → Express app: starts
- Express app → Contact route: mounts
- Contact route → Message handler: dispatches
- Message handler → Contact model: creates record
- Message handler → MongoDB: checks and writes
- Database connection → MongoDB: connects
