# bezouwenr/podfy-site architecture

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

- Interactive diagram: https://gitdiagram.com/bezouwenr/podfy-site
- Repository: https://github.com/bezouwenr/podfy-site

## Overview

PODFY’s repository is the marketing and trust site for a proof-of-delivery SaaS, not the PODFY application itself. Its main visitor workflow is discovering audience-specific solutions and delivery guides, then taking an action such as requesting a demo, contacting the team, or exploring pricing. Separate branches provide product trust information and the multilingual Insights publishing experience. The README documents the broader static-page and API capabilities; sampled source confirms several Insights data and rendering paths, while wiring not established by the excerpts is omitted.

Main entry points: [`functions/_shared/insights-ssr.js`](https://github.com/bezouwenr/podfy-site/blob/main/functions/_shared/insights-ssr.js) (SSR helpers), [`functions/api/contact.js`](https://github.com/bezouwenr/podfy-site/blob/main/functions/api/contact.js) (Contact endpoint), [`functions/insights/index.js`](https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/index.js) (Market updates), [`functions/insights/article.js`](https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/article.js) (Article pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Marketing site"]
  node_home["Home<br/>[index.html]"]
  node_solutions["Solutions pages"]
  node_guides["Delivery guides"]
  node_locales["Translated pages"]
  node_trust["Trust pages<br/>[trust.html]"]
end

subgraph group_actions["Visitor actions"]
  node_demo["Demo page<br/>[demo.html]"]
  node_pricing["Pricing page<br/>[pricing.html]"]
  node_contact["Contact endpoint<br/>[contact.js]"]
  node_subscribe["Subscribe endpoint<br/>[subscribe.js]"]
  node_pricingfactor["Pricing lookup<br/>[pricing-factor.js]"]
  node_releases["Release feed<br/>[releases.js]"]
end

subgraph group_insights["Insights publishing"]
  node_market["Market updates<br/>[index.js]"]
  node_article["Article pages<br/>[article.js]"]
  node_repository["Repository pages<br/>[index.js]"]
  node_linkedin["LinkedIn page<br/>[index.js]"]
  node_insightapi["Insights API<br/>[&#91;&#91;route&#93;&#93;.js]"]
  node_redirect["Post redirect<br/>[&#91;blogId&#93;.js]"]
end

subgraph group_platform["Runtime services"]
  node_ssr["SSR helpers<br/>[insights-ssr.js]"]
  node_d1[("Cloudflare D1")]
  node_bucket[("Uploads bucket")]
  node_turnstile["Turnstile"]
  node_resend["Resend email"]
  node_assets["Pages assets"]
end

node_visitor(("Site visitor"))

node_visitor -->|"opens"| node_home
node_visitor -->|"browses"| node_solutions
node_visitor -->|"reads"| node_guides
node_visitor -->|"chooses language"| node_locales
node_visitor -->|"reviews"| node_trust
node_visitor -->|"opens demo"| node_demo
node_visitor -->|"checks pricing"| node_pricing
node_visitor -->|"submits form"| node_contact
node_visitor -->|"subscribes"| node_subscribe
node_pricing -->|"looks up segment"| node_pricingfactor
node_visitor -->|"reads updates"| node_market
node_visitor -->|"browses sources"| node_repository
node_visitor -->|"views posts"| node_linkedin
node_market -->|"links to"| node_article
node_article -->|"links to source"| node_repository
node_linkedin -->|"opens post"| node_redirect
node_market -->|"queries posts"| node_d1
node_repository -->|"queries items"| node_d1
node_linkedin -->|"queries posts"| node_d1
node_article -->|"loads article"| node_d1
node_insightapi -->|"queries records"| node_d1
node_insightapi -->|"streams files"| node_bucket
node_redirect -->|"looks up post"| node_d1
node_redirect -->|"redirects"| node_visitor
node_market -->|"renders with"| node_ssr
node_article -->|"renders with"| node_ssr
node_repository -->|"renders with"| node_ssr
node_linkedin -->|"renders with"| node_ssr
node_ssr -->|"fetches partials"| node_assets
node_contact -->|"stores submission"| node_d1
node_contact -->|"verifies token"| node_turnstile
node_contact -->|"sends email"| node_resend
node_releases -->|"loads releases"| node_d1
node_pricingfactor -->|"looks up buyer"| node_d1

click node_home "https://github.com/bezouwenr/podfy-site/blob/main/index.html"
click node_solutions "https://github.com/bezouwenr/podfy-site/tree/main/solutions"
click node_guides "https://github.com/bezouwenr/podfy-site/tree/main/guides"
click node_locales "https://github.com/bezouwenr/podfy-site/tree/main/nl"
click node_trust "https://github.com/bezouwenr/podfy-site/blob/main/trust.html"
click node_demo "https://github.com/bezouwenr/podfy-site/blob/main/demo.html"
click node_pricing "https://github.com/bezouwenr/podfy-site/blob/main/pricing.html"
click node_contact "https://github.com/bezouwenr/podfy-site/blob/main/functions/api/contact.js"
click node_subscribe "https://github.com/bezouwenr/podfy-site/blob/main/functions/api/subscribe.js"
click node_pricingfactor "https://github.com/bezouwenr/podfy-site/blob/main/functions/api/pricing-factor.js"
click node_releases "https://github.com/bezouwenr/podfy-site/blob/main/functions/api/releases.js"
click node_market "https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/index.js"
click node_article "https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/article.js"
click node_repository "https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/repository/index.js"
click node_linkedin "https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/linkedin/index.js"
click node_insightapi "https://github.com/bezouwenr/podfy-site/blob/main/functions/api/insights/%5B%5Broute%5D%5D.js"
click node_redirect "https://github.com/bezouwenr/podfy-site/blob/main/functions/li/%5BblogId%5D.js"
click node_ssr "https://github.com/bezouwenr/podfy-site/blob/main/functions/_shared/insights-ssr.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_home,node_solutions,node_guides,node_locales,node_trust toneBlue
class node_demo,node_pricing,node_contact,node_subscribe,node_pricingfactor,node_releases toneAmber
class node_market,node_article,node_repository,node_linkedin,node_insightapi,node_redirect toneMint
class node_ssr,node_d1,node_bucket,node_turnstile,node_resend,node_assets toneRose
class node_visitor toneIndigo
```

## Components

### Marketing site

- [Home](https://github.com/bezouwenr/podfy-site/blob/main/index.html): `index.html`
- [Solutions pages](https://github.com/bezouwenr/podfy-site/tree/main/solutions): `solutions`
- [Delivery guides](https://github.com/bezouwenr/podfy-site/tree/main/guides): `guides`
- [Translated pages](https://github.com/bezouwenr/podfy-site/tree/main/nl): `nl`
- [Trust pages](https://github.com/bezouwenr/podfy-site/blob/main/trust.html): `trust.html`

### Visitor actions

- [Demo page](https://github.com/bezouwenr/podfy-site/blob/main/demo.html): `demo.html`
- [Pricing page](https://github.com/bezouwenr/podfy-site/blob/main/pricing.html): `pricing.html`
- [Contact endpoint](https://github.com/bezouwenr/podfy-site/blob/main/functions/api/contact.js): `functions/api/contact.js`
- [Subscribe endpoint](https://github.com/bezouwenr/podfy-site/blob/main/functions/api/subscribe.js): `functions/api/subscribe.js`
- [Pricing lookup](https://github.com/bezouwenr/podfy-site/blob/main/functions/api/pricing-factor.js): `functions/api/pricing-factor.js`
- [Release feed](https://github.com/bezouwenr/podfy-site/blob/main/functions/api/releases.js): `functions/api/releases.js`

### Insights publishing

- [Market updates](https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/index.js): `functions/insights/index.js`
- [Article pages](https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/article.js): `functions/insights/article.js`
- [Repository pages](https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/repository/index.js): `functions/insights/repository/index.js`
- [LinkedIn page](https://github.com/bezouwenr/podfy-site/blob/main/functions/insights/linkedin/index.js): `functions/insights/linkedin/index.js`
- [Insights API](https://github.com/bezouwenr/podfy-site/blob/main/functions/api/insights/%5B%5Broute%5D%5D.js): `functions/api/insights/[[route]].js`
- [Post redirect](https://github.com/bezouwenr/podfy-site/blob/main/functions/li/%5BblogId%5D.js): `functions/li/[blogId].js`

### Runtime services

- [SSR helpers](https://github.com/bezouwenr/podfy-site/blob/main/functions/_shared/insights-ssr.js): `functions/_shared/insights-ssr.js`
- **Cloudflare D1**
- **Uploads bucket**
- **Turnstile**
- **Resend email**
- **Pages assets**

### Other components

- **Site visitor**

## Connections

- Site visitor → Home: opens
- Site visitor → Solutions pages: browses
- Site visitor → Delivery guides: reads
- Site visitor → Translated pages: chooses language
- Site visitor → Trust pages: reviews
- Site visitor → Demo page: opens demo
- Site visitor → Pricing page: checks pricing
- Site visitor → Contact endpoint: submits form
- Site visitor → Subscribe endpoint: subscribes
- Pricing page → Pricing lookup: looks up segment
- Site visitor → Market updates: reads updates
- Site visitor → Repository pages: browses sources
- Site visitor → LinkedIn page: views posts
- Market updates → Article pages: links to
- Article pages → Repository pages: links to source
- LinkedIn page → Post redirect: opens post
- Market updates → Cloudflare D1: queries posts
- Repository pages → Cloudflare D1: queries items
- LinkedIn page → Cloudflare D1: queries posts
- Article pages → Cloudflare D1: loads article
- Insights API → Cloudflare D1: queries records
- Insights API → Uploads bucket: streams files
- Post redirect → Cloudflare D1: looks up post
- Post redirect → Site visitor: redirects
- Market updates → SSR helpers: renders with
- Article pages → SSR helpers: renders with
- Repository pages → SSR helpers: renders with
- LinkedIn page → SSR helpers: renders with
- SSR helpers → Pages assets: fetches partials
- Contact endpoint → Cloudflare D1: stores submission
- Contact endpoint → Turnstile: verifies token
- Contact endpoint → Resend email: sends email
- Release feed → Cloudflare D1: loads releases
- Pricing lookup → Cloudflare D1: looks up buyer
