Skip to content

Reorganize navigation, add AI Toolkit overview, redesign welcome page#53

Open
AntTheLimey wants to merge 12 commits intomainfrom
feature/menu-organization-v2
Open

Reorganize navigation, add AI Toolkit overview, redesign welcome page#53
AntTheLimey wants to merge 12 commits intomainfrom
feature/menu-organization-v2

Conversation

@AntTheLimey
Copy link
Member

@AntTheLimey AntTheLimey commented Mar 19, 2026

Summary

Major restructuring of the documentation site navigation, welcome page, and addition of an AI Toolkit overview page. Supersedes #33.

Navigation Restructure

The top-level navigation tabs have been reorganized from the previous flat structure into four focused dropdowns with sub-headings and visual dividers:

  • Deployment — Consolidates all deployment methods into a single dropdown:
    • VM / Bare Metal section: Control Plane, Enterprise Repository, Ansible
    • Containers (direct link to pgEdge Container)
    • pgEdge Cloud (direct link)
  • AI Toolkit — Overview link, pgEdge components (MCP Server, RAG Server, Docloader, Vectorizer) plus community components (pgVector)
  • Database — PostgreSQL reference docs, pgEdge extensions (Spock v5, LOLOR, Snowflake, Vectorizer), and community extensions (pgVector, PostGIS, pgAudit)
  • Tools — pgEdge tools (ACE, Anonymizer, Loadgen, Radar) and community tools (pgAdmin 4, pgBouncer, pgBackRest, PostgREST, psycopg2)

Dropdown Menu Enhancements

Extended the dropdown macro to support:

  • Sub-headings — non-clickable category labels (e.g., "VM / Bare Metal", "pgEdge Extensions", "Community Tools")
  • Horizontal rule dividers — visual separation between groups within a dropdown
  • Both render correctly in light and dark mode

Community Documentation

Added versioned documentation imports for community projects (sourced from the 3rd-party-docs repo):

Project Category Versions
pgVector Extension / AI v0.8.0, v0.8.1, Development
PostGIS Extension v3.5.5, v3.6.2, Development
pgAudit Extension v16.1, v17.1, v18.0, Development
pgAdmin 4 Tool v9.11, v9.12, v9.13, Development
pgBouncer Tool v1.24, v1.25, Development
pgBackRest Tool v2.57.0, v2.58.0, Development
PostgREST Tool v14.5, Development
psycopg2 Tool v2.9.10, Development

AI Toolkit Overview Page

New docs/ai-toolkit/index.md providing a single entry point for the AI Toolkit:

  • Explains the two independent capabilities: secure database access (MCP Server) and RAG pipelines
  • Component descriptions with pgEdge/Community separation
  • MCP Server architecture section with Mermaid diagram showing client connections, security model, and PostgreSQL knowledgebase
  • RAG pipeline walkthrough with Mermaid diagram showing data flow from ingestion through serving
  • Linked from the AI Toolkit dropdown and the welcome page All Documentation section

Welcome Page Redesign

  • Hero text updated to reflect both distributed data and agentic AI positioning
  • Getting Started cards — 3 deployment option cards (VMs & Bare Metal, Containers, pgEdge Cloud) with Lucide icons that work in both light and dark mode
  • Key Components cards — Highlights three pillars: pgEdge Postgres MCP Server, Enterprise Repository, Spock
  • All Documentation section — Comprehensive 4-column listing (Deployment / AI Toolkit / Database / Tools) with sub-headings and dividers matching the nav structure, with descriptions for every item
  • Ansible placeholder page added

Other Changes

  • Icons switched from custom SVGs to Lucide icon set with CSS variable-based stroke colors for automatic light/dark mode support
  • VMs & Bare Metal now links to Control Plane (CLI/Platform being deprecated)
  • Community docs sourced from 3rd-party-docs repo (renamed from postgresql-docs)
  • pgBackRest added to community tools (nav, dropdown, and welcome page)
  • Added .superpowers/ and community doc redirect files to .gitignore

