# purvathorat38-web/lando-norris-portfolio architecture

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

- Interactive diagram: https://gitdiagram.com/purvathorat38-web/lando-norris-portfolio
- Repository: https://github.com/purvathorat38-web/lando-norris-portfolio

## Overview

This is a Lando Norris portfolio and helmet-merchandise storefront. Visitors browse the portfolio or store, manage a local cart, and submit checkout orders; visitors can also send contact messages, subscribe, and have page views tracked. Administrators log in to review analytics, orders, activity, messages, and subscribers. The graph preserves these documented capabilities; unsampled page/API implementations are represented at their known paths, and their links rely on README documentation rather than inspected source.

Main entry points: [`backend/main.py`](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/main.py) (FastAPI Routes), [`frontend/src/App.jsx`](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/App.jsx) (App & Routing), [`frontend/src/components/Footer.jsx`](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/Footer.jsx) (Contact & Newsletter), [`frontend/src/pages/Store.jsx`](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Store.jsx) (Helmet Store)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Visitor Experience"]
  node_app["App &amp; Routing<br/>[App.jsx]"]
  node_home["Portfolio Landing<br/>[Home.jsx]"]
  node_webgl["WebGL Intro"]
  node_navbar["Site Navigation<br/>[Navbar.jsx]"]
  node_footer["Contact &amp; Newsletter<br/>[Footer.jsx]"]
end

subgraph group_commerce["Store &amp; Checkout"]
  node_store["Helmet Store<br/>[Store.jsx]"]
  node_cart["Cart Drawer<br/>[CartDrawer.jsx]"]
  node_checkout["Order Checkout<br/>[Checkout.jsx]"]
end

subgraph group_admin["Administration"]
  node_adminui["Admin Dashboard<br/>[Admin.jsx]"]
end

subgraph group_backend["API &amp; Domain"]
  node_api["FastAPI Routes<br/>[main.py]"]
  node_auth["JWT Authentication<br/>[auth.py]"]
  node_schemas["Request Schemas<br/>[schemas.py]"]
  node_models["Domain Models<br/>[models.py]"]
end

subgraph group_persistence["Persistence"]
  node_database["Database Setup<br/>[database.py]"]
  node_sqlite[("SQLite Database")]
end

node_visitor(("Site Visitor"))

node_visitor -->|"uses site"| node_app
node_app -->|"routes to"| node_home
node_app -->|"routes to"| node_store
node_app -->|"routes to"| node_checkout
node_app -->|"routes to"| node_adminui
node_app -->|"renders"| node_navbar
node_app -->|"renders"| node_footer
node_app -->|"renders"| node_cart
node_home -->|"loads lazily"| node_webgl
node_visitor -->|"browses products"| node_store
node_store -.->|"fetches products"| node_api
node_checkout -->|"submits orders"| node_api
node_app -->|"tracks page views"| node_api
node_footer -->|"submits newsletter"| node_api
node_visitor -.->|"sends inquiries"| node_footer
node_footer -.->|"submits contact"| node_api
node_adminui -.->|"manages records"| node_api
node_api -->|"checks identity"| node_auth
node_api -->|"validates payloads"| node_schemas
node_api -->|"queries records"| node_models
node_api -->|"opens sessions"| node_database
node_auth -->|"creates token data"| node_schemas
node_models -->|"uses ORM base"| node_database
node_database -->|"connects to"| node_sqlite

