# adrian-adams/house-wine architecture

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

- Interactive diagram: https://gitdiagram.com/adrian-adams/house-wine
- Repository: https://github.com/adrian-adams/house-wine

## Overview

HouseWine is a multilingual wine storefront and marketplace, with a companion Sanity Studio for catalog and feature content. Visitors can browse wine products, shops, and editorial resources; account registration and sign-in, plus order requests, are distinct transactional flows. The sampled API and auth sources show MongoDB persistence and email dispatch. Page-to-query and storefront-to-CMS wiring is not established by the excerpts, so those links are omitted.

Main entry points: [`house-wine/app/api/auth/register/route.ts`](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/api/auth/register/route.ts) (Registration API), [`house-wine/lib/next-auth/auth.ts`](https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/next-auth/auth.ts) (Auth Providers), [`house-wine/app/api/orders/request/route.ts`](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/api/orders/request/route.ts) (Order Request API), [`house-wine/lib/email/sendUserEmails.ts`](https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/email/sendUserEmails.ts) (User Emails)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_storefront["Storefront"]
  node_home["Home<br/>[page.tsx]"]
  node_features["Features<br/>[page.tsx]"]
  node_pricing["Pricing<br/>[page.tsx]"]
  node_resources["Wine Resources"]
end

subgraph group_catalog["Marketplace Catalog"]
  node_products["Product Pages<br/>[page.tsx]"]
  node_shops["Shop Pages<br/>[page.tsx]"]
  node_marketplace["Marketplace<br/>[page.tsx]"]
  node_filters["Filter State<br/>[useFilters.ts]"]
end

subgraph group_accounts["Accounts and Orders"]
  node_register["Registration<br/>[page.tsx]"]
  node_register_api["Registration API<br/>[route.ts]"]
  node_auth_api["Auth API<br/>[route.ts]"]
  node_auth_config["Auth Providers<br/>[auth.ts]"]
  node_order_api["Order Request API<br/>[route.ts]"]
  node_user_model[("User Records<br/>[User.ts]")]
  node_order_model[("Order Records<br/>[OrderRequest.ts]")]
  node_email["Email Dispatch<br/>[sendOrderEmails.ts]"]
  node_user_email["User Emails<br/>[sendUserEmails.ts]"]
end

subgraph group_content["Content Platform"]
  node_sanity_queries["Sanity Queries"]
  node_sanity_client["Sanity Client<br/>[sanity.ts]"]
  node_studio_schemas["Content Schemas"]
end

subgraph group_localization["Localization"]
  node_locale_routes["Localized Navigation<br/>[routing.ts]"]
  node_locale_config["Locale Configuration<br/>[appConfig.ts]"]
end

node_visitor(("Visitor"))
node_mongodb[("MongoDB")]
node_resend["Resend"]

node_visitor -->|"browses"| node_home
node_visitor -->|"browses"| node_marketplace
node_visitor -->|"views"| node_products
node_visitor -->|"views"| node_shops
node_visitor -->|"reads"| node_resources
node_visitor -->|"registers"| node_register
node_visitor -->|"requests order"| node_order_api
node_marketplace -->|"updates URL filters"| node_filters
node_register -->|"submits"| node_register_api
node_register_api -->|"creates user"| node_user_model
node_register_api -->|"connects"| node_mongodb
node_register_api -->|"dispatches"| node_user_email
node_auth_api -->|"invokes"| node_auth_config
node_auth_config -->|"reads or creates"| node_user_model
node_auth_config -->|"connects"| node_mongodb
node_auth_config -->|"dispatches"| node_user_email
node_order_api -->|"creates request"| node_order_model
node_order_api -->|"connects"| node_mongodb
node_order_api -->|"dispatches"| node_email
node_email -->|"sends through"| node_resend
node_user_email -->|"sends through"| node_resend

