# aditya2618/portfolio-app architecture

> Architecture diagram of the GitHub repository aditya2618/portfolio-app, 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/aditya2618/portfolio-app
- Repository: https://github.com/aditya2618/portfolio-app

## Overview

This is a Laravel portfolio application: visitors browse categorized projects and submit contact messages; administrators sign in to manage projects and review messages. Project administration also includes a GitHub repository sync. The graph follows the visible web routing, controller calls, model operations, and returned views. The sync command and several infrastructure details are present in the tree but were not sampled, so their runtime connections are not inferred.

Main entry points: [`app/Http/Controllers/Admin/ProjectController.php`](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Admin/ProjectController.php) (Project administration), [`routes/web.php`](https://github.com/aditya2618/portfolio-app/blob/main/routes/web.php) (Web routes), [`app/Http/Controllers/PortfolioController.php`](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/PortfolioController.php) (Portfolio pages), [`app/Http/Controllers/Admin/MessageController.php`](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Admin/MessageController.php) (Message administration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Public portfolio"]
  node_web_routes["Web routes<br/>[web.php]"]
  node_portfolio["Portfolio pages"]
  node_portfolio_view["Portfolio view<br/>[index.blade.php]"]
  node_contact_messages["Contact messages<br/>[Message.php]"]
end

subgraph group_admin["Admin workflows"]
  node_auth["Admin authentication<br/>[AuthController.php]"]
  node_admin_guard["Admin access guard"]
  node_project_admin["Project administration"]
  node_project_views["Project admin views<br/>[index.blade.php]"]
  node_dashboard_view["Admin dashboard"]
  node_message_admin["Message administration"]
  node_message_views["Message admin views<br/>[index.blade.php]"]
  node_login_view["Admin login view<br/>[login.blade.php]"]
end

subgraph group_domain["Domain models"]
  node_projects["Project records<br/>[Project.php]"]
  node_users["Admin user model<br/>[User.php]"]
end

subgraph group_ops["Application support"]
  node_base_controller["Base controller<br/>[Controller.php]"]
  node_github_sync["GitHub sync command"]
  node_user_factory["User factory<br/>[UserFactory.php]"]
  node_project_seeder["Project seeder<br/>[ProjectSeeder.php]"]
  node_app_provider["App service provider"]
  node_bootstrap["Laravel bootstrap<br/>[app.php]"]
  node_http_entry["HTTP entry point<br/>[index.php]"]
end

node_visitor(("Visitor"))

node_visitor -->|"sends requests"| node_http_entry
node_http_entry -->|"starts application"| node_bootstrap
node_bootstrap -->|"loads routes"| node_web_routes
node_web_routes -->|"routes requests"| node_portfolio
node_web_routes -->|"routes requests"| node_auth
node_web_routes -->|"routes requests"| node_project_admin
node_web_routes -->|"routes requests"| node_message_admin
node_web_routes -->|"protects routes"| node_admin_guard
node_portfolio -->|"queries"| node_projects
node_portfolio -->|"renders"| node_portfolio_view
node_portfolio -->|"creates message"| node_contact_messages
node_auth -->|"renders"| node_login_view
node_project_admin -->|"queries and saves"| node_projects
node_project_admin -->|"counts messages"| node_contact_messages
node_project_admin -->|"renders"| node_project_views
node_project_admin -->|"renders"| node_dashboard_view
node_project_admin -.->|"requests GitHub sync"| node_visitor
node_project_admin -.->|"sync capability"| node_github_sync
node_message_admin -->|"reads and updates"| node_contact_messages
node_message_admin -->|"renders"| node_message_views
node_user_factory -->|"creates test users"| node_users
node_project_seeder -->|"seeds records"| node_projects

click node_web_routes "https://github.com/aditya2618/portfolio-app/blob/main/routes/web.php"
click node_portfolio "https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/PortfolioController.php"
click node_portfolio_view "https://github.com/aditya2618/portfolio-app/blob/main/resources/views/portfolio/index.blade.php"
click node_contact_messages "https://github.com/aditya2618/portfolio-app/blob/main/app/Models/Message.php"
click node_auth "https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Admin/AuthController.php"
click node_admin_guard "https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Middleware/AdminMiddleware.php"
click node_project_admin "https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Admin/ProjectController.php"
click node_project_views "https://github.com/aditya2618/portfolio-app/blob/main/resources/views/admin/projects/index.blade.php"
click node_dashboard_view "https://github.com/aditya2618/portfolio-app/blob/main/resources/views/admin/dashboard.blade.php"
click node_message_admin "https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Admin/MessageController.php"
click node_message_views "https://github.com/aditya2618/portfolio-app/blob/main/resources/views/admin/messages/index.blade.php"
click node_login_view "https://github.com/aditya2618/portfolio-app/blob/main/resources/views/admin/login.blade.php"
click node_projects "https://github.com/aditya2618/portfolio-app/blob/main/app/Models/Project.php"
click node_users "https://github.com/aditya2618/portfolio-app/blob/main/app/Models/User.php"
click node_base_controller "https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Controller.php"
click node_github_sync "https://github.com/aditya2618/portfolio-app/blob/main/app/Console/Commands/SyncGithubProjects.php"
click node_user_factory "https://github.com/aditya2618/portfolio-app/blob/main/database/factories/UserFactory.php"
click node_project_seeder "https://github.com/aditya2618/portfolio-app/blob/main/database/seeders/ProjectSeeder.php"
click node_app_provider "https://github.com/aditya2618/portfolio-app/blob/main/app/Providers/AppServiceProvider.php"
click node_bootstrap "https://github.com/aditya2618/portfolio-app/blob/main/bootstrap/app.php"
click node_http_entry "https://github.com/aditya2618/portfolio-app/blob/main/public/index.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_web_routes,node_portfolio,node_portfolio_view,node_contact_messages toneBlue
class node_auth,node_admin_guard,node_project_admin,node_project_views,node_dashboard_view,node_message_admin,node_message_views,node_login_view toneAmber
class node_projects,node_users toneMint
class node_base_controller,node_github_sync,node_user_factory,node_project_seeder,node_app_provider,node_bootstrap,node_http_entry toneRose
class node_visitor toneIndigo
```

## Components

### Public portfolio

- [Web routes](https://github.com/aditya2618/portfolio-app/blob/main/routes/web.php): `routes/web.php`
- [Portfolio pages](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/PortfolioController.php): `app/Http/Controllers/PortfolioController.php`
- [Portfolio view](https://github.com/aditya2618/portfolio-app/blob/main/resources/views/portfolio/index.blade.php): `resources/views/portfolio/index.blade.php`
- [Contact messages](https://github.com/aditya2618/portfolio-app/blob/main/app/Models/Message.php): `app/Models/Message.php`

### Admin workflows

- [Admin authentication](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Admin/AuthController.php): `app/Http/Controllers/Admin/AuthController.php`
- [Admin access guard](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Middleware/AdminMiddleware.php): `app/Http/Middleware/AdminMiddleware.php`
- [Project administration](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Admin/ProjectController.php): `app/Http/Controllers/Admin/ProjectController.php`
- [Project admin views](https://github.com/aditya2618/portfolio-app/blob/main/resources/views/admin/projects/index.blade.php): `resources/views/admin/projects/index.blade.php`
- [Admin dashboard](https://github.com/aditya2618/portfolio-app/blob/main/resources/views/admin/dashboard.blade.php): `resources/views/admin/dashboard.blade.php`
- [Message administration](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Admin/MessageController.php): `app/Http/Controllers/Admin/MessageController.php`
- [Message admin views](https://github.com/aditya2618/portfolio-app/blob/main/resources/views/admin/messages/index.blade.php): `resources/views/admin/messages/index.blade.php`
- [Admin login view](https://github.com/aditya2618/portfolio-app/blob/main/resources/views/admin/login.blade.php): `resources/views/admin/login.blade.php`

### Domain models

- [Project records](https://github.com/aditya2618/portfolio-app/blob/main/app/Models/Project.php): `app/Models/Project.php`
- [Admin user model](https://github.com/aditya2618/portfolio-app/blob/main/app/Models/User.php): `app/Models/User.php`

### Application support

- [Base controller](https://github.com/aditya2618/portfolio-app/blob/main/app/Http/Controllers/Controller.php): `app/Http/Controllers/Controller.php`
- [GitHub sync command](https://github.com/aditya2618/portfolio-app/blob/main/app/Console/Commands/SyncGithubProjects.php): `app/Console/Commands/SyncGithubProjects.php`
- [User factory](https://github.com/aditya2618/portfolio-app/blob/main/database/factories/UserFactory.php): `database/factories/UserFactory.php`
- [Project seeder](https://github.com/aditya2618/portfolio-app/blob/main/database/seeders/ProjectSeeder.php): `database/seeders/ProjectSeeder.php`
- [App service provider](https://github.com/aditya2618/portfolio-app/blob/main/app/Providers/AppServiceProvider.php): `app/Providers/AppServiceProvider.php`
- [Laravel bootstrap](https://github.com/aditya2618/portfolio-app/blob/main/bootstrap/app.php): `bootstrap/app.php`
- [HTTP entry point](https://github.com/aditya2618/portfolio-app/blob/main/public/index.php): `public/index.php`

### Other components

- **Visitor**

## Connections

- Visitor → HTTP entry point: sends requests (evidence: `public/index.php`)
- HTTP entry point → Laravel bootstrap: starts application (evidence: `public/index.php`)
- Laravel bootstrap → Web routes: loads routes (evidence: `bootstrap/app.php`)
- Web routes → Portfolio pages: routes requests (evidence: `routes/web.php`)
- Web routes → Admin authentication: routes requests (evidence: `routes/web.php`)
- Web routes → Project administration: routes requests (evidence: `routes/web.php`)
- Web routes → Message administration: routes requests (evidence: `routes/web.php`)
- Web routes → Admin access guard: protects routes (evidence: `routes/web.php`)
- Portfolio pages → Project records: queries (evidence: `app/Http/Controllers/PortfolioController.php`)
- Portfolio pages → Portfolio view: renders (evidence: `app/Http/Controllers/PortfolioController.php`)
- Portfolio pages → Contact messages: creates message (evidence: `app/Http/Controllers/PortfolioController.php`)
- Admin authentication → Admin login view: renders (evidence: `app/Http/Controllers/Admin/AuthController.php`)
- Project administration → Project records: queries and saves (evidence: `app/Http/Controllers/Admin/ProjectController.php`)
- Project administration → Contact messages: counts messages (evidence: `app/Http/Controllers/Admin/ProjectController.php`)
- Project administration → Project admin views: renders (evidence: `app/Http/Controllers/Admin/ProjectController.php`)
- Project administration → Admin dashboard: renders (evidence: `app/Http/Controllers/Admin/ProjectController.php`)
- Project administration → Visitor: requests GitHub sync
- Project administration → GitHub sync command: sync capability
- Message administration → Contact messages: reads and updates (evidence: `app/Http/Controllers/Admin/MessageController.php`)
- Message administration → Message admin views: renders (evidence: `app/Http/Controllers/Admin/MessageController.php`)
- User factory → Admin user model: creates test users (evidence: `database/factories/UserFactory.php`)
- Project seeder → Project records: seeds records (evidence: `database/seeders/ProjectSeeder.php`)
