# shaurya-max76/pravah-website architecture

> Architecture diagram of the GitHub repository shaurya-max76/pravah-website, 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/shaurya-max76/pravah-website
- Repository: https://github.com/shaurya-max76/pravah-website

## Overview

Pravah is a public website for a river-restoration initiative: visitors learn about the project, find field updates, and can start volunteering from the home page. Updates are listed from a generated manifest and individual posts are addressed by slug. The CMS supports publishing post JSON. Runtime page wiring is described in the README; sampled source only covers manifest generation, so other links reflect documented behavior.

Main entry points: [`updates/index.html`](https://github.com/shaurya-max76/pravah-website/blob/main/updates/index.html) (Updates listing), [`admin/index.html`](https://github.com/shaurya-max76/pravah-website/blob/main/admin/index.html) (CMS panel), [`index.html`](https://github.com/shaurya-max76/pravah-website/blob/main/index.html) (Home), [`updates/post.html`](https://github.com/shaurya-max76/pravah-website/blob/main/updates/post.html) (Post renderer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_public["Public information"]
  node_home["Home<br/>[index.html]"]
  node_about["About<br/>[about.html]"]
  node_registration["Registration status<br/>[registration.html]"]
  node_privacy["Privacy policy<br/>[privacy.html]"]
end

subgraph group_updates["Field updates"]
  node_updates_list["Updates listing<br/>[index.html]"]
  node_post_page["Post renderer<br/>[post.html]"]
  node_manifest["Post manifest"]
  node_post_data["Post content"]
end

subgraph group_publishing["Post publishing"]
  node_cms["CMS panel<br/>[index.html]"]
  node_cms_config["CMS configuration<br/>[config.yml]"]
end

node_visitor(("Visitor"))

node_visitor -->|"views"| node_home
node_visitor -->|"views"| node_about
node_visitor -->|"views"| node_registration
node_visitor -->|"views"| node_privacy
node_visitor -->|"views"| node_updates_list
node_home -->|"offers volunteering"| node_visitor
node_updates_list -->|"fetches"| node_manifest
node_updates_list -->|"links by slug"| node_post_page
node_post_page -->|"reads by slug"| node_post_data
node_visitor -->|"publishes posts"| node_cms
node_cms -->|"uses settings"| node_cms_config
node_cms -->|"writes posts"| node_post_data

click node_home "https://github.com/shaurya-max76/pravah-website/blob/main/index.html"
click node_about "https://github.com/shaurya-max76/pravah-website/blob/main/about.html"
click node_registration "https://github.com/shaurya-max76/pravah-website/blob/main/registration.html"
click node_privacy "https://github.com/shaurya-max76/pravah-website/blob/main/privacy.html"
click node_updates_list "https://github.com/shaurya-max76/pravah-website/blob/main/updates/index.html"
click node_post_page "https://github.com/shaurya-max76/pravah-website/blob/main/updates/post.html"
click node_post_data "https://github.com/shaurya-max76/pravah-website/tree/main/content/updates/posts"
click node_cms "https://github.com/shaurya-max76/pravah-website/blob/main/admin/index.html"
click node_cms_config "https://github.com/shaurya-max76/pravah-website/blob/main/admin/config.yml"

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_about,node_registration,node_privacy toneBlue
class node_updates_list,node_post_page,node_manifest,node_post_data toneAmber
class node_cms,node_cms_config toneMint
class node_visitor toneIndigo
```

## Components

### Public information

- [Home](https://github.com/shaurya-max76/pravah-website/blob/main/index.html): `index.html`
- [About](https://github.com/shaurya-max76/pravah-website/blob/main/about.html): `about.html`
- [Registration status](https://github.com/shaurya-max76/pravah-website/blob/main/registration.html): `registration.html`
- [Privacy policy](https://github.com/shaurya-max76/pravah-website/blob/main/privacy.html): `privacy.html`

### Field updates

- [Updates listing](https://github.com/shaurya-max76/pravah-website/blob/main/updates/index.html): `updates/index.html`
- [Post renderer](https://github.com/shaurya-max76/pravah-website/blob/main/updates/post.html): `updates/post.html`
- **Post manifest**
- [Post content](https://github.com/shaurya-max76/pravah-website/tree/main/content/updates/posts): `content/updates/posts`

### Post publishing

- [CMS panel](https://github.com/shaurya-max76/pravah-website/blob/main/admin/index.html): `admin/index.html`
- [CMS configuration](https://github.com/shaurya-max76/pravah-website/blob/main/admin/config.yml): `admin/config.yml`

### Other components

- **Visitor**

## Connections

- Visitor → Home: views
- Visitor → About: views
- Visitor → Registration status: views
- Visitor → Privacy policy: views
- Visitor → Updates listing: views
- Home → Visitor: offers volunteering
- Updates listing → Post manifest: fetches
- Updates listing → Post renderer: links by slug
- Post renderer → Post content: reads by slug
- Visitor → CMS panel: publishes posts
- CMS panel → CMS configuration: uses settings
- CMS panel → Post content: writes posts
