# diptaaaa/portfolio-website architecture

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

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

## Overview

This is a Laravel–Inertia portfolio site with an integrated admin CMS. Visitors browse portfolio content rendered through the React pages; administrators authenticate, edit portfolio records and media, and save changes for later display. The graph preserves the documented project, skills/certifications, education, experience, and site-configuration capabilities. Controller samples confirm project, experience, and skill persistence and Inertia rendering; public-route wiring and several other controllers were not sampled, so those links are limited to the documented application flow.

Main entry points: [`routes/web.php`](https://github.com/diptaaaa/portfolio-website/blob/main/routes/web.php) (Web routes), [`resources/js/Pages/Admin`](https://github.com/diptaaaa/portfolio-website/tree/main/resources/js/Pages/Admin) (CMS pages), [`app/Http/Controllers/AdminProjectController.php`](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminProjectController.php) (Project management), [`app/Http/Controllers/AdminExperienceController.php`](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminExperienceController.php) (Experience management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Portfolio experience"]
  node_public_pages["Public pages"]
  node_portfolio_layout["Portfolio layout"]
end

subgraph group_cms["Admin CMS"]
  node_admin_pages["CMS pages"]
  node_admin_layout["Admin layout<br/>[AdminLayout.jsx]"]
  node_project_admin["Project management"]
  node_experience_admin["Experience management"]
  node_skill_admin["Skills and certificates"]
  node_config_admin["Site configuration"]
  node_education_admin["Education management"]
  node_user_admin["User management"]
end

subgraph group_backend["Laravel application"]
  node_web_routes["Web routes<br/>[web.php]"]
  node_auth_routes["Auth routes<br/>[auth.php]"]
  node_inertia_boot["Inertia client<br/>[app.jsx]"]
  node_blade_shell["App shell<br/>[app.blade.php]"]
  node_auth["Authentication"]
  node_inertia_middleware["Inertia middleware"]
  node_media_helper["Media URL helper<br/>[MediaHelper.php]"]
end

subgraph group_data["Portfolio data"]
  node_project_model[("Projects<br/>[Project.php]")]
  node_experience_model[("Experiences<br/>[Experience.php]")]
  node_skill_model[("Skills<br/>[Skill.php]")]
  node_cert_model[("Certifications<br/>[Certification.php]")]
  node_education_model[("Education<br/>[Education.php]")]
  node_setting_model[("Portfolio settings")]
  node_experience_data[("Experience records<br/>[Experience.php]")]
end

node_visitor(("Visitor"))
node_admin(("Administrator"))
node_database[("Relational database")]

node_visitor -->|"requests pages"| node_web_routes
node_web_routes -->|"serves portfolio"| node_public_pages
node_public_pages -->|"uses layout"| node_portfolio_layout
node_blade_shell -->|"mounts client"| node_inertia_boot
node_inertia_boot -->|"resolves pages"| node_public_pages
node_web_routes -->|"dispatches admin"| node_project_admin
node_web_routes -->|"dispatches admin"| node_experience_admin
node_web_routes -->|"dispatches admin"| node_skill_admin
node_web_routes -->|"dispatches admin"| node_config_admin
node_web_routes -->|"dispatches admin"| node_education_admin
node_web_routes -->|"dispatches admin"| node_user_admin
node_admin -->|"manages content"| node_web_routes
node_admin_pages -->|"uses layout"| node_admin_layout
node_admin_layout -->|"hosts pages"| node_admin_pages
node_project_admin -->|"reads and writes"| node_project_model
node_experience_admin -->|"reads and writes"| node_experience_model
node_skill_admin -->|"reads and writes"| node_skill_model
node_skill_admin -->|"reads and writes"| node_cert_model
node_project_admin -->|"renders projects"| node_admin_pages
node_experience_admin -->|"renders experience"| node_admin_pages
node_skill_admin -->|"renders skills"| node_admin_pages
node_auth_routes -->|"dispatches auth"| node_auth
node_admin -->|"authenticates"| node_auth_routes
node_auth -->|"redirects after login"| node_admin_pages
node_web_routes -->|"passes web requests"| node_inertia_middleware
node_project_model -->|"persists records"| node_database
node_experience_model -->|"persists records"| node_database
node_skill_model -->|"persists records"| node_database
node_cert_model -->|"persists records"| node_database
node_education_model -->|"persists records"| node_database
node_setting_model -->|"persists settings"| node_database
node_experience_admin -->|"formats image URLs"| node_media_helper
node_project_admin -->|"formats image URLs"| node_media_helper

click node_web_routes "https://github.com/diptaaaa/portfolio-website/blob/main/routes/web.php"
click node_auth_routes "https://github.com/diptaaaa/portfolio-website/blob/main/routes/auth.php"
click node_public_pages "https://github.com/diptaaaa/portfolio-website/tree/main/resources/js/Pages"
click node_portfolio_layout "https://github.com/diptaaaa/portfolio-website/blob/main/resources/js/Layouts/PortfolioLayout.jsx"
click node_inertia_boot "https://github.com/diptaaaa/portfolio-website/blob/main/resources/js/app.jsx"
click node_blade_shell "https://github.com/diptaaaa/portfolio-website/blob/main/resources/views/app.blade.php"
click node_admin_pages "https://github.com/diptaaaa/portfolio-website/tree/main/resources/js/Pages/Admin"
click node_admin_layout "https://github.com/diptaaaa/portfolio-website/blob/main/resources/js/Layouts/AdminLayout.jsx"
click node_project_admin "https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminProjectController.php"
click node_experience_admin "https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminExperienceController.php"
click node_skill_admin "https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminSkillController.php"
click node_config_admin "https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminConfigController.php"
click node_education_admin "https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminEducationController.php"
click node_user_admin "https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminUserController.php"
click node_auth "https://github.com/diptaaaa/portfolio-website/tree/main/app/Http/Controllers/Auth"
click node_inertia_middleware "https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Middleware/HandleInertiaRequests.php"
click node_project_model "https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Project.php"
click node_experience_model "https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Experience.php"
click node_skill_model "https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Skill.php"
click node_cert_model "https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Certification.php"
click node_education_model "https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Education.php"
click node_setting_model "https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/PortfolioSetting.php"
click node_experience_data "https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Experience.php"
click node_media_helper "https://github.com/diptaaaa/portfolio-website/blob/main/app/Helpers/MediaHelper.php"

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_pages,node_portfolio_layout toneBlue
class node_admin_pages,node_admin_layout,node_project_admin,node_experience_admin,node_skill_admin,node_config_admin,node_education_admin,node_user_admin,node_database toneAmber
class node_web_routes,node_auth_routes,node_inertia_boot,node_blade_shell,node_auth,node_inertia_middleware,node_media_helper toneMint
class node_project_model,node_experience_model,node_skill_model,node_cert_model,node_education_model,node_setting_model,node_experience_data toneRose
class node_visitor,node_admin toneIndigo
```

## Components

### Portfolio experience

- [Public pages](https://github.com/diptaaaa/portfolio-website/tree/main/resources/js/Pages): `resources/js/Pages`
- [Portfolio layout](https://github.com/diptaaaa/portfolio-website/blob/main/resources/js/Layouts/PortfolioLayout.jsx): `resources/js/Layouts/PortfolioLayout.jsx`

### Admin CMS

- [CMS pages](https://github.com/diptaaaa/portfolio-website/tree/main/resources/js/Pages/Admin): `resources/js/Pages/Admin`
- [Admin layout](https://github.com/diptaaaa/portfolio-website/blob/main/resources/js/Layouts/AdminLayout.jsx): `resources/js/Layouts/AdminLayout.jsx`
- [Project management](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminProjectController.php): `app/Http/Controllers/AdminProjectController.php`
- [Experience management](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminExperienceController.php): `app/Http/Controllers/AdminExperienceController.php`
- [Skills and certificates](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminSkillController.php): `app/Http/Controllers/AdminSkillController.php`
- [Site configuration](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminConfigController.php): `app/Http/Controllers/AdminConfigController.php`
- [Education management](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminEducationController.php): `app/Http/Controllers/AdminEducationController.php`
- [User management](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Controllers/AdminUserController.php): `app/Http/Controllers/AdminUserController.php`

### Laravel application

- [Web routes](https://github.com/diptaaaa/portfolio-website/blob/main/routes/web.php): `routes/web.php`
- [Auth routes](https://github.com/diptaaaa/portfolio-website/blob/main/routes/auth.php): `routes/auth.php`
- [Inertia client](https://github.com/diptaaaa/portfolio-website/blob/main/resources/js/app.jsx): `resources/js/app.jsx`
- [App shell](https://github.com/diptaaaa/portfolio-website/blob/main/resources/views/app.blade.php): `resources/views/app.blade.php`
- [Authentication](https://github.com/diptaaaa/portfolio-website/tree/main/app/Http/Controllers/Auth): `app/Http/Controllers/Auth`
- [Inertia middleware](https://github.com/diptaaaa/portfolio-website/blob/main/app/Http/Middleware/HandleInertiaRequests.php): `app/Http/Middleware/HandleInertiaRequests.php`
- [Media URL helper](https://github.com/diptaaaa/portfolio-website/blob/main/app/Helpers/MediaHelper.php): `app/Helpers/MediaHelper.php`

### Portfolio data

- [Projects](https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Project.php): `app/Models/Project.php`
- [Experiences](https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Experience.php): `app/Models/Experience.php`
- [Skills](https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Skill.php): `app/Models/Skill.php`
- [Certifications](https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Certification.php): `app/Models/Certification.php`
- [Education](https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Education.php): `app/Models/Education.php`
- [Portfolio settings](https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/PortfolioSetting.php): `app/Models/PortfolioSetting.php`
- [Experience records](https://github.com/diptaaaa/portfolio-website/blob/main/app/Models/Experience.php): `app/Models/Experience.php`

### Other components

- **Visitor**
- **Administrator**
- **Relational database**

## Connections

- Visitor → Web routes: requests pages
- Web routes → Public pages: serves portfolio
- Public pages → Portfolio layout: uses layout
- App shell → Inertia client: mounts client
- Inertia client → Public pages: resolves pages
- Web routes → Project management: dispatches admin
- Web routes → Experience management: dispatches admin
- Web routes → Skills and certificates: dispatches admin
- Web routes → Site configuration: dispatches admin
- Web routes → Education management: dispatches admin
- Web routes → User management: dispatches admin
- Administrator → Web routes: manages content
- CMS pages → Admin layout: uses layout
- Admin layout → CMS pages: hosts pages
- Project management → Projects: reads and writes
- Experience management → Experiences: reads and writes
- Skills and certificates → Skills: reads and writes
- Skills and certificates → Certifications: reads and writes
- Project management → CMS pages: renders projects
- Experience management → CMS pages: renders experience
- Skills and certificates → CMS pages: renders skills
- Auth routes → Authentication: dispatches auth
- Administrator → Auth routes: authenticates
- Authentication → CMS pages: redirects after login
- Web routes → Inertia middleware: passes web requests
- Projects → Relational database: persists records
- Experiences → Relational database: persists records
- Skills → Relational database: persists records
- Certifications → Relational database: persists records
- Education → Relational database: persists records
- Portfolio settings → Relational database: persists settings
- Experience management → Media URL helper: formats image URLs
- Project management → Media URL helper: formats image URLs
