# alcalino100/site-otica-ventara architecture

> Architecture diagram of the GitHub repository alcalino100/site-otica-ventara, 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/alcalino100/site-otica-ventara
- Repository: https://github.com/alcalino100/site-otica-ventara

## Overview

The README describes this repository as an institutional prototype, explicitly not an operational store, and says its catalog selection is in memory without persistence. The tree nevertheless contains substantial commerce, administration, shipping, promotions, and product-experience code; those are represented as implemented capabilities, not assumed to make checkout production-operational. The excerpts establish only selected calls and imports, so edges are limited to those relationships or dashed where runtime wiring is unverified.

Main entry points: [`app/api/checkout/route.ts`](https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/checkout/route.ts) (Checkout API), [`lib/supabase/admin.ts`](https://github.com/alcalino100/site-otica-ventara/blob/main/lib/supabase/admin.ts) (Supabase), [`app/api/admin/products/route.ts`](https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/admin/products/route.ts) (Product management API), [`app/page.tsx`](https://github.com/alcalino100/site-otica-ventara/blob/main/app/page.tsx) (Home experience)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Customer experience"]
  node_home["Home experience<br/>[page.tsx]"]
  node_catalog["Frame catalog"]
  node_lenses["Lens catalog"]
  node_optisync["OptiSync showcase<br/>[page.tsx]"]
  node_photo["Photo measurement<br/>[page.tsx]"]
  node_tracking["Order tracking<br/>[page.tsx]"]
  node_shippingpage["Delivery information<br/>[page.tsx]"]
end

subgraph group_commerce["Commerce runtime"]
  node_cartui["Cart selection<br/>[cart-modal.tsx]"]
  node_cartstate["Cart state<br/>[cart.ts]"]
  node_checkout["Checkout API<br/>[route.ts]"]
  node_payments["Payment gateway<br/>[mercadopago.ts]"]
  node_webhooks["Payment webhooks<br/>[route.ts]"]
  node_orders["Orders API<br/>[route.ts]"]
  node_wheel["Promotion wheel"]
end

subgraph group_operations["Store operations"]
  node_admin["Admin dashboard<br/>[page.tsx]"]
  node_adminapi["Product management API<br/>[route.ts]"]
  node_lensadmin["Lens management<br/>[page.tsx]"]
  node_shippingadmin["Shipping CMS"]
  node_shippingapi["Shipping API<br/>[route.ts]"]
end

subgraph group_content["Content and settings"]
  node_settingsprovider["Site settings provider"]
  node_settingsapi["Public settings API<br/>[route.ts]"]
  node_shippingcms["Shipping content repository"]
  node_catalogdata["Catalog data<br/>[catalog-data.ts]"]
end

subgraph group_platform["Persistence and services"]
  node_supabase[("Supabase<br/>[admin.ts]")]
  node_mp["Mercado Pago"]
  node_auditing["Payment audit<br/>[payment-audit.ts]"]
end

node_visitor(("Site visitor"))

node_visitor -->|"browses"| node_home
node_home -->|"renders"| node_catalog
node_visitor -.->|"selects items"| node_cartui
node_cartui -->|"uses"| node_cartstate
node_visitor -.->|"submits order"| node_checkout
node_checkout -->|"resolves products"| node_catalogdata
node_checkout -->|"reads and writes"| node_supabase
node_checkout -->|"creates payment"| node_payments
node_checkout -->|"records attempt"| node_auditing
node_payments -.->|"requests payment"| node_mp
node_mp -.->|"sends events"| node_webhooks
node_admin -.->|"manages products"| node_adminapi
node_adminapi -->|"persists products"| node_supabase
node_lensadmin -.->|"configuration link"| node_adminapi
node_shippingadmin -.->|"publishes content"| node_shippingapi
node_shippingapi -.->|"uses repository"| node_shippingcms
node_shippingcms -.->|"stores content"| node_supabase
node_settingsprovider -.->|"loads settings"| node_settingsapi
node_settingsapi -->|"reads settings"| node_supabase
node_visitor -.->|"explores lenses"| node_lenses
node_visitor -->|"views showcase"| node_optisync
node_optisync -.->|"presents lens lines"| node_lenses
node_visitor -.->|"requests measurement"| node_photo
node_visitor -.->|"checks delivery"| node_tracking
node_visitor -->|"reads delivery info"| node_shippingpage
node_visitor -.->|"participates"| node_wheel
node_orders -->|"reads orders"| node_supabase

click node_home "https://github.com/alcalino100/site-otica-ventara/blob/main/app/page.tsx"
click node_catalog "https://github.com/alcalino100/site-otica-ventara/blob/main/components/catalog/catalog-section.tsx"
click node_lenses "https://github.com/alcalino100/site-otica-ventara/blob/main/components/lenses/lenses-catalog-view.tsx"
click node_optisync "https://github.com/alcalino100/site-otica-ventara/blob/main/app/optisync/page.tsx"
click node_photo "https://github.com/alcalino100/site-otica-ventara/blob/main/app/medicao-por-foto/page.tsx"
click node_tracking "https://github.com/alcalino100/site-otica-ventara/blob/main/app/rastreio/page.tsx"
click node_shippingpage "https://github.com/alcalino100/site-otica-ventara/blob/main/app/entregas/page.tsx"
click node_cartui "https://github.com/alcalino100/site-otica-ventara/blob/main/components/cart/cart-modal.tsx"
click node_cartstate "https://github.com/alcalino100/site-otica-ventara/blob/main/lib/cart.ts"
click node_checkout "https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/checkout/route.ts"
click node_payments "https://github.com/alcalino100/site-otica-ventara/blob/main/lib/mercadopago.ts"
click node_webhooks "https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/webhooks/mercadopago/route.ts"
click node_orders "https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/admin/orders/route.ts"
click node_wheel "https://github.com/alcalino100/site-otica-ventara/blob/main/lib/promotions/promotion-service.ts"
click node_admin "https://github.com/alcalino100/site-otica-ventara/blob/main/app/admin/(dashboard)/produtos/page.tsx"
click node_adminapi "https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/admin/products/route.ts"
click node_lensadmin "https://github.com/alcalino100/site-otica-ventara/blob/main/app/admin/(dashboard)/lentes/page.tsx"
click node_shippingadmin "https://github.com/alcalino100/site-otica-ventara/blob/main/components/admin/shipping-cms/shipping-cms-admin.tsx"
click node_shippingapi "https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/admin/shipping/route.ts"
click node_settingsprovider "https://github.com/alcalino100/site-otica-ventara/blob/main/components/providers/site-settings-provider.tsx"
click node_settingsapi "https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/settings/route.ts"
click node_shippingcms "https://github.com/alcalino100/site-otica-ventara/blob/main/lib/shipping-cms-repository.ts"
click node_catalogdata "https://github.com/alcalino100/site-otica-ventara/blob/main/lib/catalog-data.ts"
click node_supabase "https://github.com/alcalino100/site-otica-ventara/blob/main/lib/supabase/admin.ts"
click node_auditing "https://github.com/alcalino100/site-otica-ventara/blob/main/lib/payment-audit.ts"

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_home,node_catalog,node_lenses,node_optisync,node_photo,node_tracking,node_shippingpage toneBlue
class node_cartui,node_cartstate,node_checkout,node_payments,node_webhooks,node_orders,node_wheel toneAmber
class node_admin,node_adminapi,node_lensadmin,node_shippingadmin,node_shippingapi toneMint
class node_settingsprovider,node_settingsapi,node_shippingcms,node_catalogdata toneRose
class node_supabase,node_mp,node_auditing,node_visitor toneIndigo
```

## Components

### Customer experience

- [Home experience](https://github.com/alcalino100/site-otica-ventara/blob/main/app/page.tsx): `app/page.tsx`
- [Frame catalog](https://github.com/alcalino100/site-otica-ventara/blob/main/components/catalog/catalog-section.tsx): `components/catalog/catalog-section.tsx`
- [Lens catalog](https://github.com/alcalino100/site-otica-ventara/blob/main/components/lenses/lenses-catalog-view.tsx): `components/lenses/lenses-catalog-view.tsx`
- [OptiSync showcase](https://github.com/alcalino100/site-otica-ventara/blob/main/app/optisync/page.tsx): `app/optisync/page.tsx`
- [Photo measurement](https://github.com/alcalino100/site-otica-ventara/blob/main/app/medicao-por-foto/page.tsx): `app/medicao-por-foto/page.tsx`
- [Order tracking](https://github.com/alcalino100/site-otica-ventara/blob/main/app/rastreio/page.tsx): `app/rastreio/page.tsx`
- [Delivery information](https://github.com/alcalino100/site-otica-ventara/blob/main/app/entregas/page.tsx): `app/entregas/page.tsx`

### Commerce runtime

- [Cart selection](https://github.com/alcalino100/site-otica-ventara/blob/main/components/cart/cart-modal.tsx): `components/cart/cart-modal.tsx`
- [Cart state](https://github.com/alcalino100/site-otica-ventara/blob/main/lib/cart.ts): `lib/cart.ts`
- [Checkout API](https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/checkout/route.ts): `app/api/checkout/route.ts`
- [Payment gateway](https://github.com/alcalino100/site-otica-ventara/blob/main/lib/mercadopago.ts): `lib/mercadopago.ts`
- [Payment webhooks](https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/webhooks/mercadopago/route.ts): `app/api/webhooks/mercadopago/route.ts`
- [Orders API](https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/admin/orders/route.ts): `app/api/admin/orders/route.ts`
- [Promotion wheel](https://github.com/alcalino100/site-otica-ventara/blob/main/lib/promotions/promotion-service.ts): `lib/promotions/promotion-service.ts`

### Store operations

- [Admin dashboard](https://github.com/alcalino100/site-otica-ventara/blob/main/app/admin/(dashboard)/produtos/page.tsx): `app/admin/(dashboard)/produtos/page.tsx`
- [Product management API](https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/admin/products/route.ts): `app/api/admin/products/route.ts`
- [Lens management](https://github.com/alcalino100/site-otica-ventara/blob/main/app/admin/(dashboard)/lentes/page.tsx): `app/admin/(dashboard)/lentes/page.tsx`
- [Shipping CMS](https://github.com/alcalino100/site-otica-ventara/blob/main/components/admin/shipping-cms/shipping-cms-admin.tsx): `components/admin/shipping-cms/shipping-cms-admin.tsx`
- [Shipping API](https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/admin/shipping/route.ts): `app/api/admin/shipping/route.ts`

### Content and settings

- [Site settings provider](https://github.com/alcalino100/site-otica-ventara/blob/main/components/providers/site-settings-provider.tsx): `components/providers/site-settings-provider.tsx`
- [Public settings API](https://github.com/alcalino100/site-otica-ventara/blob/main/app/api/settings/route.ts): `app/api/settings/route.ts`
- [Shipping content repository](https://github.com/alcalino100/site-otica-ventara/blob/main/lib/shipping-cms-repository.ts): `lib/shipping-cms-repository.ts`
- [Catalog data](https://github.com/alcalino100/site-otica-ventara/blob/main/lib/catalog-data.ts): `lib/catalog-data.ts`

### Persistence and services

- [Supabase](https://github.com/alcalino100/site-otica-ventara/blob/main/lib/supabase/admin.ts): `lib/supabase/admin.ts`
- **Mercado Pago**
- [Payment audit](https://github.com/alcalino100/site-otica-ventara/blob/main/lib/payment-audit.ts): `lib/payment-audit.ts`

### Other components

- **Site visitor**

## Connections

- Site visitor → Home experience: browses (evidence: `app/page.tsx`)
- Home experience → Frame catalog: renders (evidence: `app/page.tsx`)
- Site visitor → Cart selection: selects items
- Cart selection → Cart state: uses (evidence: `components/cart/cart-modal.tsx`)
- Site visitor → Checkout API: submits order
- Checkout API → Catalog data: resolves products (evidence: `app/api/checkout/route.ts`)
- Checkout API → Supabase: reads and writes (evidence: `app/api/checkout/route.ts`)
- Checkout API → Payment gateway: creates payment (evidence: `app/api/checkout/route.ts`)
- Checkout API → Payment audit: records attempt (evidence: `app/api/checkout/route.ts`)
- Payment gateway → Mercado Pago: requests payment
- Mercado Pago → Payment webhooks: sends events
- Admin dashboard → Product management API: manages products
- Product management API → Supabase: persists products (evidence: `app/api/admin/products/route.ts`)
- Lens management → Product management API: configuration link
- Shipping CMS → Shipping API: publishes content
- Shipping API → Shipping content repository: uses repository
- Shipping content repository → Supabase: stores content (evidence: `lib/shipping-cms-repository.ts`)
- Site settings provider → Public settings API: loads settings
- Public settings API → Supabase: reads settings (evidence: `app/api/settings/route.ts`)
- Site visitor → Lens catalog: explores lenses
- Site visitor → OptiSync showcase: views showcase (evidence: `app/optisync/page.tsx`)
- OptiSync showcase → Lens catalog: presents lens lines
- Site visitor → Photo measurement: requests measurement
- Site visitor → Order tracking: checks delivery
- Site visitor → Delivery information: reads delivery info (evidence: `app/entregas/page.tsx`)
- Site visitor → Promotion wheel: participates
- Orders API → Supabase: reads orders (evidence: `app/api/admin/orders/route.ts`)