Files Changed

  • mkdocs.yml — Restructured nav_categories, added community doc imports, updated versioned_docsets
  • overrides/partials/tabs.html — Extended dropdown macro with heading/HR support, restructured tab list
  • docs/stylesheets/extra.css — Added dropdown heading and divider styles
  • docs/index.md — Complete welcome page redesign
  • docs/ai-toolkit/index.md — New AI Toolkit overview page
  • docs/ansible/index.md — New Ansible placeholder page
  • .gitignore — Added community doc redirect files and .superpowers/

Test Plan

  • Verify all dropdown menus open/close correctly with sub-headings and dividers
  • Verify all dropdown links navigate to correct destinations
  • Check dropdowns render correctly in both light and dark mode
  • Verify welcome page layout in both light and dark mode
  • Test responsive behavior (4 cols → 2 cols → 1 col) on tablet/mobile
  • Verify all community doc links resolve (pgVector, PostGIS, pgAudit, pgAdmin 4, pgBouncer, pgBackRest, PostgREST, psycopg2)
  • Verify version selector works for community docs
  • Verify AI Toolkit overview page renders with both Mermaid diagrams
  • Check AI Toolkit overview link appears in dropdown and welcome page
  • Check Ansible placeholder page renders correctly

Summary by CodeRabbit

  • New Features

    • Added AI Toolkit and Ansible documentation overviews.
  • Documentation

    • Reimagined docs landing page with a new visual layout and reorganized navigation into Deployment, AI Toolkit, Database, and Tools.
    • Introduced top-level nav entries and grouped/versioned community extensions and tools.
    • Simplified tab/dropdown rendering to surface the four primary doc categories.
  • Style

    • Improved dropdown/tab presentation and divider/heading styles.
  • Chores

    • Expanded ignore rules to exclude generated docs entry points and local tooling files.

Replace Products dropdown with user-focused categories: VM / Bare Metal,
Containers, pgEdge Cloud (direct link), AI Toolkit, Extensions, Tools.
Redesign welcome page with card-based layout and add Ansible placeholder.
Simplify tabs template dropdown macro by removing unused nav_items parameter.
Use stroke="currentColor" via CSS var(--md-default-fg-color--light) so
icons automatically adapt to the active color scheme. Icons: server,
container, cloud, network, package, sparkles.
Control Plane is the primary entry point for VM/bare metal deployments
as the CLI/Platform tooling is being deprecated.
- Replace VM/Bare Metal + Containers + Cloud with single Deployment dropdown
- Rename Extensions to Database with pgEdge/Community sub-sections
- Add sub-headings and HR dividers to dropdown menus
- Add community docs: pgVector, PostGIS, pgAudit, pgAdmin, pgBouncer,
  PostgREST, psycopg2 (from postgresql-docs repo)
- Update welcome page: new hero text, 4-column All Documentation section
  with sub-headings matching nav structure
- Update Key Components cards to AI Toolkit, Enterprise Repository, Spock
@coderabbitai
Copy link

coderabbitai bot commented Mar 19, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

Adds two new docs pages (AI Toolkit, Ansible), replaces the site landing page with custom HTML/CSS, restructures navigation to a typed/category model with grouped third‑party docsets, updates dropdown tab template and dropdown styling, and expands .gitignore entries for generated docset entry points and .superpowers/.

Changes

Cohort / File(s) Summary
Configuration & Ignores
\.gitignore, mkdocs.yml
Ignored generated docset entry points and .superpowers/; reworked extra.nav_categories into a typed schema (clickable title+url, heading, hr); added top-level nav entries for ai-toolkit/index.md and ansible/index.md; reorganized and versioned grouped third‑party docsets (pgvector, postgis, pgaudit, pgbouncer).
New Documentation Pages
docs/ai-toolkit/index.md, docs/ansible/index.md
Added AI Toolkit overview (MCP Server, RAG pipeline, components, connection modes, security model) and Ansible collection overview (roles, usage pointers, related resources).
Landing Page & Styling
docs/index.md, docs/stylesheets/extra.css
Replaced Markdown landing page with custom HTML/CSS layout (hero, card grids, “All Documentation” grid, footer); added CSS for dropdown headings and dividers in tabs dropdowns.
Template Updates
overrides/partials/tabs.html
Changed dropdown_menu macro signature (removed nav_items), simplified rendering to consume typed category_items (heading, hr, string/object entries), and replaced a dynamic category loop with explicit conditional dropdowns for Deployment, AI Toolkit, Database, and Tools.