click node_home "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/page.tsx"
click node_features "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/features/page.tsx"
click node_pricing "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/pricing/page.tsx"
click node_products "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/products/%5Bslug%5D/page.tsx"
click node_shops "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/shops/%5Bslug%5D/page.tsx"
click node_marketplace "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/marketplace/page.tsx"
click node_filters "https://github.com/adrian-adams/house-wine/blob/master/house-wine/hooks/useFilters.ts"
click node_resources "https://github.com/adrian-adams/house-wine/tree/master/house-wine/app/%5Blocale%5D/resources"
click node_register "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/register/page.tsx"
click node_register_api "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/api/auth/register/route.ts"
click node_auth_api "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/api/auth/%5B...nextauth%5D/route.ts"
click node_auth_config "https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/next-auth/auth.ts"
click node_order_api "https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/api/orders/request/route.ts"
click node_user_model "https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/mongodb/models/User.ts"
click node_order_model "https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/mongodb/models/OrderRequest.ts"
click node_email "https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/email/sendOrderEmails.ts"
click node_user_email "https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/email/sendUserEmails.ts"
click node_sanity_queries "https://github.com/adrian-adams/house-wine/tree/master/house-wine/lib/queries"
click node_sanity_client "https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/sanity.ts"
click node_studio_schemas "https://github.com/adrian-adams/house-wine/tree/master/studio-house-wine/schemaTypes"
click node_locale_routes "https://github.com/adrian-adams/house-wine/blob/master/house-wine/i18n/routing.ts"
click node_locale_config "https://github.com/adrian-adams/house-wine/blob/master/house-wine/i18n/appConfig.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_features,node_pricing,node_resources toneBlue
class node_products,node_shops,node_marketplace,node_filters,node_mongodb toneAmber
class node_register,node_register_api,node_auth_api,node_auth_config,node_order_api,node_user_model,node_order_model,node_email,node_user_email toneMint
class node_sanity_queries,node_sanity_client,node_studio_schemas toneRose
class node_locale_routes,node_locale_config,node_visitor,node_resend toneIndigo
```

## Components

### Storefront

- [Home](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/page.tsx): `house-wine/app/[locale]/page.tsx`
- [Features](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/features/page.tsx): `house-wine/app/[locale]/features/page.tsx`
- [Pricing](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/pricing/page.tsx): `house-wine/app/[locale]/pricing/page.tsx`
- [Wine Resources](https://github.com/adrian-adams/house-wine/tree/master/house-wine/app/%5Blocale%5D/resources): `house-wine/app/[locale]/resources`

### Marketplace Catalog

- [Product Pages](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/products/%5Bslug%5D/page.tsx): `house-wine/app/[locale]/products/[slug]/page.tsx`
- [Shop Pages](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/shops/%5Bslug%5D/page.tsx): `house-wine/app/[locale]/shops/[slug]/page.tsx`
- [Marketplace](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/marketplace/page.tsx): `house-wine/app/[locale]/marketplace/page.tsx`
- [Filter State](https://github.com/adrian-adams/house-wine/blob/master/house-wine/hooks/useFilters.ts): `house-wine/hooks/useFilters.ts`

### Accounts and Orders

- [Registration](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/%5Blocale%5D/register/page.tsx): `house-wine/app/[locale]/register/page.tsx`
- [Registration API](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/api/auth/register/route.ts): `house-wine/app/api/auth/register/route.ts`
- [Auth API](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/api/auth/%5B...nextauth%5D/route.ts): `house-wine/app/api/auth/[...nextauth]/route.ts`
- [Auth Providers](https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/next-auth/auth.ts): `house-wine/lib/next-auth/auth.ts`
- [Order Request API](https://github.com/adrian-adams/house-wine/blob/master/house-wine/app/api/orders/request/route.ts): `house-wine/app/api/orders/request/route.ts`
- [User Records](https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/mongodb/models/User.ts): `house-wine/lib/mongodb/models/User.ts`
- [Order Records](https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/mongodb/models/OrderRequest.ts): `house-wine/lib/mongodb/models/OrderRequest.ts`
- [Email Dispatch](https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/email/sendOrderEmails.ts): `house-wine/lib/email/sendOrderEmails.ts`
- [User Emails](https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/email/sendUserEmails.ts): `house-wine/lib/email/sendUserEmails.ts`

### Content Platform

- [Sanity Queries](https://github.com/adrian-adams/house-wine/tree/master/house-wine/lib/queries): `house-wine/lib/queries`
- [Sanity Client](https://github.com/adrian-adams/house-wine/blob/master/house-wine/lib/sanity.ts): `house-wine/lib/sanity.ts`
- [Content Schemas](https://github.com/adrian-adams/house-wine/tree/master/studio-house-wine/schemaTypes): `studio-house-wine/schemaTypes`

### Localization

- [Localized Navigation](https://github.com/adrian-adams/house-wine/blob/master/house-wine/i18n/routing.ts): `house-wine/i18n/routing.ts`
- [Locale Configuration](https://github.com/adrian-adams/house-wine/blob/master/house-wine/i18n/appConfig.ts): `house-wine/i18n/appConfig.ts`

### Other components

- **Visitor**
- **MongoDB**
- **Resend**

## Connections

- Visitor → Home: browses
- Visitor → Marketplace: browses
- Visitor → Product Pages: views
- Visitor → Shop Pages: views
- Visitor → Wine Resources: reads
- Visitor → Registration: registers
- Visitor → Order Request API: requests order
- Marketplace → Filter State: updates URL filters
- Registration → Registration API: submits
- Registration API → User Records: creates user
- Registration API → MongoDB: connects
- Registration API → User Emails: dispatches
- Auth API → Auth Providers: invokes
- Auth Providers → User Records: reads or creates
- Auth Providers → MongoDB: connects
- Auth Providers → User Emails: dispatches
- Order Request API → Order Records: creates request
- Order Request API → MongoDB: connects
- Order Request API → Email Dispatch: dispatches
- Email Dispatch → Resend: sends through
- User Emails → Resend: sends through
