# ompawar173/gazette-glow-grid architecture

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

- Interactive diagram: https://gitdiagram.com/ompawar173/gazette-glow-grid
- Repository: https://github.com/ompawar173/gazette-glow-grid

## Overview

CIO Media World is a B2B technology publication with a public editorial and digital-magazine experience, plus protected content and communications administration. The main workflow is readers discovering published articles and magazine issues, opening individual content, and subscribing to the Executive Brief; editors manage and publish that content through the admin portal. README capabilities inform several unsampled subsystems, so their links are limited to documented relationships; sampled source confirms homepage fetching and Supabase client behavior.

Main entry points: [`src/lib/content.functions.ts`](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/content.functions.ts) (Content queries), [`src/integrations/supabase/client.ts`](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/integrations/supabase/client.ts) (Supabase client), [`src/routes/index.tsx`](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/index.tsx) (Homepage), [`src/routes/magazines.$id.tsx`](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/magazines.%24id.tsx) (Magazine detail)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public publication"]
  node_home["Homepage<br/>[index.tsx]"]
  node_articles["Article discovery<br/>[articles.tsx]"]
  node_article["Article page<br/>[article.$slug.tsx]"]
  node_categories["Category pages<br/>[category.$slug.tsx]"]
  node_industries["Industry pages<br/>[industry.index.tsx]"]
  node_contact["Contact form<br/>[contact.tsx]"]
  node_newsletter["Newsletter signup<br/>[newsletter.tsx]"]
end

subgraph group_magazines["Digital magazines"]
  node_magazine_listing["Magazine listing"]
  node_magazine_detail["Magazine detail<br/>[magazines.$id.tsx]"]
  node_image_api["Public image endpoint<br/>[img.$.ts]"]
end

subgraph group_admin["Administration"]
  node_admin_gate["Admin access gate<br/>[AdminGate.tsx]"]
  node_article_admin["Article management"]
  node_magazine_admin["Magazine management"]
  node_comms_admin["Subscriber and inquiry admin"]
end

subgraph group_services["Application services"]
  node_content_service["Content queries"]
  node_page_service["Page queries<br/>[pages.functions.ts]"]
  node_team_service["Team and permissions<br/>[team.functions.ts]"]
  node_storage_service["Media storage<br/>[storage.ts]"]
  node_newsletter_service["Newsletter handling"]
  node_supabase_client["Supabase client<br/>[client.ts]"]
  node_supabase_admin["Supabase admin client<br/>[client.server.ts]"]
end

node_reader(("Reader"))
node_editor(("Editor"))
node_supabase[("Supabase")]

node_reader -->|"visits"| node_home
node_reader -->|"browses"| node_articles
node_reader -->|"opens"| node_article
node_reader -->|"browses"| node_categories
node_reader -->|"browses"| node_industries
node_reader -->|"browses"| node_magazine_listing
node_reader -->|"reads"| node_magazine_detail
node_reader -->|"submits inquiry"| node_contact
node_reader -->|"subscribes"| node_newsletter
node_home -->|"loads content"| node_content_service
node_home -->|"fetches published data"| node_supabase_client
node_articles -->|"loads articles"| node_content_service
node_article -->|"loads article"| node_content_service
node_categories -->|"loads stories"| node_content_service
node_industries -->|"loads stories"| node_content_service
node_magazine_listing -->|"loads issues"| node_content_service
node_magazine_detail -->|"loads issue"| node_content_service
node_magazine_detail -->|"displays media"| node_image_api
node_newsletter -->|"submits signup"| node_newsletter_service
node_newsletter_service -->|"stores subscriber"| node_supabase_admin
node_editor -->|"authenticates"| node_admin_gate
node_admin_gate -->|"checks session and roles"| node_supabase_client
node_admin_gate -->|"loads permissions"| node_team_service
node_article_admin -->|"manages articles"| node_content_service
node_magazine_admin -->|"manages issues"| node_content_service
node_comms_admin -->|"manages subscribers"| node_newsletter_service
node_content_service -->|"queries content"| node_supabase_client
node_page_service -->|"queries pages"| node_supabase_client
node_team_service -->|"queries team data"| node_supabase_client
node_storage_service -->|"resolves media"| node_supabase_client
node_supabase_client -->|"accesses"| node_supabase
node_supabase_admin -->|"admin access"| node_supabase

