# vondakcompany/eatodakimasu architecture

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

- Interactive diagram: https://gitdiagram.com/vondakcompany/eatodakimasu
- Repository: https://github.com/vondakcompany/eatodakimasu

## Overview

Eato is a restaurant discovery and information-management application. Diners browse and filter restaurants, then open a restaurant profile; restaurant operators can register or update listings, while staff manage listings and site content through an admin area. Supabase provides the observed data and authentication backend. The graph reflects sampled source for public search, translations, menu editing, and selected API routes; other admin capabilities are included from the repository tree, with uncertain wiring omitted.

Main entry points: [`app/admin/page.tsx`](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/page.tsx) (Admin workspace), [`app/page.tsx`](https://github.com/vondakcompany/eatodakimasu/blob/main/app/page.tsx) (Directory search), [`lib/supabaseClient.ts`](https://github.com/vondakcompany/eatodakimasu/blob/main/lib/supabaseClient.ts) (Supabase client), [`contexts/LanguageContext.tsx`](https://github.com/vondakcompany/eatodakimasu/blob/main/contexts/LanguageContext.tsx) (Language provider)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Restaurant discovery"]
  node_home["Directory search<br/>[page.tsx]"]
  node_search["Search filters<br/>[SearchBar.tsx]"]
  node_cards["Restaurant results<br/>[RestaurantCard.tsx]"]
  node_profile["Restaurant profile<br/>[page.tsx]"]
end

subgraph group_operations["Listing operations"]
  node_register["Restaurant registration<br/>[page.tsx]"]
  node_pin["PIN verification<br/>[route.ts]"]
  node_update["Listing updates<br/>[route.ts]"]
end

subgraph group_admin["Staff administration"]
  node_adminpage["Admin workspace<br/>[page.tsx]"]
  node_directory["Directory management<br/>[Directory.tsx]"]
  node_pending["Pending listings<br/>[Pending.tsx]"]
  node_menu["Menu editor<br/>[MenuManager.tsx]"]
  node_categories["Category hub<br/>[CategoryHub.tsx]"]
  node_ads["Ad studio<br/>[AdStudio.tsx]"]
  node_translations["Translation manager<br/>[Translations.tsx]"]
  node_users["User management<br/>[UserManagement.tsx]"]
  node_invite["Invite user<br/>[route.ts]"]
  node_remove["Remove user<br/>[route.ts]"]
  node_registrationeditor["Registration editor"]
end

subgraph group_platform["Shared platform"]
  node_language["Language provider"]
  node_supabaseclient["Supabase client<br/>[supabaseClient.ts]"]
  node_db[("Supabase data")]
  node_auth["Supabase Auth"]
  node_email["Resend email API"]
end

node_diner(("Diner"))

node_diner -->|"browses"| node_home
node_home -->|"uses filters"| node_search
node_home -->|"queries listings"| node_supabaseclient
node_home -->|"renders results"| node_cards
node_home -->|"opens listing"| node_profile
node_profile -->|"loads listing"| node_supabaseclient
node_register -->|"loads data"| node_supabaseclient
node_register -->|"verifies PIN"| node_pin
node_supabaseclient -->|"reads and writes"| node_db
node_adminpage -->|"hosts section"| node_directory
node_adminpage -->|"hosts section"| node_pending
node_adminpage -->|"hosts section"| node_menu
node_adminpage -->|"hosts section"| node_categories
node_adminpage -->|"hosts section"| node_ads
node_adminpage -->|"hosts section"| node_translations
node_adminpage -->|"hosts section"| node_users
node_adminpage -->|"hosts section"| node_registrationeditor
node_menu -->|"updates menus"| node_db
node_update -->|"updates listings"| node_db
node_pin -->|"checks and updates"| node_db
node_pin -.->|"sends reset email"| node_email
node_users -->|"invites user"| node_invite
node_users -->|"removes user"| node_remove
node_invite -->|"invites account"| node_auth
node_invite -->|"stores profile"| node_db
node_remove -->|"deletes account"| node_auth
node_remove -->|"deletes profile"| node_db
node_language -->|"loads translations"| node_supabaseclient
node_language -->|"syncs translations"| node_db
node_home -->|"uses language"| node_language
node_profile -->|"uses language"| node_language

click node_home "https://github.com/vondakcompany/eatodakimasu/blob/main/app/page.tsx"
click node_search "https://github.com/vondakcompany/eatodakimasu/blob/main/components/SearchBar.tsx"
click node_cards "https://github.com/vondakcompany/eatodakimasu/blob/main/components/RestaurantCard.tsx"
click node_profile "https://github.com/vondakcompany/eatodakimasu/blob/main/app/restaurant/%5Bid%5D/page.tsx"
click node_register "https://github.com/vondakcompany/eatodakimasu/blob/main/app/register/page.tsx"
click node_pin "https://github.com/vondakcompany/eatodakimasu/blob/main/app/api/verify-pin/route.ts"
click node_update "https://github.com/vondakcompany/eatodakimasu/blob/main/app/api/update-restaurant/route.ts"
click node_adminpage "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/page.tsx"
click node_directory "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/Directory.tsx"
click node_pending "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/Pending.tsx"
click node_menu "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/MenuManager.tsx"
click node_categories "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/CategoryHub.tsx"
click node_ads "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/AdStudio.tsx"
click node_translations "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/Translations.tsx"
click node_users "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/UserManagement.tsx"
click node_invite "https://github.com/vondakcompany/eatodakimasu/blob/main/app/api/invite-user/route.ts"
click node_remove "https://github.com/vondakcompany/eatodakimasu/blob/main/app/api/remove-user/route.ts"
click node_registrationeditor "https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/RegistrationEditor.tsx"
click node_language "https://github.com/vondakcompany/eatodakimasu/blob/main/contexts/LanguageContext.tsx"
click node_supabaseclient "https://github.com/vondakcompany/eatodakimasu/blob/main/lib/supabaseClient.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_search,node_cards,node_profile toneBlue
class node_register,node_pin,node_update toneAmber
class node_adminpage,node_directory,node_pending,node_menu,node_categories,node_ads,node_translations,node_users,node_invite,node_remove,node_registrationeditor toneMint
class node_language,node_supabaseclient,node_db,node_auth,node_email toneRose
class node_diner toneIndigo
```

## Components

### Restaurant discovery

- [Directory search](https://github.com/vondakcompany/eatodakimasu/blob/main/app/page.tsx): `app/page.tsx`
- [Search filters](https://github.com/vondakcompany/eatodakimasu/blob/main/components/SearchBar.tsx): `components/SearchBar.tsx`
- [Restaurant results](https://github.com/vondakcompany/eatodakimasu/blob/main/components/RestaurantCard.tsx): `components/RestaurantCard.tsx`
- [Restaurant profile](https://github.com/vondakcompany/eatodakimasu/blob/main/app/restaurant/%5Bid%5D/page.tsx): `app/restaurant/[id]/page.tsx`

### Listing operations

- [Restaurant registration](https://github.com/vondakcompany/eatodakimasu/blob/main/app/register/page.tsx): `app/register/page.tsx`
- [PIN verification](https://github.com/vondakcompany/eatodakimasu/blob/main/app/api/verify-pin/route.ts): `app/api/verify-pin/route.ts`
- [Listing updates](https://github.com/vondakcompany/eatodakimasu/blob/main/app/api/update-restaurant/route.ts): `app/api/update-restaurant/route.ts`

### Staff administration

- [Admin workspace](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/page.tsx): `app/admin/page.tsx`
- [Directory management](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/Directory.tsx): `app/admin/Directory.tsx`
- [Pending listings](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/Pending.tsx): `app/admin/Pending.tsx`
- [Menu editor](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/MenuManager.tsx): `app/admin/MenuManager.tsx`
- [Category hub](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/CategoryHub.tsx): `app/admin/CategoryHub.tsx`
- [Ad studio](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/AdStudio.tsx): `app/admin/AdStudio.tsx`
- [Translation manager](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/Translations.tsx): `app/admin/Translations.tsx`
- [User management](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/UserManagement.tsx): `app/admin/UserManagement.tsx`
- [Invite user](https://github.com/vondakcompany/eatodakimasu/blob/main/app/api/invite-user/route.ts): `app/api/invite-user/route.ts`
- [Remove user](https://github.com/vondakcompany/eatodakimasu/blob/main/app/api/remove-user/route.ts): `app/api/remove-user/route.ts`
- [Registration editor](https://github.com/vondakcompany/eatodakimasu/blob/main/app/admin/RegistrationEditor.tsx): `app/admin/RegistrationEditor.tsx`

### Shared platform

- [Language provider](https://github.com/vondakcompany/eatodakimasu/blob/main/contexts/LanguageContext.tsx): `contexts/LanguageContext.tsx`
- [Supabase client](https://github.com/vondakcompany/eatodakimasu/blob/main/lib/supabaseClient.ts): `lib/supabaseClient.ts`
- **Supabase data**
- **Supabase Auth**
- **Resend email API**

### Other components

- **Diner**

## Connections

- Diner → Directory search: browses
- Directory search → Search filters: uses filters
- Directory search → Supabase client: queries listings
- Directory search → Restaurant results: renders results
- Directory search → Restaurant profile: opens listing
- Restaurant profile → Supabase client: loads listing
- Restaurant registration → Supabase client: loads data
- Restaurant registration → PIN verification: verifies PIN
- Supabase client → Supabase data: reads and writes
- Admin workspace → Directory management: hosts section
- Admin workspace → Pending listings: hosts section
- Admin workspace → Menu editor: hosts section
- Admin workspace → Category hub: hosts section
- Admin workspace → Ad studio: hosts section
- Admin workspace → Translation manager: hosts section
- Admin workspace → User management: hosts section
- Admin workspace → Registration editor: hosts section
- Menu editor → Supabase data: updates menus
- Listing updates → Supabase data: updates listings
- PIN verification → Supabase data: checks and updates
- PIN verification → Resend email API: sends reset email
- User management → Invite user: invites user
- User management → Remove user: removes user
- Invite user → Supabase Auth: invites account
- Invite user → Supabase data: stores profile
- Remove user → Supabase Auth: deletes account
- Remove user → Supabase data: deletes profile
- Language provider → Supabase client: loads translations
- Language provider → Supabase data: syncs translations
- Directory search → Language provider: uses language
- Restaurant profile → Language provider: uses language
