# jakeberggren/udemy-complete-react-developer architecture

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

- Interactive diagram: https://gitdiagram.com/jakeberggren/udemy-complete-react-developer
- Repository: https://github.com/jakeberggren/udemy-complete-react-developer

## Overview

The repository contains two React products. Monsters Rolodex fetches user records, filters them by a search term, and displays matching cards. Crwn Clothing is an e-commerce storefront with home, shop, authentication, and checkout routes; its documented capabilities include Firebase-backed accounts and Google sign-in. The graph shows only call and data-flow relationships supported by sampled source or the README. Several storefront component connections and Firebase internals are not sampled, so those links are left out.

Main entry points: [`crwn-clothing/src/App.js`](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/App.js) (Route selection), [`monsters-rolodex/src/App.js`](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/App.js) (Fetch and filter), [`crwn-clothing/src/utils/firebase/firebase.utils.js`](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/utils/firebase/firebase.utils.js) (Firebase operations), [`crwn-clothing/src/routes/authentication/authentication.component.jsx`](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/authentication/authentication.component.jsx) (Authentication page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_rolodex["Monsters Rolodex"]
  node_rolodex_entry["Rolodex entry<br/>[index.js]"]
  node_rolodex_app["Fetch and filter<br/>[App.js]"]
  node_search_box["Search box"]
  node_card_list["Monster cards"]
  node_user_api[("JSONPlaceholder users")]
end

subgraph group_storefront["Storefront"]
  node_clothing_entry["Storefront entry<br/>[index.js]"]
  node_store_app["Route selection<br/>[App.js]"]
  node_navigation["Navigation route"]
  node_home["Home page<br/>[home.component.jsx]"]
  node_shop["Shop page<br/>[shop.component.jsx]"]
  node_category["Category directory"]
  node_category_item["Category item"]
  node_product_card["Product card"]
end

subgraph group_identity["Authentication"]
  node_authentication["Authentication page"]
  node_sign_in["Sign-in form"]
  node_sign_up["Sign-up form"]
  node_user_state["User state<br/>[user.context.jsx]"]
end

subgraph group_commerce["Commerce State"]
  node_products_state["Products state"]
  node_shop_data["Shop data<br/>[shop-data.json]"]
  node_cart_state["Cart state<br/>[cart.context.jsx]"]
  node_cart_icon["Cart icon"]
  node_cart_dropdown["Cart dropdown"]
  node_cart_item["Cart item"]
  node_checkout["Checkout page"]
  node_checkout_item["Checkout item"]
end

subgraph group_backend["Firebase Backend"]
  node_firebase_utils["Firebase operations<br/>[firebase.utils.js]"]
  node_firebase[("Firebase")]
end

node_visitor(("Shopper / visitor"))

node_visitor -->|"opens"| node_rolodex_entry
node_rolodex_entry -->|"renders"| node_rolodex_app
node_rolodex_app -->|"fetches users"| node_user_api
node_rolodex_app -->|"renders"| node_search_box
node_search_box -->|"search input"| node_rolodex_app
node_rolodex_app -->|"passes filtered data"| node_card_list
node_visitor -->|"opens"| node_clothing_entry
node_clothing_entry -->|"renders"| node_store_app
node_store_app -->|"routes through"| node_navigation
node_store_app -->|"routes to"| node_home
node_store_app -->|"routes to"| node_shop
node_store_app -->|"routes to"| node_authentication
node_store_app -->|"routes to"| node_checkout
node_authentication -->|"renders"| node_sign_in
node_authentication -->|"renders"| node_sign_up
node_products_state -->|"loads products"| node_shop_data
node_sign_in -->|"requests sign-in"| node_firebase_utils
node_sign_up -->|"creates account"| node_firebase_utils
node_user_state -->|"subscribes to auth"| node_firebase_utils
node_user_state -->|"creates user record"| node_firebase_utils
node_firebase_utils -->|"uses Firebase"| node_firebase

click node_rolodex_entry "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/index.js"
click node_rolodex_app "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/App.js"
click node_search_box "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/components/search-box/search-box.component.jsx"
click node_card_list "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/components/card-list/card-list.component.jsx"
click node_clothing_entry "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/index.js"
click node_store_app "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/App.js"
click node_navigation "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/navigation/navigation.component.jsx"
click node_home "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/home/home.component.jsx"
click node_shop "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/shop/shop.component.jsx"
click node_category "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/directory/directory.component.jsx"
click node_category_item "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/category-item/category-item.component.jsx"
click node_product_card "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/product-card/product-card.component.jsx"
click node_products_state "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/contexts/products.context.jsx"
click node_shop_data "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/shop-data.json"
click node_cart_state "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/contexts/cart.context.jsx"
click node_cart_icon "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/cart-icon/cart-icon.component.jsx"
click node_cart_dropdown "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/cart-dropdown/cart-dropdown.component.jsx"
click node_cart_item "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/cart-item/cart-item.component.jsx"
click node_checkout "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/checkout/checkout.component.jsx"
click node_checkout_item "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/checkout-item/checkout-item.component.jsx"
click node_authentication "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/authentication/authentication.component.jsx"
click node_sign_in "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/sign-in-form/sign-in-form.component.jsx"
click node_sign_up "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/sign-up-form/sign-up-form.component.jsx"
click node_user_state "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/contexts/user.context.jsx"
click node_firebase_utils "https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/utils/firebase/firebase.utils.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_rolodex_entry,node_rolodex_app,node_search_box,node_card_list,node_user_api toneBlue
class node_clothing_entry,node_store_app,node_navigation,node_home,node_shop,node_category,node_category_item,node_product_card toneAmber
class node_authentication,node_sign_in,node_sign_up,node_user_state toneMint
class node_products_state,node_shop_data,node_cart_state,node_cart_icon,node_cart_dropdown,node_cart_item,node_checkout,node_checkout_item toneRose
class node_firebase_utils,node_firebase,node_visitor toneIndigo
```

## Components

### Monsters Rolodex

- [Rolodex entry](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/index.js): `monsters-rolodex/src/index.js`
- [Fetch and filter](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/App.js): `monsters-rolodex/src/App.js`
- [Search box](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/components/search-box/search-box.component.jsx): `monsters-rolodex/src/components/search-box/search-box.component.jsx`
- [Monster cards](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/monsters-rolodex/src/components/card-list/card-list.component.jsx): `monsters-rolodex/src/components/card-list/card-list.component.jsx`
- **JSONPlaceholder users**

### Storefront

- [Storefront entry](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/index.js): `crwn-clothing/src/index.js`
- [Route selection](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/App.js): `crwn-clothing/src/App.js`
- [Navigation route](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/navigation/navigation.component.jsx): `crwn-clothing/src/routes/navigation/navigation.component.jsx`
- [Home page](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/home/home.component.jsx): `crwn-clothing/src/routes/home/home.component.jsx`
- [Shop page](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/shop/shop.component.jsx): `crwn-clothing/src/routes/shop/shop.component.jsx`
- [Category directory](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/directory/directory.component.jsx): `crwn-clothing/src/components/directory/directory.component.jsx`
- [Category item](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/category-item/category-item.component.jsx): `crwn-clothing/src/components/category-item/category-item.component.jsx`
- [Product card](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/product-card/product-card.component.jsx): `crwn-clothing/src/components/product-card/product-card.component.jsx`

### Authentication

- [Authentication page](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/authentication/authentication.component.jsx): `crwn-clothing/src/routes/authentication/authentication.component.jsx`
- [Sign-in form](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/sign-in-form/sign-in-form.component.jsx): `crwn-clothing/src/components/sign-in-form/sign-in-form.component.jsx`
- [Sign-up form](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/sign-up-form/sign-up-form.component.jsx): `crwn-clothing/src/components/sign-up-form/sign-up-form.component.jsx`
- [User state](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/contexts/user.context.jsx): `crwn-clothing/src/contexts/user.context.jsx`

### Commerce State

- [Products state](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/contexts/products.context.jsx): `crwn-clothing/src/contexts/products.context.jsx`
- [Shop data](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/shop-data.json): `crwn-clothing/src/shop-data.json`
- [Cart state](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/contexts/cart.context.jsx): `crwn-clothing/src/contexts/cart.context.jsx`
- [Cart icon](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/cart-icon/cart-icon.component.jsx): `crwn-clothing/src/components/cart-icon/cart-icon.component.jsx`
- [Cart dropdown](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/cart-dropdown/cart-dropdown.component.jsx): `crwn-clothing/src/components/cart-dropdown/cart-dropdown.component.jsx`
- [Cart item](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/cart-item/cart-item.component.jsx): `crwn-clothing/src/components/cart-item/cart-item.component.jsx`
- [Checkout page](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/routes/checkout/checkout.component.jsx): `crwn-clothing/src/routes/checkout/checkout.component.jsx`
- [Checkout item](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/components/checkout-item/checkout-item.component.jsx): `crwn-clothing/src/components/checkout-item/checkout-item.component.jsx`

### Firebase Backend

- [Firebase operations](https://github.com/jakeberggren/udemy-complete-react-developer/blob/main/crwn-clothing/src/utils/firebase/firebase.utils.js): `crwn-clothing/src/utils/firebase/firebase.utils.js`
- **Firebase**

### Other components

- **Shopper / visitor**

## Connections

- Shopper / visitor → Rolodex entry: opens
- Rolodex entry → Fetch and filter: renders
- Fetch and filter → JSONPlaceholder users: fetches users
- Fetch and filter → Search box: renders
- Search box → Fetch and filter: search input
- Fetch and filter → Monster cards: passes filtered data
- Shopper / visitor → Storefront entry: opens
- Storefront entry → Route selection: renders
- Route selection → Navigation route: routes through
- Route selection → Home page: routes to
- Route selection → Shop page: routes to
- Route selection → Authentication page: routes to
- Route selection → Checkout page: routes to
- Authentication page → Sign-in form: renders
- Authentication page → Sign-up form: renders
- Products state → Shop data: loads products
- Sign-in form → Firebase operations: requests sign-in
- Sign-up form → Firebase operations: creates account
- User state → Firebase operations: subscribes to auth
- User state → Firebase operations: creates user record
- Firebase operations → Firebase: uses Firebase
