# sarisystems-collab/mouan architecture

> Architecture diagram of the GitHub repository sarisystems-collab/mouan, 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/sarisystems-collab/mouan
- Repository: https://github.com/sarisystems-collab/mouan
- Video tour (about a minute): https://gitdiagram.com/sarisystems-collab/mouan/video

## Overview

This repository appears to implement a bilingual grocery and household-management app, with product and shopping workflows, price comparison, recipes, voice-assistant linking, and a plugin marketplace with administration. The React entry and selected screens, Supabase access, price service, API handlers, and scraper are evidenced by the supplied excerpts. The README is only the Vite template and does not document product behavior; most screen internals and their wiring were not sampled, so uncertain connections are omitted.

Main entry points: [`src/App.jsx`](https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx) (App Routes), [`src/supabaseClient.js`](https://github.com/sarisystems-collab/mouan/blob/main/src/supabaseClient.js) (Supabase Client), [`src/main.jsx`](https://github.com/sarisystems-collab/mouan/blob/main/src/main.jsx) (React Entry), [`src/AdminDashboard.jsx`](https://github.com/sarisystems-collab/mouan/blob/main/src/AdminDashboard.jsx) (Admin Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Household App"]
  node_entry["React Entry<br/>[main.jsx]"]
  node_routes["App Routes<br/>[App.jsx]"]
  node_layout["App Layout<br/>[Layout.jsx]"]
  node_inventory["Product Inventory<br/>[App.jsx]"]
  node_shopping["Shopping Trips<br/>[App.jsx]"]
  node_recipes["Recipe Views<br/>[App.jsx]"]
  node_account["Account<br/>[Account.jsx]"]
  node_assistants["Assistant Manager"]
end

subgraph group_market["Plugins And Admin"]
  node_marketplace["Plugin Marketplace<br/>[Marketplace.jsx]"]
  node_pluginmanage["My Plugins<br/>[MyPlugins.jsx]"]
  node_pluginrun["Plugin Runner<br/>[PluginRunner.jsx]"]
  node_developer["Developer Tools"]
  node_admin["Admin Dashboard<br/>[AdminDashboard.jsx]"]
end

subgraph group_pricing["Price Data"]
  node_priceview["Price Comparison"]
  node_pricesvc["Price Service<br/>[priceService.js]"]
  node_scraper["Store Scraper<br/>[index.js]"]
end

subgraph group_platform["Platform Services"]
  node_supabaseclient["Supabase Client<br/>[supabaseClient.js]"]
  node_supabase[("Supabase")]
  node_fatsecret["Food Lookup API"]
  node_searchapi["Barcode Search API<br/>[search.js]"]
  node_sfdaapi["SFDA Proxy<br/>[sfda.js]"]
  node_i18n["Localization<br/>[index.js]"]
end

node_shopper(("Shopper"))
node_stores["Retail Sites"]
node_sfda["SFDA API"]

node_shopper -->|"opens"| node_entry
node_entry -->|"renders"| node_routes
node_routes -->|"renders"| node_layout
node_routes -->|"routes to"| node_inventory
node_routes -->|"routes to"| node_shopping
node_routes -->|"routes to"| node_recipes
node_routes -->|"routes to"| node_account
node_routes -->|"routes to"| node_assistants
node_routes -->|"routes to"| node_priceview
node_routes -->|"routes to"| node_marketplace
node_routes -->|"routes to"| node_pluginmanage
node_routes -->|"routes to"| node_pluginrun
node_routes -->|"routes to"| node_developer
node_routes -->|"routes to"| node_admin
node_entry -->|"initializes"| node_i18n
node_inventory -->|"accesses"| node_supabaseclient
node_assistants -->|"reads and deletes"| node_supabaseclient
node_admin -->|"manages records"| node_supabaseclient
node_admin -->|"invokes function"| node_supabase
node_supabaseclient -->|"queries"| node_supabase
node_priceview -->|"uses"| node_pricesvc
node_pricesvc -->|"reads prices"| node_supabaseclient
node_scraper -->|"scrapes listings"| node_stores
node_scraper -->|"writes prices"| node_supabase
node_searchapi -->|"fetches barcode data"| node_fatsecret
node_sfdaapi -->|"fetches barcode data"| node_sfda

click node_entry "https://github.com/sarisystems-collab/mouan/blob/main/src/main.jsx"
click node_routes "https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx"
click node_layout "https://github.com/sarisystems-collab/mouan/blob/main/src/Layout.jsx"
click node_inventory "https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx"
click node_shopping "https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx"
click node_recipes "https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx"
click node_account "https://github.com/sarisystems-collab/mouan/blob/main/src/Account.jsx"
click node_assistants "https://github.com/sarisystems-collab/mouan/blob/main/src/AssistantManager.jsx"
click node_priceview "https://github.com/sarisystems-collab/mouan/blob/main/src/PriceComparison.jsx"
click node_pricesvc "https://github.com/sarisystems-collab/mouan/blob/main/src/priceService.js"
click node_scraper "https://github.com/sarisystems-collab/mouan/blob/main/scraper/index.js"
click node_marketplace "https://github.com/sarisystems-collab/mouan/blob/main/src/Marketplace.jsx"
click node_pluginmanage "https://github.com/sarisystems-collab/mouan/blob/main/src/MyPlugins.jsx"
click node_pluginrun "https://github.com/sarisystems-collab/mouan/blob/main/src/PluginRunner.jsx"
click node_developer "https://github.com/sarisystems-collab/mouan/blob/main/src/DeveloperDashboard.jsx"
click node_admin "https://github.com/sarisystems-collab/mouan/blob/main/src/AdminDashboard.jsx"
click node_supabaseclient "https://github.com/sarisystems-collab/mouan/blob/main/src/supabaseClient.js"
click node_searchapi "https://github.com/sarisystems-collab/mouan/blob/main/api/search.js"
click node_sfdaapi "https://github.com/sarisystems-collab/mouan/blob/main/api/sfda.js"
click node_i18n "https://github.com/sarisystems-collab/mouan/blob/main/src/i18n/index.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_entry,node_routes,node_layout,node_inventory,node_shopping,node_recipes,node_account,node_assistants toneBlue
class node_marketplace,node_pluginmanage,node_pluginrun,node_developer,node_admin toneAmber
class node_priceview,node_pricesvc,node_scraper,node_sfda toneMint
class node_supabaseclient,node_supabase,node_fatsecret,node_searchapi,node_sfdaapi,node_i18n toneRose
class node_shopper,node_stores toneIndigo
```

## Components

### Household App

- [React Entry](https://github.com/sarisystems-collab/mouan/blob/main/src/main.jsx): `src/main.jsx`
- [App Routes](https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx): `src/App.jsx`
- [App Layout](https://github.com/sarisystems-collab/mouan/blob/main/src/Layout.jsx): `src/Layout.jsx`
- [Product Inventory](https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx): `src/App.jsx`
- [Shopping Trips](https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx): `src/App.jsx`
- [Recipe Views](https://github.com/sarisystems-collab/mouan/blob/main/src/App.jsx): `src/App.jsx`
- [Account](https://github.com/sarisystems-collab/mouan/blob/main/src/Account.jsx): `src/Account.jsx`
- [Assistant Manager](https://github.com/sarisystems-collab/mouan/blob/main/src/AssistantManager.jsx): `src/AssistantManager.jsx`

### Plugins And Admin

- [Plugin Marketplace](https://github.com/sarisystems-collab/mouan/blob/main/src/Marketplace.jsx): `src/Marketplace.jsx`
- [My Plugins](https://github.com/sarisystems-collab/mouan/blob/main/src/MyPlugins.jsx): `src/MyPlugins.jsx`
- [Plugin Runner](https://github.com/sarisystems-collab/mouan/blob/main/src/PluginRunner.jsx): `src/PluginRunner.jsx`
- [Developer Tools](https://github.com/sarisystems-collab/mouan/blob/main/src/DeveloperDashboard.jsx): `src/DeveloperDashboard.jsx`
- [Admin Dashboard](https://github.com/sarisystems-collab/mouan/blob/main/src/AdminDashboard.jsx): `src/AdminDashboard.jsx`

### Price Data

- [Price Comparison](https://github.com/sarisystems-collab/mouan/blob/main/src/PriceComparison.jsx): `src/PriceComparison.jsx`
- [Price Service](https://github.com/sarisystems-collab/mouan/blob/main/src/priceService.js): `src/priceService.js`
- [Store Scraper](https://github.com/sarisystems-collab/mouan/blob/main/scraper/index.js): `scraper/index.js`

### Platform Services

- [Supabase Client](https://github.com/sarisystems-collab/mouan/blob/main/src/supabaseClient.js): `src/supabaseClient.js`
- **Supabase**
- **Food Lookup API**
- [Barcode Search API](https://github.com/sarisystems-collab/mouan/blob/main/api/search.js): `api/search.js`
- [SFDA Proxy](https://github.com/sarisystems-collab/mouan/blob/main/api/sfda.js): `api/sfda.js`
- [Localization](https://github.com/sarisystems-collab/mouan/blob/main/src/i18n/index.js): `src/i18n/index.js`

### Other components

- **Shopper**
- **Retail Sites**
- **SFDA API**

## Connections

- Shopper → React Entry: opens
- React Entry → App Routes: renders
- App Routes → App Layout: renders
- App Routes → Product Inventory: routes to
- App Routes → Shopping Trips: routes to
- App Routes → Recipe Views: routes to
- App Routes → Account: routes to
- App Routes → Assistant Manager: routes to
- App Routes → Price Comparison: routes to
- App Routes → Plugin Marketplace: routes to
- App Routes → My Plugins: routes to
- App Routes → Plugin Runner: routes to
- App Routes → Developer Tools: routes to
- App Routes → Admin Dashboard: routes to
- React Entry → Localization: initializes
- Product Inventory → Supabase Client: accesses
- Assistant Manager → Supabase Client: reads and deletes
- Admin Dashboard → Supabase Client: manages records
- Admin Dashboard → Supabase: invokes function
- Supabase Client → Supabase: queries
- Price Comparison → Price Service: uses
- Price Service → Supabase Client: reads prices
- Store Scraper → Retail Sites: scrapes listings
- Store Scraper → Supabase: writes prices
- Barcode Search API → Food Lookup API: fetches barcode data
- SFDA Proxy → SFDA API: fetches barcode data