Sequence Diagram(s)

sequenceDiagram
  participant Ingest as pgEdge Docloader
  participant Vector as pgEdge Vectorizer
  participant Storage as pgVector (DB)
  participant RAG as pgEdge RAG Server
  participant LLM as LLM Provider
  Ingest->>Vector: convert docs → chunks + metadata
  Vector->>Storage: write embeddings & metadata
  RAG->>Storage: retrieve hybrid results (vector + BM25)
  Storage-->>RAG: results (vectors, docs, scores)
  RAG->>LLM: assemble context + prompt → ask
  LLM-->>RAG: response
  RAG-->>Client: streamed/HTTP response
Loading
sequenceDiagram
  participant Client as Client (app/agent)
  participant MCP as pgEdge Postgres MCP Server
  participant Postgres as PostgreSQL
  participant LLM as LLM Provider
  Client->>MCP: connect (stdio or HTTP+SSE)
  MCP->>Postgres: schema inspection / SQL execution / similarity search
  Postgres-->>MCP: results
  MCP->>LLM: optional tool-derived payload (for agent)
  LLM-->>Client: response (conversation/stream)
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • AntTheLimey
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The pull request title accurately summarizes the three main changes: navigation reorganization, AI Toolkit overview addition, and welcome page redesign.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/menu-organization-v2
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
mkdocs.yml (1)

545-572: Minor: Inconsistent casing for PgBouncer.

The nav entry at line 569 uses PgBouncer while nav_categories at line 228 uses pgBouncer. This won't break functionality since they're independent lookups, but consider aligning the casing for consistency.

# Line 228 in nav_categories:
- title: pgBouncer

# Line 569 in nav:
- PgBouncer:
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@mkdocs.yml` around lines 545 - 572, The nav entry casing for the PgBouncer
section is inconsistent: change the nav key "PgBouncer" to match the existing
"pgBouncer" used in nav_categories (or vice versa) so both symbols ("pgBouncer"
and "PgBouncer") use identical casing; update the nav entry label in the
mkdocs.yml nav block to exactly match the nav_categories title to ensure
consistent naming across the config.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@mkdocs.yml`:
- Around line 545-572: The nav entry casing for the PgBouncer section is
inconsistent: change the nav key "PgBouncer" to match the existing "pgBouncer"
used in nav_categories (or vice versa) so both symbols ("pgBouncer" and
"PgBouncer") use identical casing; update the nav entry label in the mkdocs.yml
nav block to exactly match the nav_categories title to ensure consistent naming
across the config.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 452401f9-29f6-4fd7-ad0e-faa5c1aa53e8

📥 Commits

Reviewing files that changed from the base of the PR and between c03067d and d28dd25.

📒 Files selected for processing (7)
  • .gitignore
  • docs/ai-toolkit/index.md
  • docs/ansible/index.md
  • docs/index.md
  • docs/stylesheets/extra.css
  • mkdocs.yml
  • overrides/partials/tabs.html

@cloudflare-workers-and-pages
Copy link

cloudflare-workers-and-pages bot commented Mar 19, 2026

Deploying pgedge-docs with  Cloudflare Pages  Cloudflare Pages

Latest commit: 41aba1e
Status: ✅  Deploy successful!
Preview URL: https://bb53c9d6.pgedge-docs.pages.dev
Branch Preview URL: https://feature-menu-organization-v2.pgedge-docs.pages.dev

View logs

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (2)
docs/index.md (2)

518-524: Keep footer resource links in one source of truth.

