# nawmee02/nawmeessences architecture

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

- Interactive diagram: https://gitdiagram.com/nawmee02/nawmeessences
- Repository: https://github.com/nawmee02/nawmeessences

## Overview

NawmeEssences is a static perfume-decant storefront backed by Supabase. The principal workflow is: shoppers discover catalog or exclusive products, search/filter them, select sizes, add items to a persistent cart, submit buyer details, and place the order through WhatsApp or Messenger while the order is recorded in Supabase. Supabase also feeds the static build. An authenticated admin manages catalog, settings, blog content, brands, and reviews; the build regenerates the public pages. Some storefront handlers were not sampled, so only documented or strongly supported links are shown.

Main entry points: [`admin/index.html`](https://github.com/nawmee02/nawmeessences/blob/main/admin/index.html) (Admin Dashboard), [`scripts/build-from-supabase.js`](https://github.com/nawmee02/nawmeessences/blob/main/scripts/build-from-supabase.js) (Supabase Site Build), [`shop.html`](https://github.com/nawmee02/nawmeessences/blob/main/shop.html) (Catalog Pages), [`js/cart.js`](https://github.com/nawmee02/nawmeessences/blob/main/js/cart.js) (Shopping Cart)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront Experience"]
  node_catalog_pages["Catalog Pages<br/>[shop.html]"]
  node_exclusive_pages["Exclusive Catalog<br/>[exclusive.html]"]
  node_product_pages["Product Pages"]
  node_search["Global Search<br/>[search.js]"]
  node_reviews_public["Reviews Display<br/>[reviews.js]"]
  node_blog_public["Blog Pages"]
end

subgraph group_commerce["Commerce Flow"]
  node_cart["Shopping Cart<br/>[cart.js]"]
  node_cart_state[("Cart Storage<br/>[cart.js]")]
  node_checkout["Buyer Checkout<br/>[cart.html]"]
  node_order_service["Order Persistence<br/>[supabase.js]"]
end

subgraph group_content["Content Data"]
  node_supabase["Supabase Platform<br/>[supabase.js]"]
  node_catalog_data["Catalog Data<br/>[products.js]"]
  node_orders_db[("Orders Database")]
  node_content_db[("Content Database<br/>[010_blog.sql]")]
  node_image_storage[("Image Storage")]
end

subgraph group_admin["Administration"]
  node_admin_dashboard["Admin Dashboard<br/>[index.html]"]
  node_admin_catalog["Catalog Admin<br/>[admin.js]"]
  node_admin_reviews["Reviews Admin<br/>[admin-reviews.js]"]
  node_admin_blog["Blog Admin<br/>[admin-blog.js]"]
  node_admin_settings["Settings Admin<br/>[admin-settings.js]"]
end

subgraph group_generation["Static Generation"]
  node_build["Supabase Site Build"]
end

node_shopper(("Shopper"))
node_administrator(("Administrator"))
node_whatsapp["WhatsApp"]
node_messenger["Facebook Messenger"]

node_shopper -->|"browses"| node_catalog_pages
node_shopper -->|"browses"| node_exclusive_pages
node_shopper -->|"views"| node_product_pages
node_catalog_pages -->|"opens search"| node_search
node_search -->|"filters catalog"| node_catalog_data
node_catalog_pages -->|"reads catalog"| node_catalog_data
node_exclusive_pages -->|"reads catalog"| node_catalog_data
node_product_pages -->|"adds items"| node_cart
node_catalog_pages -->|"adds items"| node_cart
node_exclusive_pages -->|"adds items"| node_cart
node_cart -->|"persists cart"| node_cart_state
node_cart -->|"opens checkout"| node_checkout
node_checkout -->|"saves order"| node_order_service
node_order_service -->|"writes order"| node_orders_db
node_checkout -.->|"opens order chat"| node_whatsapp
node_checkout -.->|"opens order chat"| node_messenger
node_administrator -->|"manages site"| node_admin_dashboard
node_admin_dashboard -->|"dispatches catalog"| node_admin_catalog
node_admin_dashboard -->|"dispatches reviews"| node_admin_reviews
node_admin_dashboard -->|"dispatches blog"| node_admin_blog
node_admin_dashboard -->|"dispatches settings"| node_admin_settings
node_admin_catalog -->|"writes catalog"| node_supabase
node_admin_catalog -->|"uploads images"| node_image_storage
node_admin_reviews -->|"writes reviews"| node_content_db
node_admin_reviews -->|"uploads photos"| node_image_storage
node_admin_blog -->|"writes posts"| node_content_db
node_admin_blog -->|"uploads covers"| node_image_storage
node_admin_settings -->|"writes settings"| node_content_db
node_supabase -->|"supplies content"| node_build
node_build -->|"generates pages"| node_catalog_pages
node_build -->|"generates pages"| node_product_pages
node_build -->|"generates blog"| node_blog_public
node_build -->|"renders reviews"| node_reviews_public
node_reviews_public -->|"renders cards"| node_reviews_public

click node_supabase "https://github.com/nawmee02/nawmeessences/blob/main/js/supabase.js"
click node_catalog_pages "https://github.com/nawmee02/nawmeessences/blob/main/shop.html"
click node_exclusive_pages "https://github.com/nawmee02/nawmeessences/blob/main/exclusive.html"
click node_product_pages "https://github.com/nawmee02/nawmeessences/blob/main/scripts/generate-product-pages.js"
click node_search "https://github.com/nawmee02/nawmeessences/blob/main/js/search.js"
click node_catalog_data "https://github.com/nawmee02/nawmeessences/blob/main/js/products.js"
click node_cart "https://github.com/nawmee02/nawmeessences/blob/main/js/cart.js"
click node_cart_state "https://github.com/nawmee02/nawmeessences/blob/main/js/cart.js"
click node_checkout "https://github.com/nawmee02/nawmeessences/blob/main/cart.html"
click node_order_service "https://github.com/nawmee02/nawmeessences/blob/main/js/supabase.js"
click node_orders_db "https://github.com/nawmee02/nawmeessences/blob/main/supabase/migrations/001_initial_schema.sql"
click node_reviews_public "https://github.com/nawmee02/nawmeessences/blob/main/scripts/lib/reviews.js"
click node_blog_public "https://github.com/nawmee02/nawmeessences/blob/main/scripts/generate-product-pages.js"
click node_build "https://github.com/nawmee02/nawmeessences/blob/main/scripts/build-from-supabase.js"
click node_admin_dashboard "https://github.com/nawmee02/nawmeessences/blob/main/admin/index.html"
click node_admin_catalog "https://github.com/nawmee02/nawmeessences/blob/main/js/admin.js"
click node_admin_reviews "https://github.com/nawmee02/nawmeessences/blob/main/js/admin-reviews.js"
click node_admin_blog "https://github.com/nawmee02/nawmeessences/blob/main/js/admin-blog.js"
click node_admin_settings "https://github.com/nawmee02/nawmeessences/blob/main/js/admin-settings.js"
click node_content_db "https://github.com/nawmee02/nawmeessences/blob/main/supabase/migrations/010_blog.sql"
click node_image_storage "https://github.com/nawmee02/nawmeessences/blob/main/supabase/migrations/002_catalog_images_details.sql"

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_catalog_pages,node_exclusive_pages,node_product_pages,node_search,node_reviews_public,node_blog_public toneBlue
class node_cart,node_cart_state,node_checkout,node_order_service toneAmber
class node_supabase,node_catalog_data,node_orders_db,node_content_db,node_image_storage toneMint
class node_admin_dashboard,node_admin_catalog,node_admin_reviews,node_admin_blog,node_admin_settings toneRose
class node_build,node_shopper,node_administrator,node_whatsapp,node_messenger toneIndigo
```

## Components

### Storefront Experience

- [Catalog Pages](https://github.com/nawmee02/nawmeessences/blob/main/shop.html): `shop.html`
- [Exclusive Catalog](https://github.com/nawmee02/nawmeessences/blob/main/exclusive.html): `exclusive.html`
- [Product Pages](https://github.com/nawmee02/nawmeessences/blob/main/scripts/generate-product-pages.js): `scripts/generate-product-pages.js`
- [Global Search](https://github.com/nawmee02/nawmeessences/blob/main/js/search.js): `js/search.js`
- [Reviews Display](https://github.com/nawmee02/nawmeessences/blob/main/scripts/lib/reviews.js): `scripts/lib/reviews.js`
- [Blog Pages](https://github.com/nawmee02/nawmeessences/blob/main/scripts/generate-product-pages.js): `scripts/generate-product-pages.js`

### Commerce Flow

- [Shopping Cart](https://github.com/nawmee02/nawmeessences/blob/main/js/cart.js): `js/cart.js`
- [Cart Storage](https://github.com/nawmee02/nawmeessences/blob/main/js/cart.js): `js/cart.js`
- [Buyer Checkout](https://github.com/nawmee02/nawmeessences/blob/main/cart.html): `cart.html`
- [Order Persistence](https://github.com/nawmee02/nawmeessences/blob/main/js/supabase.js): `js/supabase.js`

### Content Data

- [Supabase Platform](https://github.com/nawmee02/nawmeessences/blob/main/js/supabase.js): `js/supabase.js`
- [Catalog Data](https://github.com/nawmee02/nawmeessences/blob/main/js/products.js): `js/products.js`
- [Orders Database](https://github.com/nawmee02/nawmeessences/blob/main/supabase/migrations/001_initial_schema.sql): `supabase/migrations/001_initial_schema.sql`
- [Content Database](https://github.com/nawmee02/nawmeessences/blob/main/supabase/migrations/010_blog.sql): `supabase/migrations/010_blog.sql`
- [Image Storage](https://github.com/nawmee02/nawmeessences/blob/main/supabase/migrations/002_catalog_images_details.sql): `supabase/migrations/002_catalog_images_details.sql`

### Administration

- [Admin Dashboard](https://github.com/nawmee02/nawmeessences/blob/main/admin/index.html): `admin/index.html`
- [Catalog Admin](https://github.com/nawmee02/nawmeessences/blob/main/js/admin.js): `js/admin.js`
- [Reviews Admin](https://github.com/nawmee02/nawmeessences/blob/main/js/admin-reviews.js): `js/admin-reviews.js`
- [Blog Admin](https://github.com/nawmee02/nawmeessences/blob/main/js/admin-blog.js): `js/admin-blog.js`
- [Settings Admin](https://github.com/nawmee02/nawmeessences/blob/main/js/admin-settings.js): `js/admin-settings.js`

### Static Generation

- [Supabase Site Build](https://github.com/nawmee02/nawmeessences/blob/main/scripts/build-from-supabase.js): `scripts/build-from-supabase.js`

### Other components

- **Shopper**
- **Administrator**
- **WhatsApp**
- **Facebook Messenger**

## Connections

- Shopper → Catalog Pages: browses
- Shopper → Exclusive Catalog: browses
- Shopper → Product Pages: views
- Catalog Pages → Global Search: opens search
- Global Search → Catalog Data: filters catalog
- Catalog Pages → Catalog Data: reads catalog
- Exclusive Catalog → Catalog Data: reads catalog
- Product Pages → Shopping Cart: adds items
- Catalog Pages → Shopping Cart: adds items
- Exclusive Catalog → Shopping Cart: adds items
- Shopping Cart → Cart Storage: persists cart
- Shopping Cart → Buyer Checkout: opens checkout
- Buyer Checkout → Order Persistence: saves order
- Order Persistence → Orders Database: writes order
- Buyer Checkout → WhatsApp: opens order chat
- Buyer Checkout → Facebook Messenger: opens order chat
- Administrator → Admin Dashboard: manages site
- Admin Dashboard → Catalog Admin: dispatches catalog
- Admin Dashboard → Reviews Admin: dispatches reviews
- Admin Dashboard → Blog Admin: dispatches blog
- Admin Dashboard → Settings Admin: dispatches settings
- Catalog Admin → Supabase Platform: writes catalog
- Catalog Admin → Image Storage: uploads images
- Reviews Admin → Content Database: writes reviews
- Reviews Admin → Image Storage: uploads photos
- Blog Admin → Content Database: writes posts
- Blog Admin → Image Storage: uploads covers
- Settings Admin → Content Database: writes settings
- Supabase Platform → Supabase Site Build: supplies content
- Supabase Site Build → Catalog Pages: generates pages
- Supabase Site Build → Product Pages: generates pages
- Supabase Site Build → Blog Pages: generates blog
- Supabase Site Build → Reviews Display: renders reviews
- Reviews Display → Reviews Display: renders cards
