# create-newspulse/newspulse-frontend-live architecture

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

- Interactive diagram: https://gitdiagram.com/create-newspulse/newspulse-frontend-live
- Repository: https://github.com/create-newspulse/newspulse-frontend-live

## Overview

News Pulse is a multilingual news platform for discovering and reading current stories, with community and editorial features alongside personalized engagement. The main reader journey runs from the homepage or a discovery section through news retrieval to article reading; search, regional and youth feeds, video, and reporter submissions are distinct product branches. The README documents platform capabilities and a separate backend API, while sampled source confirms selected page-to-service and provider-to-library relationships. Many feature implementations were not sampled, so their links are limited to documented relationships.

Main entry points: [`lib/publicNewsApi.ts`](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/lib/publicNewsApi.ts) (Public news client), [`pages/index.tsx`](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/index.tsx) (Homepage), [`pages/national/index.tsx`](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/national/index.tsx) (National news), [`pages/reporter/index.tsx`](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/reporter/index.tsx) (Reporter portal)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["News discovery"]
  node_home["Homepage<br/>[index.tsx]"]
  node_search["Advanced search<br/>[search.tsx]"]
  node_national["National news<br/>[index.tsx]"]
  node_regional["Regional news<br/>[regional.tsx]"]
  node_article["Article reader<br/>[&#91;slug&#93;.tsx]"]
end

subgraph group_special["Editorial features"]
  node_viral["Viral videos<br/>[index.tsx]"]
  node_inspiration["Inspiration hub"]
  node_dialogue["Pulse Dialogue<br/>[index.tsx]"]
  node_youth["Youth Pulse<br/>[youth-pulse.tsx]"]
  node_reporter["Reporter portal<br/>[index.tsx]"]
end

subgraph group_engagement["Reader engagement"]
  node_bookmarks["Bookmarks<br/>[useBookmarks.ts]"]
  node_preferences["Reading preferences<br/>[usePreferences.tsx]"]
end

subgraph group_services["Data and services"]
  node_newsapi["Public news client<br/>[publicNewsApi.ts]"]
  node_reporterdata["Reporter portal service<br/>[reporterPortal.ts]"]
end

subgraph group_platform["Platform experience"]
  node_language["Language provider"]
  node_settings["Public settings"]
  node_consent["Consent manager"]
end

node_reader(("Reader"))
node_backend{{"Backend API"}}

node_reader -->|"opens"| node_home
node_reader -->|"searches"| node_search
node_reader -->|"browses"| node_national
node_reader -->|"browses"| node_regional
node_reader -->|"reads"| node_article
node_reader -->|"watches"| node_viral
node_reader -->|"explores"| node_inspiration
node_reader -->|"contributes"| node_dialogue
node_reader -->|"explores"| node_youth
node_reader -->|"submits stories"| node_reporter
node_national -->|"fetches stories"| node_newsapi
node_newsapi -->|"requests news"| node_backend
node_home -->|"uses news client"| node_newsapi
node_language -->|"checks consent"| node_consent
node_settings -.->|"configures public experience"| node_newsapi
node_reporter -.->|"loads portal data"| node_reporterdata
node_reporterdata -.->|"uses backend"| node_backend

click node_home "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/index.tsx"
click node_search "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/search.tsx"
click node_national "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/national/index.tsx"
click node_regional "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/regional.tsx"
click node_article "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/news/%5Bslug%5D.tsx"
click node_viral "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/viral-videos/index.tsx"
click node_inspiration "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/inspiration-hub.tsx"
click node_dialogue "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/pulse-dialogue/index.tsx"
click node_youth "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/youth-pulse.tsx"
click node_reporter "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/reporter/index.tsx"
click node_bookmarks "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/hooks/useBookmarks.ts"
click node_preferences "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/News%20Pulse-Final-Frontend/hooks/usePreferences.tsx"
click node_language "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/src/i18n/LanguageProvider.tsx"
click node_settings "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/src/context/PublicSettingsContext.tsx"
click node_newsapi "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/lib/publicNewsApi.ts"
click node_reporterdata "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/lib/reporterPortal.ts"
click node_consent "https://github.com/create-newspulse/newspulse-frontend-live/blob/main/src/consent/CookieConsentProvider.tsx"

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_national,node_regional,node_article toneBlue
class node_viral,node_inspiration,node_dialogue,node_youth,node_reporter toneAmber
class node_bookmarks,node_preferences,node_backend toneMint
class node_newsapi,node_reporterdata toneRose
class node_language,node_settings,node_consent,node_reader toneIndigo
```

## Components

### News discovery

- [Homepage](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/index.tsx): `pages/index.tsx`
- [Advanced search](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/search.tsx): `pages/search.tsx`
- [National news](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/national/index.tsx): `pages/national/index.tsx`
- [Regional news](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/regional.tsx): `pages/regional.tsx`
- [Article reader](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/news/%5Bslug%5D.tsx): `pages/news/[slug].tsx`

### Editorial features

- [Viral videos](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/viral-videos/index.tsx): `pages/viral-videos/index.tsx`
- [Inspiration hub](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/inspiration-hub.tsx): `pages/inspiration-hub.tsx`
- [Pulse Dialogue](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/pulse-dialogue/index.tsx): `pages/pulse-dialogue/index.tsx`
- [Youth Pulse](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/youth-pulse.tsx): `pages/youth-pulse.tsx`
- [Reporter portal](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/pages/reporter/index.tsx): `pages/reporter/index.tsx`

### Reader engagement

- [Bookmarks](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/hooks/useBookmarks.ts): `hooks/useBookmarks.ts`
- [Reading preferences](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/News%20Pulse-Final-Frontend/hooks/usePreferences.tsx): `News Pulse-Final-Frontend/hooks/usePreferences.tsx`

### Data and services

- [Public news client](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/lib/publicNewsApi.ts): `lib/publicNewsApi.ts`
- [Reporter portal service](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/lib/reporterPortal.ts): `lib/reporterPortal.ts`

### Platform experience

- [Language provider](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/src/i18n/LanguageProvider.tsx): `src/i18n/LanguageProvider.tsx`
- [Public settings](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/src/context/PublicSettingsContext.tsx): `src/context/PublicSettingsContext.tsx`
- [Consent manager](https://github.com/create-newspulse/newspulse-frontend-live/blob/main/src/consent/CookieConsentProvider.tsx): `src/consent/CookieConsentProvider.tsx`

### Other components

- **Reader**
- **Backend API**

## Connections

- Reader → Homepage: opens (evidence: `README.md`)
- Reader → Advanced search: searches (evidence: `README.md`)
- Reader → National news: browses (evidence: `README.md`)
- Reader → Regional news: browses (evidence: `README.md`)
- Reader → Article reader: reads (evidence: `README.md`)
- Reader → Viral videos: watches (evidence: `README.md`)
- Reader → Inspiration hub: explores (evidence: `README.md`)
- Reader → Pulse Dialogue: contributes (evidence: `README.md`)
- Reader → Youth Pulse: explores (evidence: `README.md`)
- Reader → Reporter portal: submits stories (evidence: `README.md`)
- National news → Public news client: fetches stories (evidence: `pages/national/index.tsx`)
- Public news client → Backend API: requests news (evidence: `README.md`)
- Homepage → Public news client: uses news client (evidence: `pages/index.tsx`)
- Language provider → Consent manager: checks consent (evidence: `src/i18n/LanguageProvider.tsx`)
- Public settings → Public news client: configures public experience
- Reporter portal → Reporter portal service: loads portal data
- Reporter portal service → Backend API: uses backend
