# dsanchos/internet-service architecture

> Architecture diagram of the GitHub repository dsanchos/internet-service, 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/dsanchos/internet-service
- Repository: https://github.com/dsanchos/internet-service

## Overview

This is a React storefront for browsing internet-provider products, adding them to a cart, and submitting an application, with an admin area for creating products and viewing applications. The graph follows the routes and workflows evidenced in sampled source; several feature API modules and shared app wiring are represented by their exact tree paths, but their internal calls were not sampled.

Main entry points: [`src/app/routes/routes.jsx`](https://github.com/dsanchos/internet-service/blob/main/src/app/routes/routes.jsx) (Route dispatcher), [`src/shared/api/api.js`](https://github.com/dsanchos/internet-service/blob/main/src/shared/api/api.js) (API client), [`src/pages/cart/ui/CartPage.jsx`](https://github.com/dsanchos/internet-service/blob/main/src/pages/cart/ui/CartPage.jsx) (Cart and checkout), [`src/pages/cart/api/index.js`](https://github.com/dsanchos/internet-service/blob/main/src/pages/cart/api/index.js) (Cart API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["App shell"]
  node_entry["App entry<br/>[index.jsx]"]
  node_providers["App providers"]
  node_router["Route dispatcher<br/>[routes.jsx]"]
  node_layout["Store layout<br/>[Layout.jsx]"]
end

subgraph group_shop["Storefront"]
  node_home["Home page<br/>[Home.jsx]"]
  node_catalog["Catalog<br/>[Catalog.jsx]"]
  node_product["Product details<br/>[ProductPage.jsx]"]
  node_cart["Cart and checkout<br/>[CartPage.jsx]"]
  node_auth["Account access<br/>[SignIn.jsx]"]
  node_signup["Registration<br/>[SignUp.jsx]"]
  node_about["About page<br/>[About.jsx]"]
  node_catalogapi["Catalog API<br/>[index.js]"]
  node_productapi["Product API<br/>[index.js]"]
  node_cartapi["Cart API<br/>[index.js]"]
end

subgraph group_admin["Administration"]
  node_adminlayout["Admin layout<br/>[AdminLayout.jsx]"]
  node_create["Create product<br/>[CreateProduct.jsx]"]
  node_createapi["Product admin API<br/>[index.js]"]
  node_applications["Applications list<br/>[Applications.jsx]"]
  node_applicationsapi["Applications API<br/>[index.js]"]
end

subgraph group_shared["Shared services"]
  node_api["API client<br/>[api.js]"]
  node_basequery["Base query<br/>[query.js]"]
  node_token["Token storage<br/>[TokenService.js]"]
end

node_customer(("Customer"))
node_administrator(("Administrator"))
node_backend(("API server"))

node_customer -->|"opens app"| node_entry
node_administrator -->|"opens app"| node_entry
node_entry -->|"renders"| node_providers
node_providers -->|"provides routes"| node_router
node_router -->|"routes storefront"| node_layout
node_router -->|"routes admin"| node_adminlayout
node_router -->|"dispatches"| node_home
node_router -->|"dispatches"| node_catalog
node_router -->|"dispatches"| node_product
node_router -->|"dispatches"| node_cart
node_router -->|"dispatches"| node_auth
node_router -->|"dispatches"| node_signup
node_router -->|"dispatches"| node_about
node_router -->|"dispatches"| node_create
node_router -->|"dispatches"| node_applications
node_catalog -->|"loads catalog"| node_catalogapi
node_product -->|"loads product"| node_productapi
node_product -->|"adds to cart"| node_productapi
node_cart -->|"loads cart"| node_cartapi
node_cart -->|"submits application"| node_cartapi
node_cart -->|"clears cart"| node_cartapi
node_create -->|"creates product"| node_createapi
node_applications -->|"loads applications"| node_applicationsapi
node_catalogapi -->|"uses client"| node_api
node_productapi -->|"uses client"| node_api
node_cartapi -->|"uses client"| node_api
node_createapi -->|"uses client"| node_api
node_applicationsapi -->|"uses client"| node_api
node_api -->|"queries through"| node_basequery
node_basequery -->|"reads token"| node_token
node_basequery -->|"sends requests"| node_backend

click node_entry "https://github.com/dsanchos/internet-service/blob/main/src/app/index.jsx"
click node_providers "https://github.com/dsanchos/internet-service/blob/main/src/app/routes/CombinedProviders.jsx"
click node_router "https://github.com/dsanchos/internet-service/blob/main/src/app/routes/routes.jsx"
click node_layout "https://github.com/dsanchos/internet-service/blob/main/src/app/layouts/Layout.jsx"
click node_adminlayout "https://github.com/dsanchos/internet-service/blob/main/src/app/layouts/AdminLayout.jsx"
click node_home "https://github.com/dsanchos/internet-service/blob/main/src/pages/home/ui/Home.jsx"
click node_catalog "https://github.com/dsanchos/internet-service/blob/main/src/pages/catalog/ui/Catalog.jsx"
click node_product "https://github.com/dsanchos/internet-service/blob/main/src/pages/product-page/ui/ProductPage.jsx"
click node_cart "https://github.com/dsanchos/internet-service/blob/main/src/pages/cart/ui/CartPage.jsx"
click node_auth "https://github.com/dsanchos/internet-service/blob/main/src/pages/sign-in/ui/SignIn.jsx"
click node_signup "https://github.com/dsanchos/internet-service/blob/main/src/pages/sign-up/ui/SignUp.jsx"
click node_about "https://github.com/dsanchos/internet-service/blob/main/src/pages/about/ui/About.jsx"
click node_catalogapi "https://github.com/dsanchos/internet-service/blob/main/src/pages/catalog/api/index.js"
click node_productapi "https://github.com/dsanchos/internet-service/blob/main/src/pages/product-page/api/index.js"
click node_cartapi "https://github.com/dsanchos/internet-service/blob/main/src/pages/cart/api/index.js"
click node_create "https://github.com/dsanchos/internet-service/blob/main/src/pages/create-product/ui/CreateProduct.jsx"
click node_createapi "https://github.com/dsanchos/internet-service/blob/main/src/pages/create-product/api/index.js"
click node_applications "https://github.com/dsanchos/internet-service/blob/main/src/pages/applications/ui/Applications.jsx"
click node_applicationsapi "https://github.com/dsanchos/internet-service/blob/main/src/pages/applications/api/index.js"
click node_api "https://github.com/dsanchos/internet-service/blob/main/src/shared/api/api.js"
click node_basequery "https://github.com/dsanchos/internet-service/blob/main/src/shared/api/query.js"
click node_token "https://github.com/dsanchos/internet-service/blob/main/src/shared/model/TokenService.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_entry,node_providers,node_router,node_layout toneBlue
class node_home,node_catalog,node_product,node_cart,node_auth,node_signup,node_about,node_catalogapi,node_productapi,node_cartapi toneAmber
class node_adminlayout,node_create,node_createapi,node_applications,node_applicationsapi,node_backend toneMint
class node_api,node_basequery,node_token toneRose
class node_customer,node_administrator toneIndigo
```

## Components

### App shell

- [App entry](https://github.com/dsanchos/internet-service/blob/main/src/app/index.jsx): `src/app/index.jsx`
- [App providers](https://github.com/dsanchos/internet-service/blob/main/src/app/routes/CombinedProviders.jsx): `src/app/routes/CombinedProviders.jsx`
- [Route dispatcher](https://github.com/dsanchos/internet-service/blob/main/src/app/routes/routes.jsx): `src/app/routes/routes.jsx`
- [Store layout](https://github.com/dsanchos/internet-service/blob/main/src/app/layouts/Layout.jsx): `src/app/layouts/Layout.jsx`

### Storefront

- [Home page](https://github.com/dsanchos/internet-service/blob/main/src/pages/home/ui/Home.jsx): `src/pages/home/ui/Home.jsx`
- [Catalog](https://github.com/dsanchos/internet-service/blob/main/src/pages/catalog/ui/Catalog.jsx): `src/pages/catalog/ui/Catalog.jsx`
- [Product details](https://github.com/dsanchos/internet-service/blob/main/src/pages/product-page/ui/ProductPage.jsx): `src/pages/product-page/ui/ProductPage.jsx`
- [Cart and checkout](https://github.com/dsanchos/internet-service/blob/main/src/pages/cart/ui/CartPage.jsx): `src/pages/cart/ui/CartPage.jsx`
- [Account access](https://github.com/dsanchos/internet-service/blob/main/src/pages/sign-in/ui/SignIn.jsx): `src/pages/sign-in/ui/SignIn.jsx`
- [Registration](https://github.com/dsanchos/internet-service/blob/main/src/pages/sign-up/ui/SignUp.jsx): `src/pages/sign-up/ui/SignUp.jsx`
- [About page](https://github.com/dsanchos/internet-service/blob/main/src/pages/about/ui/About.jsx): `src/pages/about/ui/About.jsx`
- [Catalog API](https://github.com/dsanchos/internet-service/blob/main/src/pages/catalog/api/index.js): `src/pages/catalog/api/index.js`
- [Product API](https://github.com/dsanchos/internet-service/blob/main/src/pages/product-page/api/index.js): `src/pages/product-page/api/index.js`
- [Cart API](https://github.com/dsanchos/internet-service/blob/main/src/pages/cart/api/index.js): `src/pages/cart/api/index.js`

### Administration

- [Admin layout](https://github.com/dsanchos/internet-service/blob/main/src/app/layouts/AdminLayout.jsx): `src/app/layouts/AdminLayout.jsx`
- [Create product](https://github.com/dsanchos/internet-service/blob/main/src/pages/create-product/ui/CreateProduct.jsx): `src/pages/create-product/ui/CreateProduct.jsx`
- [Product admin API](https://github.com/dsanchos/internet-service/blob/main/src/pages/create-product/api/index.js): `src/pages/create-product/api/index.js`
- [Applications list](https://github.com/dsanchos/internet-service/blob/main/src/pages/applications/ui/Applications.jsx): `src/pages/applications/ui/Applications.jsx`
- [Applications API](https://github.com/dsanchos/internet-service/blob/main/src/pages/applications/api/index.js): `src/pages/applications/api/index.js`

### Shared services

- [API client](https://github.com/dsanchos/internet-service/blob/main/src/shared/api/api.js): `src/shared/api/api.js`
- [Base query](https://github.com/dsanchos/internet-service/blob/main/src/shared/api/query.js): `src/shared/api/query.js`
- [Token storage](https://github.com/dsanchos/internet-service/blob/main/src/shared/model/TokenService.js): `src/shared/model/TokenService.js`

### Other components

- **Customer**
- **Administrator**
- **API server**

## Connections

- Customer → App entry: opens app
- Administrator → App entry: opens app
- App entry → App providers: renders
- App providers → Route dispatcher: provides routes
- Route dispatcher → Store layout: routes storefront
- Route dispatcher → Admin layout: routes admin
- Route dispatcher → Home page: dispatches
- Route dispatcher → Catalog: dispatches
- Route dispatcher → Product details: dispatches
- Route dispatcher → Cart and checkout: dispatches
- Route dispatcher → Account access: dispatches
- Route dispatcher → Registration: dispatches
- Route dispatcher → About page: dispatches
- Route dispatcher → Create product: dispatches
- Route dispatcher → Applications list: dispatches
- Catalog → Catalog API: loads catalog
- Product details → Product API: loads product
- Product details → Product API: adds to cart
- Cart and checkout → Cart API: loads cart
- Cart and checkout → Cart API: submits application
- Cart and checkout → Cart API: clears cart
- Create product → Product admin API: creates product
- Applications list → Applications API: loads applications
- Catalog API → API client: uses client
- Product API → API client: uses client
- Cart API → API client: uses client
- Product admin API → API client: uses client
- Applications API → API client: uses client
- API client → Base query: queries through
- Base query → Token storage: reads token
- Base query → API server: sends requests