click node_app "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/App.jsx"
click node_home "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Home.jsx"
click node_webgl "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/WebGLBackground.jsx"
click node_navbar "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/Navbar.jsx"
click node_footer "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/Footer.jsx"
click node_store "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Store.jsx"
click node_cart "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/CartDrawer.jsx"
click node_checkout "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Checkout.jsx"
click node_adminui "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Admin.jsx"
click node_api "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/main.py"
click node_auth "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/auth.py"
click node_schemas "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/schemas.py"
click node_models "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/models.py"
click node_database "https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/database.py"

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_app,node_home,node_webgl,node_navbar,node_footer toneBlue
class node_store,node_cart,node_checkout toneAmber
class node_adminui toneMint
class node_api,node_auth,node_schemas,node_models toneRose
class node_database,node_sqlite,node_visitor toneIndigo
```

## Components

### Visitor Experience

- [App & Routing](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Portfolio Landing](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Home.jsx): `frontend/src/pages/Home.jsx`
- [WebGL Intro](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/WebGLBackground.jsx): `frontend/src/components/WebGLBackground.jsx`
- [Site Navigation](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/Navbar.jsx): `frontend/src/components/Navbar.jsx`
- [Contact & Newsletter](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/Footer.jsx): `frontend/src/components/Footer.jsx`

### Store & Checkout

- [Helmet Store](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Store.jsx): `frontend/src/pages/Store.jsx`
- [Cart Drawer](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/components/CartDrawer.jsx): `frontend/src/components/CartDrawer.jsx`
- [Order Checkout](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Checkout.jsx): `frontend/src/pages/Checkout.jsx`

### Administration

- [Admin Dashboard](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/frontend/src/pages/Admin.jsx): `frontend/src/pages/Admin.jsx`

### API & Domain

- [FastAPI Routes](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/main.py): `backend/main.py`
- [JWT Authentication](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/auth.py): `backend/auth.py`
- [Request Schemas](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/schemas.py): `backend/schemas.py`
- [Domain Models](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/models.py): `backend/models.py`

### Persistence

- [Database Setup](https://github.com/purvathorat38-web/lando-norris-portfolio/blob/main/backend/database.py): `backend/database.py`
- **SQLite Database**

### Other components

- **Site Visitor**

## Connections

- Site Visitor → App & Routing: uses site (evidence: `README.md`)
- App & Routing → Portfolio Landing: routes to (evidence: `frontend/src/App.jsx`)
- App & Routing → Helmet Store: routes to (evidence: `frontend/src/App.jsx`)
- App & Routing → Order Checkout: routes to (evidence: `frontend/src/App.jsx`)
- App & Routing → Admin Dashboard: routes to (evidence: `frontend/src/App.jsx`)
- App & Routing → Site Navigation: renders (evidence: `frontend/src/App.jsx`)
- App & Routing → Contact & Newsletter: renders (evidence: `frontend/src/App.jsx`)
- App & Routing → Cart Drawer: renders (evidence: `frontend/src/App.jsx`)
- Portfolio Landing → WebGL Intro: loads lazily (evidence: `frontend/src/pages/Home.jsx`)
- Site Visitor → Helmet Store: browses products (evidence: `README.md`)
- Helmet Store → FastAPI Routes: fetches products (evidence: `README.md`)
- Order Checkout → FastAPI Routes: submits orders (evidence: `frontend/src/pages/Checkout.jsx`)
- App & Routing → FastAPI Routes: tracks page views (evidence: `frontend/src/App.jsx`)
- Contact & Newsletter → FastAPI Routes: submits newsletter (evidence: `frontend/src/components/Footer.jsx`)
- Site Visitor → Contact & Newsletter: sends inquiries (evidence: `README.md`)
- Contact & Newsletter → FastAPI Routes: submits contact (evidence: `README.md`)
- Admin Dashboard → FastAPI Routes: manages records (evidence: `README.md`)
- FastAPI Routes → JWT Authentication: checks identity (evidence: `backend/main.py`)
- FastAPI Routes → Request Schemas: validates payloads (evidence: `backend/main.py`)
- FastAPI Routes → Domain Models: queries records (evidence: `backend/main.py`)
- FastAPI Routes → Database Setup: opens sessions (evidence: `backend/main.py`)
- JWT Authentication → Request Schemas: creates token data (evidence: `backend/auth.py`)
- Domain Models → Database Setup: uses ORM base (evidence: `backend/models.py`)
- Database Setup → SQLite Database: connects to (evidence: `backend/database.py`)