click node_home "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/index.tsx"
click node_articles "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/articles.tsx"
click node_article "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/article.%24slug.tsx"
click node_categories "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/category.%24slug.tsx"
click node_industries "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/industry.index.tsx"
click node_contact "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/contact.tsx"
click node_newsletter "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/newsletter.tsx"
click node_magazine_listing "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/magazines.index.tsx"
click node_magazine_detail "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/magazines.%24id.tsx"
click node_image_api "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/api/public/img.%24.ts"
click node_admin_gate "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/components/admin/AdminGate.tsx"
click node_article_admin "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/admin.articles.index.tsx"
click node_magazine_admin "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/admin.magazines.index.tsx"
click node_comms_admin "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/admin.subscribers.tsx"
click node_content_service "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/content.functions.ts"
click node_page_service "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/pages.functions.ts"
click node_team_service "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/team.functions.ts"
click node_storage_service "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/storage.ts"
click node_newsletter_service "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/newsletter.server.ts"
click node_supabase_client "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/integrations/supabase/client.ts"
click node_supabase_admin "https://github.com/ompawar173/gazette-glow-grid/blob/main/src/integrations/supabase/client.server.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_articles,node_article,node_categories,node_industries,node_contact,node_newsletter toneBlue
class node_magazine_listing,node_magazine_detail,node_image_api,node_supabase toneAmber
class node_admin_gate,node_article_admin,node_magazine_admin,node_comms_admin toneMint
class node_content_service,node_page_service,node_team_service,node_storage_service,node_newsletter_service,node_supabase_client,node_supabase_admin toneRose
class node_reader,node_editor toneIndigo
```

## Components

### Public publication

- [Homepage](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/index.tsx): `src/routes/index.tsx`
- [Article discovery](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/articles.tsx): `src/routes/articles.tsx`
- [Article page](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/article.%24slug.tsx): `src/routes/article.$slug.tsx`
- [Category pages](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/category.%24slug.tsx): `src/routes/category.$slug.tsx`
- [Industry pages](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/industry.index.tsx): `src/routes/industry.index.tsx`
- [Contact form](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/contact.tsx): `src/routes/contact.tsx`
- [Newsletter signup](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/newsletter.tsx): `src/routes/newsletter.tsx`

### Digital magazines

- [Magazine listing](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/magazines.index.tsx): `src/routes/magazines.index.tsx`
- [Magazine detail](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/magazines.%24id.tsx): `src/routes/magazines.$id.tsx`
- [Public image endpoint](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/api/public/img.%24.ts): `src/routes/api/public/img.$.ts`

### Administration

- [Admin access gate](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/components/admin/AdminGate.tsx): `src/components/admin/AdminGate.tsx`
- [Article management](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/admin.articles.index.tsx): `src/routes/admin.articles.index.tsx`
- [Magazine management](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/admin.magazines.index.tsx): `src/routes/admin.magazines.index.tsx`
- [Subscriber and inquiry admin](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/routes/admin.subscribers.tsx): `src/routes/admin.subscribers.tsx`

### Application services

- [Content queries](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/content.functions.ts): `src/lib/content.functions.ts`
- [Page queries](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/pages.functions.ts): `src/lib/pages.functions.ts`
- [Team and permissions](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/team.functions.ts): `src/lib/team.functions.ts`
- [Media storage](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/storage.ts): `src/lib/storage.ts`
- [Newsletter handling](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/lib/newsletter.server.ts): `src/lib/newsletter.server.ts`
- [Supabase client](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/integrations/supabase/client.ts): `src/integrations/supabase/client.ts`
- [Supabase admin client](https://github.com/ompawar173/gazette-glow-grid/blob/main/src/integrations/supabase/client.server.ts): `src/integrations/supabase/client.server.ts`

### Other components

- **Reader**
- **Editor**
- **Supabase**

## Connections

- Reader → Homepage: visits
- Reader → Article discovery: browses
- Reader → Article page: opens
- Reader → Category pages: browses
- Reader → Industry pages: browses
- Reader → Magazine listing: browses
- Reader → Magazine detail: reads
- Reader → Contact form: submits inquiry
- Reader → Newsletter signup: subscribes
- Homepage → Content queries: loads content
- Homepage → Supabase client: fetches published data
- Article discovery → Content queries: loads articles
- Article page → Content queries: loads article
- Category pages → Content queries: loads stories
- Industry pages → Content queries: loads stories
- Magazine listing → Content queries: loads issues
- Magazine detail → Content queries: loads issue
- Magazine detail → Public image endpoint: displays media
- Newsletter signup → Newsletter handling: submits signup
- Newsletter handling → Supabase admin client: stores subscriber
- Editor → Admin access gate: authenticates
- Admin access gate → Supabase client: checks session and roles
- Admin access gate → Team and permissions: loads permissions
- Article management → Content queries: manages articles
- Magazine management → Content queries: manages issues
- Subscriber and inquiry admin → Newsletter handling: manages subscribers
- Content queries → Supabase client: queries content
- Page queries → Supabase client: queries pages
- Team and permissions → Supabase client: queries team data
- Media storage → Supabase client: resolves media
- Supabase client → Supabase: accesses
- Supabase admin client → Supabase: admin access
