# obliq-in/obliq-website architecture

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

## Overview

Obliq Website is a public marketing and community site for the Obliq open-source project. Visitors enter through its shared site shell, then browse product information, pricing, project background, contact and privacy pages, or read the blog. Blog routes load MDX posts from the content directory through a filesystem-backed content layer. Pricing has dedicated presentation components. The tree and README identify additional pages and capabilities, but unsampled page implementations do not establish their internal wiring; those links are therefore omitted.

Main entry points: [`src/app/layout.tsx`](https://github.com/obliq-in/obliq-website/blob/main/src/app/layout.tsx) (Root layout), [`src/lib/site.ts`](https://github.com/obliq-in/obliq-website/blob/main/src/lib/site.ts) (Site configuration), [`src/app/blog/page.tsx`](https://github.com/obliq-in/obliq-website/blob/main/src/app/blog/page.tsx) (Blog index), [`src/lib/blog.ts`](https://github.com/obliq-in/obliq-website/blob/main/src/lib/blog.ts) (Blog content layer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_site["Site shell"]
  node_root["Root layout<br/>[layout.tsx]"]
  node_navigation["Navigation<br/>[navbar.tsx]"]
  node_footer["Footer<br/>[footer.tsx]"]
end

subgraph group_marketing["Marketing pages"]
  node_home["Home page<br/>[page.tsx]"]
  node_features["Features page<br/>[page.tsx]"]
  node_pricing["Pricing page<br/>[page.tsx]"]
  node_about["About page<br/>[page.tsx]"]
  node_contact["Contact page<br/>[page.tsx]"]
  node_privacy["Privacy page<br/>[page.tsx]"]
end

subgraph group_publishing["Blog publishing"]
  node_blogindex["Blog index<br/>[page.tsx]"]
  node_blogdetail["Blog detail<br/>[page.tsx]"]
  node_bloglib["Blog content layer<br/>[blog.ts]"]
  node_posts["MDX posts"]
end

subgraph group_shared["Shared content and UI"]
  node_pricingui["Pricing sections<br/>[pricing.tsx]"]
  node_pricingcard["Pricing card<br/>[pricing-card.tsx]"]
  node_siteconfig["Site configuration<br/>[site.ts]"]
  node_ui["UI primitives"]
end

node_visitor(("Visitor"))

node_visitor -->|"requests pages"| node_root
node_root -->|"renders"| node_navigation
node_root -->|"renders"| node_footer
node_root -->|"renders route"| node_home
node_root -->|"renders route"| node_features
node_root -->|"renders route"| node_pricing
node_root -->|"renders route"| node_about
node_root -->|"renders route"| node_contact
node_root -->|"renders route"| node_privacy
node_root -->|"renders route"| node_blogindex
node_root -->|"renders route"| node_blogdetail
node_root -->|"reads"| node_siteconfig
node_navigation -->|"reads"| node_siteconfig
node_about -->|"reads"| node_siteconfig
node_privacy -->|"reads"| node_siteconfig
node_pricing -->|"renders"| node_pricingui
node_pricingui -->|"renders"| node_pricingcard
node_blogindex -->|"loads posts"| node_bloglib
node_blogdetail -->|"loads post"| node_bloglib
node_bloglib -->|"reads MDX"| node_posts
node_blogindex -->|"uses primitives"| node_ui

click node_root "https://github.com/obliq-in/obliq-website/blob/main/src/app/layout.tsx"
click node_navigation "https://github.com/obliq-in/obliq-website/blob/main/src/components/layout/navbar.tsx"
click node_footer "https://github.com/obliq-in/obliq-website/blob/main/src/components/layout/footer.tsx"
click node_home "https://github.com/obliq-in/obliq-website/blob/main/src/app/page.tsx"
click node_features "https://github.com/obliq-in/obliq-website/blob/main/src/app/features/page.tsx"
click node_pricing "https://github.com/obliq-in/obliq-website/blob/main/src/app/pricing/page.tsx"
click node_pricingui "https://github.com/obliq-in/obliq-website/blob/main/src/components/sections/pricing.tsx"
click node_pricingcard "https://github.com/obliq-in/obliq-website/blob/main/src/components/ui/pricing-card.tsx"
click node_about "https://github.com/obliq-in/obliq-website/blob/main/src/app/about/page.tsx"
click node_contact "https://github.com/obliq-in/obliq-website/blob/main/src/app/contact/page.tsx"
click node_privacy "https://github.com/obliq-in/obliq-website/blob/main/src/app/privacy/page.tsx"
click node_blogindex "https://github.com/obliq-in/obliq-website/blob/main/src/app/blog/page.tsx"
click node_blogdetail "https://github.com/obliq-in/obliq-website/blob/main/src/app/blog/%5Bslug%5D/page.tsx"
click node_bloglib "https://github.com/obliq-in/obliq-website/blob/main/src/lib/blog.ts"
click node_posts "https://github.com/obliq-in/obliq-website/blob/main/src/content/blog/how-to-write-for-the-obliq-blog.mdx"
click node_siteconfig "https://github.com/obliq-in/obliq-website/blob/main/src/lib/site.ts"
click node_ui "https://github.com/obliq-in/obliq-website/tree/main/src/components/ui"

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_root,node_navigation,node_footer toneBlue
class node_home,node_features,node_pricing,node_about,node_contact,node_privacy toneAmber
class node_blogindex,node_blogdetail,node_bloglib,node_posts toneMint
class node_pricingui,node_pricingcard,node_siteconfig,node_ui toneRose
class node_visitor toneIndigo
```

## Components

### Site shell

- [Root layout](https://github.com/obliq-in/obliq-website/blob/main/src/app/layout.tsx): `src/app/layout.tsx`
- [Navigation](https://github.com/obliq-in/obliq-website/blob/main/src/components/layout/navbar.tsx): `src/components/layout/navbar.tsx`
- [Footer](https://github.com/obliq-in/obliq-website/blob/main/src/components/layout/footer.tsx): `src/components/layout/footer.tsx`

### Marketing pages

- [Home page](https://github.com/obliq-in/obliq-website/blob/main/src/app/page.tsx): `src/app/page.tsx`
- [Features page](https://github.com/obliq-in/obliq-website/blob/main/src/app/features/page.tsx): `src/app/features/page.tsx`
- [Pricing page](https://github.com/obliq-in/obliq-website/blob/main/src/app/pricing/page.tsx): `src/app/pricing/page.tsx`
- [About page](https://github.com/obliq-in/obliq-website/blob/main/src/app/about/page.tsx): `src/app/about/page.tsx`
- [Contact page](https://github.com/obliq-in/obliq-website/blob/main/src/app/contact/page.tsx): `src/app/contact/page.tsx`
- [Privacy page](https://github.com/obliq-in/obliq-website/blob/main/src/app/privacy/page.tsx): `src/app/privacy/page.tsx`

### Blog publishing

- [Blog index](https://github.com/obliq-in/obliq-website/blob/main/src/app/blog/page.tsx): `src/app/blog/page.tsx`
- [Blog detail](https://github.com/obliq-in/obliq-website/blob/main/src/app/blog/%5Bslug%5D/page.tsx): `src/app/blog/[slug]/page.tsx`
- [Blog content layer](https://github.com/obliq-in/obliq-website/blob/main/src/lib/blog.ts): `src/lib/blog.ts`
- [MDX posts](https://github.com/obliq-in/obliq-website/blob/main/src/content/blog/how-to-write-for-the-obliq-blog.mdx): `src/content/blog/how-to-write-for-the-obliq-blog.mdx`

### Shared content and UI

- [Pricing sections](https://github.com/obliq-in/obliq-website/blob/main/src/components/sections/pricing.tsx): `src/components/sections/pricing.tsx`
- [Pricing card](https://github.com/obliq-in/obliq-website/blob/main/src/components/ui/pricing-card.tsx): `src/components/ui/pricing-card.tsx`
- [Site configuration](https://github.com/obliq-in/obliq-website/blob/main/src/lib/site.ts): `src/lib/site.ts`
- [UI primitives](https://github.com/obliq-in/obliq-website/tree/main/src/components/ui): `src/components/ui`

### Other components

- **Visitor**

## Connections

- Visitor → Root layout: requests pages
- Root layout → Navigation: renders
- Root layout → Footer: renders
- Root layout → Home page: renders route
- Root layout → Features page: renders route
- Root layout → Pricing page: renders route
- Root layout → About page: renders route
- Root layout → Contact page: renders route
- Root layout → Privacy page: renders route
- Root layout → Blog index: renders route
- Root layout → Blog detail: renders route
- Root layout → Site configuration: reads
- Navigation → Site configuration: reads
- About page → Site configuration: reads
- Privacy page → Site configuration: reads
- Pricing page → Pricing sections: renders
- Pricing sections → Pricing card: renders
- Blog index → Blog content layer: loads posts
- Blog detail → Blog content layer: loads post
- Blog content layer → MDX posts: reads MDX
- Blog index → UI primitives: uses primitives
