# branchescunha/cheiro-verde-web architecture

> Architecture diagram of the GitHub repository branchescunha/cheiro-verde-web, 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/branchescunha/cheiro-verde-web
- Repository: https://github.com/branchescunha/cheiro-verde-web

## Overview

Cheiro Verde is a pre-rendered restaurant information and ordering website. Visitors browse the home, menu, lunchbox, history, buffet, and contact pages; lunchbox orders and other inquiries are handed off to WhatsApp, while location and social links lead to external services. Shared navigation, responsive media, theme controls, local content, and SEO metadata support that journey. The README documents additional accessibility, PWA, and loading/404 capabilities; unsampled pages are represented by their exact tree paths, with relationships omitted where the available evidence does not establish them.

Main entry points: [`src/components/Header/Header.tsx`](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/Header/Header.tsx) (Site header), [`src/app/page.tsx`](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/page.tsx) (Home), [`src/app/contato/page.tsx`](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/contato/page.tsx) (Contact), [`src/lib/seo.ts`](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/lib/seo.ts) (SEO helpers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_pages["Visitor pages"]
  node_home["Home<br/>[page.tsx]"]
  node_menu_page["Drinks menu<br/>[page.tsx]"]
  node_lunchboxes["Lunchboxes<br/>[page.tsx]"]
  node_history["Restaurant story<br/>[page.tsx]"]
  node_buffet["Buffet<br/>[page.tsx]"]
  node_contact["Contact<br/>[page.tsx]"]
  node_loading["Loading state<br/>[loading.tsx]"]
  node_not_found["Not found<br/>[not-found.tsx]"]
end

subgraph group_ui["Shared interface"]
  node_header["Site header<br/>[Header.tsx]"]
  node_footer["Site footer<br/>[Footer.tsx]"]
  node_hero["Video hero<br/>[Hero.tsx]"]
  node_page_link["Page links<br/>[PageLink.tsx]"]
  node_responsive_photo["Responsive photos"]
  node_theme_toggle["Theme toggle<br/>[ThemeToggle.tsx]"]
end

subgraph group_content["Local content"]
  node_restaurant_data["Restaurant details<br/>[restaurant.ts]"]
  node_menu_data["Menu catalog<br/>[menu.ts]"]
  node_site_data["Site content and routes<br/>[site.ts]"]
  node_site_links["Contact links<br/>[site-links.ts]"]
end

subgraph group_metadata["Metadata and site state"]
  node_seo_config["SEO configuration<br/>[seo.ts]"]
  node_seo_helpers["SEO helpers<br/>[seo.ts]"]
  node_theme_helpers["Theme persistence<br/>[theme.ts]"]
end

node_visitor(("Visitor"))
node_whatsapp["WhatsApp"]
node_maps["Google Maps"]
node_external_links["External channels"]

node_visitor -->|"browses"| node_header
node_header -->|"links to"| node_home
node_header -->|"links to"| node_menu_page
node_header -->|"links to"| node_lunchboxes
node_header -->|"links to"| node_history
node_header -->|"links to"| node_buffet
node_header -->|"links to"| node_contact
node_home -->|"renders"| node_hero
node_home -->|"renders"| node_responsive_photo
node_home -->|"reads"| node_restaurant_data
node_home -->|"reads"| node_site_data
node_menu_page -->|"reads"| node_menu_data
node_lunchboxes -->|"reads"| node_restaurant_data
node_lunchboxes -->|"reads"| node_site_links
node_lunchboxes -->|"offers ordering"| node_whatsapp
node_history -->|"reads"| node_restaurant_data
node_history -->|"renders"| node_responsive_photo
node_contact -->|"reads"| node_restaurant_data
node_contact -->|"reads"| node_site_links
node_contact -->|"links to"| node_maps
node_contact -->|"links to"| node_external_links
node_header -->|"renders"| node_theme_toggle
node_header -->|"reads"| node_site_data
node_footer -->|"reads"| node_site_data
node_footer -->|"reads"| node_site_links
node_footer -->|"links to"| node_external_links
node_theme_toggle -->|"uses"| node_theme_helpers
node_menu_data -->|"imports"| node_restaurant_data
node_seo_config -->|"reads"| node_site_data
node_seo_config -->|"reads"| node_site_links
node_home -->|"creates metadata"| node_seo_helpers
node_menu_page -->|"creates metadata"| node_seo_helpers
node_lunchboxes -->|"creates metadata"| node_seo_helpers
node_history -->|"creates metadata"| node_seo_helpers
node_contact -->|"creates metadata"| node_seo_helpers
node_seo_config -->|"configures"| node_seo_helpers

click node_home "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/page.tsx"
click node_menu_page "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/cardapio/page.tsx"
click node_lunchboxes "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/marmitas/page.tsx"
click node_history "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/sobre/page.tsx"
click node_buffet "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/buffet/page.tsx"
click node_contact "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/contato/page.tsx"
click node_loading "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/loading.tsx"
click node_not_found "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/not-found.tsx"
click node_header "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/Header/Header.tsx"
click node_footer "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/Footer/Footer.tsx"
click node_hero "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/Hero/Hero.tsx"
click node_page_link "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/PageLink/PageLink.tsx"
click node_responsive_photo "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/ResponsivePhoto/ResponsivePhoto.tsx"
click node_theme_toggle "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/ThemeToggle/ThemeToggle.tsx"
click node_restaurant_data "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/restaurant.ts"
click node_menu_data "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/menu.ts"
click node_site_data "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/site.ts"
click node_site_links "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/site-links.ts"
click node_seo_config "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/seo.ts"
click node_seo_helpers "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/lib/seo.ts"
click node_theme_helpers "https://github.com/branchescunha/cheiro-verde-web/blob/main/src/lib/theme.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_menu_page,node_lunchboxes,node_history,node_buffet,node_contact,node_loading,node_not_found toneBlue
class node_header,node_footer,node_hero,node_page_link,node_responsive_photo,node_theme_toggle toneAmber
class node_restaurant_data,node_menu_data,node_site_data,node_site_links toneMint
class node_seo_config,node_seo_helpers,node_theme_helpers toneRose
class node_visitor,node_whatsapp,node_maps,node_external_links toneIndigo
```

## Components

### Visitor pages

- [Home](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Drinks menu](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/cardapio/page.tsx): `src/app/cardapio/page.tsx`
- [Lunchboxes](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/marmitas/page.tsx): `src/app/marmitas/page.tsx`
- [Restaurant story](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/sobre/page.tsx): `src/app/sobre/page.tsx`
- [Buffet](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/buffet/page.tsx): `src/app/buffet/page.tsx`
- [Contact](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/contato/page.tsx): `src/app/contato/page.tsx`
- [Loading state](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/loading.tsx): `src/app/loading.tsx`
- [Not found](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/app/not-found.tsx): `src/app/not-found.tsx`

### Shared interface

- [Site header](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/Header/Header.tsx): `src/components/Header/Header.tsx`
- [Site footer](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/Footer/Footer.tsx): `src/components/Footer/Footer.tsx`
- [Video hero](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/Hero/Hero.tsx): `src/components/Hero/Hero.tsx`
- [Page links](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/PageLink/PageLink.tsx): `src/components/PageLink/PageLink.tsx`
- [Responsive photos](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/ResponsivePhoto/ResponsivePhoto.tsx): `src/components/ResponsivePhoto/ResponsivePhoto.tsx`
- [Theme toggle](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/components/ThemeToggle/ThemeToggle.tsx): `src/components/ThemeToggle/ThemeToggle.tsx`

### Local content

- [Restaurant details](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/restaurant.ts): `src/data/restaurant.ts`
- [Menu catalog](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/menu.ts): `src/data/menu.ts`
- [Site content and routes](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/site.ts): `src/data/site.ts`
- [Contact links](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/site-links.ts): `src/data/site-links.ts`

### Metadata and site state

- [SEO configuration](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/data/seo.ts): `src/data/seo.ts`
- [SEO helpers](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/lib/seo.ts): `src/lib/seo.ts`
- [Theme persistence](https://github.com/branchescunha/cheiro-verde-web/blob/main/src/lib/theme.ts): `src/lib/theme.ts`

### Other components

- **Visitor**
- **WhatsApp**
- **Google Maps**
- **External channels**

## Connections

- Visitor → Site header: browses (evidence: `src/components/Header/Header.tsx`)
- Site header → Home: links to (evidence: `src/components/Header/Header.tsx`)
- Site header → Drinks menu: links to (evidence: `src/components/Header/Header.tsx`)
- Site header → Lunchboxes: links to (evidence: `src/components/Header/Header.tsx`)
- Site header → Restaurant story: links to (evidence: `src/components/Header/Header.tsx`)
- Site header → Buffet: links to (evidence: `src/components/Header/Header.tsx`)
- Site header → Contact: links to (evidence: `src/components/Header/Header.tsx`)
- Home → Video hero: renders (evidence: `src/app/page.tsx`)
- Home → Responsive photos: renders (evidence: `src/app/page.tsx`)
- Home → Restaurant details: reads (evidence: `src/app/page.tsx`)
- Home → Site content and routes: reads (evidence: `src/app/page.tsx`)
- Drinks menu → Menu catalog: reads (evidence: `src/app/cardapio/page.tsx`)
- Lunchboxes → Restaurant details: reads (evidence: `src/app/marmitas/page.tsx`)
- Lunchboxes → Contact links: reads (evidence: `src/app/marmitas/page.tsx`)
- Lunchboxes → WhatsApp: offers ordering (evidence: `README.md`)
- Restaurant story → Restaurant details: reads (evidence: `src/app/sobre/page.tsx`)
- Restaurant story → Responsive photos: renders (evidence: `src/app/sobre/page.tsx`)
- Contact → Restaurant details: reads (evidence: `src/app/contato/page.tsx`)
- Contact → Contact links: reads (evidence: `src/app/contato/page.tsx`)
- Contact → Google Maps: links to (evidence: `README.md`)
- Contact → External channels: links to (evidence: `src/app/contato/page.tsx`)
- Site header → Theme toggle: renders (evidence: `src/components/Header/Header.tsx`)
- Site header → Site content and routes: reads (evidence: `src/components/Header/Header.tsx`)
- Site footer → Site content and routes: reads (evidence: `src/components/Footer/Footer.tsx`)
- Site footer → Contact links: reads (evidence: `src/components/Footer/Footer.tsx`)
- Site footer → External channels: links to (evidence: `src/components/Footer/Footer.tsx`)
- Theme toggle → Theme persistence: uses (evidence: `src/components/ThemeToggle/ThemeToggle.tsx`)
- Menu catalog → Restaurant details: imports (evidence: `src/data/menu.ts`)
- SEO configuration → Site content and routes: reads (evidence: `src/data/seo.ts`)
- SEO configuration → Contact links: reads (evidence: `src/data/seo.ts`)
- Home → SEO helpers: creates metadata (evidence: `src/app/page.tsx`)
- Drinks menu → SEO helpers: creates metadata (evidence: `src/app/cardapio/page.tsx`)
- Lunchboxes → SEO helpers: creates metadata (evidence: `src/app/marmitas/page.tsx`)
- Restaurant story → SEO helpers: creates metadata (evidence: `src/app/sobre/page.tsx`)
- Contact → SEO helpers: creates metadata (evidence: `src/app/contato/page.tsx`)
- SEO configuration → SEO helpers: configures (evidence: `src/data/seo.ts`)