This page hardcodes site links separately from config, and the Discord target here already differs from extra.discord_url in mkdocs.yml. Moving the footer into a shared partial or config-backed template will prevent silent link drift.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/index.md` around lines 518 - 524, The footer in docs/index.md hardcodes
resource links (including the Discord URL) which now conflicts with the
`extra.discord_url` value in mkdocs.yml; replace the hardcoded footer with a
single shared partial or template that reads links from site config (e.g.,
`extra.github`, `extra.site`, `extra.support`, `extra.discord_url`) so all pages
render the same source-of-truth links and update any references in index.md to
include that partial/template instead of inline HTML.

358-513: Drive the home-page catalog from the same data as the dropdowns.

This block manually repeats the categories and URLs already defined in mkdocs.yml > extra.nav_categories. The next navigation change will need two edits, and the landing page will drift. Rendering this section from a shared partial/data source would keep them aligned.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/index.md` around lines 358 - 513, The "All Documentation" block in
docs/index.md duplicates navigation defined in mkdocs.yml under
extra.nav_categories, causing drift; replace the hard-coded HTML (the div with
class "extensions-grid" and its children) with a template-driven rendering that
consumes extra.nav_categories from mkdocs.yml (or the site data available to the
MkDocs/Macros/Material templates) so the landing page and dropdowns come from
the same source; locate the manual block around the "All Documentation" heading
in docs/index.md and implement a partial or template loop that iterates over
extra.nav_categories to emit the extension-group / extension-list structure
(ensuring keys like title, items, href, and desc from nav_categories are used).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/index.md`:
- Around line 206-225: The subgroup labels and decorative dividers are currently
styled via .extension-list .ext-subheading and .extension-list .ext-divider but
are being rendered as list items which creates inaccessible empty/non-link <li>
elements; update the markup so ext-subheading is a real heading element (e.g.,
<h3> or <span role="heading">) placed outside or above its own <ul> and move
ext-divider out of the <ul> (or render it as a purely decorative element with
aria-hidden="true"), and adjust the CSS selectors for .extension-list
.ext-subheading and .extension-list .ext-divider accordingly so they no longer
assume list-item semantics.

---

Nitpick comments:
In `@docs/index.md`:
- Around line 518-524: The footer in docs/index.md hardcodes resource links
(including the Discord URL) which now conflicts with the `extra.discord_url`
value in mkdocs.yml; replace the hardcoded footer with a single shared partial
or template that reads links from site config (e.g., `extra.github`,
`extra.site`, `extra.support`, `extra.discord_url`) so all pages render the same
source-of-truth links and update any references in index.md to include that
partial/template instead of inline HTML.
- Around line 358-513: The "All Documentation" block in docs/index.md duplicates
navigation defined in mkdocs.yml under extra.nav_categories, causing drift;
replace the hard-coded HTML (the div with class "extensions-grid" and its
children) with a template-driven rendering that consumes extra.nav_categories
from mkdocs.yml (or the site data available to the MkDocs/Macros/Material
templates) so the landing page and dropdowns come from the same source; locate
the manual block around the "All Documentation" heading in docs/index.md and
implement a partial or template loop that iterates over extra.nav_categories to
emit the extension-group / extension-list structure (ensuring keys like title,
items, href, and desc from nav_categories are used).

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 37457e10-d6e5-4689-95d2-2e4ca3253f6c

📥 Commits

Reviewing files that changed from the base of the PR and between d28dd25 and a9f0916.

📒 Files selected for processing (2)
  • docs/index.md
  • mkdocs.yml

Comment on lines +206 to +225
/* Sub-headings within extension lists */
.extension-list .ext-subheading {
font-size: 0.7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.5px;
color: var(--md-default-fg-color--light);
padding: 0.6rem 0 0.2rem;
border-bottom: none;
}

.extension-list .ext-subheading:first-child {
padding-top: 0;
}

/* Dividers within extension lists */
.extension-list .ext-divider {
padding: 0;
border-bottom: 1px solid var(--md-default-fg-color--lightest);
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Don’t render subgroup labels and dividers as <li> items.

These lists mix real links with subgroup labels and empty separators, so assistive tech will count blank/non-link items throughout the catalog. Use real headings plus separate <ul> blocks, or move decorative dividers outside the list semantics.

Also applies to: 366-511

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/index.md` around lines 206 - 225, The subgroup labels and decorative
dividers are currently styled via .extension-list .ext-subheading and
.extension-list .ext-divider but are being rendered as list items which creates
inaccessible empty/non-link <li> elements; update the markup so ext-subheading
is a real heading element (e.g., <h3> or <span role="heading">) placed outside
or above its own <ul> and move ext-divider out of the <ul> (or render it as a
purely decorative element with aria-hidden="true"), and adjust the CSS selectors
for .extension-list .ext-subheading and .extension-list .ext-divider accordingly
so they no longer assume list-item semantics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants