Skip to content

feat: SEO fixes#1271

Open
aaguiarz wants to merge 11 commits into
mainfrom
fix/seo
Open

feat: SEO fixes#1271
aaguiarz wants to merge 11 commits into
mainfrom
fix/seo

Conversation

@aaguiarz
Copy link
Copy Markdown
Member

@aaguiarz aaguiarz commented May 25, 2026

Description

  • SEO and content overhaul: adds a /learn hub (FGA, ReBAC, RBAC vs ReBAC, ABAC vs ReBAC, Zanzibar, policy engines), industry and use-case pages (healthcare, banking, CRM, multi-tenant SaaS, RAG, MCP, microservices, AI agents), and an expanded landing page.
  • Adds per-page meta descriptions, FAQ/HowTo JSON-LD, and a sitewide BreadcrumbList JSON-LD via a swizzled Root.tsx.
  • Fixes H1s, tightens existing concept pages, and updates llms.txt / robots.txt.

https://openfga.dev/pr-preview/pr-1271/docs/getting-started

What problem is being solved?

How is it being solved?

What changes are made to solve it?

References

Review Checklist

  • I have clicked on "allow edits by maintainers".
  • I have added documentation for new/changed functionality in this PR or in a PR to openfga.dev [Provide a link to any relevant PRs in the references section above]
  • The correct base branch is being used, if not main
  • I have added tests to validate that the change in functionality is working as expected

Summary by CodeRabbit

  • New Features

    • Added comprehensive industry-specific authorization guides (healthcare, banking, e-commerce, HR, CRM, LMS, applicant tracking systems).
    • Added use case patterns for AI agents, RAG pipelines, multi-tenant SaaS, and microservices authorization.
    • Added learning resources covering ReBAC, Zanzibar, fine-grained authorization, and authorization models.
  • Improvements

    • Enhanced website navigation with dedicated Industries, Use Cases, and Learn sections.
    • Improved SEO with structured data markup (JSON-LD).
    • Enhanced accessibility and link security attributes.
  • Documentation

    • Updated OpenFGA configuration documentation to v1.16.0.

Review Change Stack

aaguiarz added 7 commits May 20, 2026 23:01
- Add per-page meta descriptions (140-160 chars) on key pages
- Retitle authorization-concepts page for SEO
- Fix homepage H1 by removing SVG <title> leak (HeroLogo)
- Install @stackql/docusaurus-plugin-structured-data
- Emit Organization (CNCF/Linux Foundation), WebSite + SearchAction,
  BreadcrumbList, and SoftwareApplication JSON-LD
- Add FAQPage JSON-LD to authorization-concepts (7 entries)
- Add HowTo JSON-LD to getting-started overview (9 steps)
Copilot AI review requested due to automatic review settings May 25, 2026 20:53
@aaguiarz aaguiarz requested review from a team as code owners May 25, 2026 20:53
@linux-foundation-easycla
Copy link
Copy Markdown

linux-foundation-easycla Bot commented May 25, 2026

CLA Signed
The committers listed above are authorized under a signed CLA.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Important

Review skipped

Auto incremental reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 73a40823-f654-4883-a8aa-edc1f3e69718

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

This PR substantially expands the OpenFGA documentation with new industry-specific guides, authorization learning materials, and practical use cases. It integrates schema.org JSON-LD structured data across the site for SEO, updates Docusaurus configuration with social meta tags, improves homepage accessibility, and refreshes navigation sidebars to organize the new content.

Changes

Documentation Expansion, Structured Data, and Site Infrastructure

Layer / File(s) Summary
Industry-specific authorization documentation
docs/content/industries/*
Eight new industry pages (healthcare, banking, e-commerce, CRM, LMS, HR, applicant tracking) plus overview, each describing domain-tailored FGA authorization models, core resources/relations, key behaviors, feature mappings, and common extensions.
Authorization learning and concepts
docs/content/learn/*, docs/content/authorization-concepts.mdx
Eight new learning pages introducing ReBAC, Zanzibar, ABAC vs. ReBAC, RBAC vs. ReBAC, fine-grained authorization, and policy engines vs. relationship engines, plus overview; updated authorization-concepts.mdx with FAQ JSON-LD export and refined cross-links.
Application and AI agent use cases
docs/content/use-cases/*
Six new use-case pages covering multi-tenant SaaS, microservices, RAG, MCP server authorization, AI agent authorization, and overview; each includes practical patterns, OpenFGA DSL examples, and links to related guidance.
Configuration update and getting started overview
docs/content/getting-started/setup-openfga/configuration.mdx, docs/content/getting-started/overview.mdx
Updated configuration documentation from v1.8.9 to v1.16.0 with new server options (breadth limits, ListObjects pipeline, gRPC, tracing, caching, throttling); added HowTo JSON-LD to getting started overview.
JSON-LD structured data across site
src/theme/Root.tsx, src/pages/index.tsx, docusaurus.config.js
Root.tsx generates breadcrumb and homepage structured data from URL slugs; homepage injects SoftwareApplication schema; Docusaurus config adds OpenGraph and Twitter meta tags for social previews.
Navigation sidebar and intro updates
docs/sidebars.js, docs/content/intro.mdx
Extended sidebar with three new categories (Industries, Learn, Use Cases) linking new pages; updated intro description and added RelatedSection links to documentation hubs.
Accessibility and external link safety
src/features/LandingPage/HeroHeader/*, src/features/LandingPage/FeaturesSection/index.tsx, src/theme/NotFound.tsx
Added aria-hidden to hero SVG, added visually hidden "OpenFGA" text span in h1, added rel="noopener noreferrer" to all external links for security and accessibility compliance.
Agent documentation and static files
docs/content/modeling/agents/*, static/robots.txt, static/llms.txt, blog/fine-grained-news-2024-10.md
Updated agent page descriptions to clarify RAG and MCP authorization patterns; added robots.txt with crawler directives; restructured llms.txt index with new documentation sections; updated blog closing paragraph.

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly Related PRs

  • openfga/openfga.dev#1072: Builds the generator that produces static/llms.txt, which this PR updates directly.
  • openfga/openfga.dev#1241: Also modifies docs/content/getting-started/setup-openfga/configuration.mdx to update OpenFGA version and configuration options table.
  • openfga/openfga.dev#1222: Introduces agents overview documentation that overlaps with this PR's agent-related description updates.

Suggested Reviewers

  • rhamzeh
  • curfew-marathon
  • ttrzeng
🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive The title 'feat: SEO fixes' is vague and does not clearly convey the primary scope of changes, which spans multiple major content areas including new /learn, /industries, /use-cases hubs, JSON-LD structured data, H1 fixes, and updated robots.txt/llms.txt. Consider a more specific title that highlights the main changes, such as 'feat: expand documentation with /learn and /industries hubs plus SEO structured data' or focus on the single most impactful change if the scope is intentionally broad.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ 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 fix/seo

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.

@socket-security
Copy link
Copy Markdown

socket-security Bot commented May 25, 2026

No dependency changes detected. Learn more about Socket for GitHub.

👍 No dependency changes detected in pull request

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR is a broad SEO/content update for the Docusaurus-based openfga.dev site: it adds new “Learn”, “Industries”, and “Use Cases” documentation hubs, expands structured data/metadata, and makes a few accessibility and crawling/indexing adjustments.

Changes:

  • Adds new doc sections/pages for Learn concepts, Industries, and Use Cases (plus updates sidebar navigation and llms.txt).
  • Introduces/expands structured data (JSON-LD) and social metadata, including a swizzled Root.tsx for sitewide injection.
  • Tweaks landing page semantics/accessibility and hardens external links (rel="noopener noreferrer"), plus adds robots.txt.

Reviewed changes

Copilot reviewed 39 out of 41 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
static/robots.txt Adds robots directives and sitemap reference.
static/llms.txt Adds new documentation sections/links for agents, industries, use cases, and learn hub.
src/theme/Root.tsx Injects BreadcrumbList JSON-LD and noindex meta for Fine-Grained News posts.
src/theme/NotFound.tsx Adds rel="noopener noreferrer" to external GitHub issues link.
src/pages/index.tsx Adds homepage meta description override and SoftwareApplication JSON-LD.
src/features/LandingPage/HeroHeader/index.tsx Adds screen-reader-only text inside the H1 to improve accessibility.
src/features/LandingPage/HeroHeader/HeroLogo.tsx Hides SVG from screen readers to avoid duplicate announcements.
src/features/LandingPage/FeaturesSection/index.tsx Adds rel="noopener noreferrer" to external links in HTML strings.
package.json Adds @stackql/docusaurus-plugin-structured-data dependency.
package-lock.json Locks new structured-data plugin and its transitive dependencies.
docusaurus.config.js Enables the structured-data plugin and configures metadata/structuredData settings.
docs/sidebars.js Adds new sidebar categories for Industries, Use Cases, and Learn.
docs/content/use-cases/rag-authorization.mdx New use-case page covering RAG authorization.
docs/content/use-cases/overview.mdx New overview page for Use Cases hub.
docs/content/use-cases/multi-tenant-saas.mdx New use-case page for multi-tenant SaaS patterns.
docs/content/use-cases/microservices-authorization.mdx New use-case page for microservices authorization patterns.
docs/content/use-cases/mcp-server-authorization.mdx New use-case page for MCP server authorization patterns.
docs/content/use-cases/ai-agent-authorization.mdx New use-case page for AI agent authorization patterns.
docs/content/modeling/agents/rag-authorization.mdx Updates meta description for agent RAG modeling guide.
docs/content/modeling/agents/overview.mdx Updates meta description for agents overview.
docs/content/modeling/agents/mcp-authorization.mdx Updates meta description for MCP modeling guide.
docs/content/learn/overview.mdx New Learn hub overview page.
docs/content/learn/zanzibar.mdx New Learn concept page for Zanzibar.
docs/content/learn/rebac.mdx New Learn concept page for ReBAC.
docs/content/learn/rbac-vs-rebac.mdx New Learn comparison page for RBAC vs ReBAC.
docs/content/learn/abac-vs-rebac.mdx New Learn comparison page for ABAC vs ReBAC.
docs/content/learn/fine-grained-authorization.mdx New Learn concept page for fine-grained authorization.
docs/content/learn/policy-engine.mdx New Learn concept page for policy vs relationship engines.
docs/content/intro.mdx Updates intro description and adds cards linking to new hubs.
docs/content/industries/overview.mdx New Industries hub overview page.
docs/content/industries/healthcare.mdx New industry page for healthcare modeling patterns.
docs/content/industries/banking.mdx New industry page for banking/fintech modeling patterns.
docs/content/industries/ecommerce.mdx New industry page for e-commerce modeling patterns.
docs/content/industries/human-resources.mdx New industry page for HR/HRIS modeling patterns.
docs/content/industries/crm.mdx New industry page for CRM modeling patterns.
docs/content/industries/lms.mdx New industry page for LMS/EdTech modeling patterns.
docs/content/industries/applicant-tracking-system.mdx New industry page for ATS/recruiting modeling patterns.
docs/content/getting-started/setup-openfga/configuration.mdx Updates config reference version and expands config options table.
docs/content/getting-started/overview.mdx Adds page description and HowTo JSON-LD.
docs/content/authorization-concepts.mdx Rewrites concepts page and adds FAQPage JSON-LD + updated metadata.
blog/fine-grained-news-2024-10.md Minor formatting/spacing adjustment at end of post.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/theme/Root.tsx
Comment thread src/theme/Root.tsx
Comment thread docs/content/use-cases/rag-authorization.mdx Outdated
Comment thread docs/content/use-cases/multi-tenant-saas.mdx Outdated
Comment thread docs/content/use-cases/microservices-authorization.mdx Outdated
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 25, 2026

PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://openfga.github.io/openfga.dev/pr-preview/pr-1271/

Built to branch gh-pages at 2026-05-26 15:59 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

@aaguiarz aaguiarz changed the title feat: (WIP) Several SEO fixes feat: SEO fixes May 25, 2026
@aaguiarz
Copy link
Copy Markdown
Member Author

@CodeRabbit review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor

@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: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content/getting-started/setup-openfga/configuration.mdx`:
- Line 223: The Type column for planner.evictionThreshold is missing; update the
table row for planner.evictionThreshold (identifier
OPENFGA_PLANNER_EVICTION_THRESHOLD / CLI flag planner-eviction-threshold) to
explicitly specify its type (e.g., "duration" or "time duration" to match
adjacent planner fields) so readers know the expected value format.

In `@src/theme/Root.tsx`:
- Line 96: The breadcrumb JSON-LD is being skipped for single-segment pages due
to the guard "if (segments.length < 2) return null;"; change this to only bail
out when there are no segments (e.g., "if (segments.length === 0) return null;")
so top-level paths like "/docs" and "/learn" still generate breadcrumbs, and
adjust any downstream logic that assumes at least two segments to handle a
single-segment case in the breadcrumb assembly in Root.tsx (look for the
"segments" variable and the JSON-LD/breadcrumb construction code).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8fd7cfe2-b1fc-43b9-ac4a-c69f32812c4c

📥 Commits

Reviewing files that changed from the base of the PR and between d557d42 and 64f78c4.

📒 Files selected for processing (39)
  • blog/fine-grained-news-2024-10.md
  • docs/content/authorization-concepts.mdx
  • docs/content/getting-started/overview.mdx
  • docs/content/getting-started/setup-openfga/configuration.mdx
  • docs/content/industries/applicant-tracking-system.mdx
  • docs/content/industries/banking.mdx
  • docs/content/industries/crm.mdx
  • docs/content/industries/ecommerce.mdx
  • docs/content/industries/healthcare.mdx
  • docs/content/industries/human-resources.mdx
  • docs/content/industries/lms.mdx
  • docs/content/industries/overview.mdx
  • docs/content/intro.mdx
  • docs/content/learn/abac-vs-rebac.mdx
  • docs/content/learn/fine-grained-authorization.mdx
  • docs/content/learn/overview.mdx
  • docs/content/learn/policy-engine.mdx
  • docs/content/learn/rbac-vs-rebac.mdx
  • docs/content/learn/rebac.mdx
  • docs/content/learn/zanzibar.mdx
  • docs/content/modeling/agents/mcp-authorization.mdx
  • docs/content/modeling/agents/overview.mdx
  • docs/content/modeling/agents/rag-authorization.mdx
  • docs/content/use-cases/ai-agent-authorization.mdx
  • docs/content/use-cases/mcp-server-authorization.mdx
  • docs/content/use-cases/microservices-authorization.mdx
  • docs/content/use-cases/multi-tenant-saas.mdx
  • docs/content/use-cases/overview.mdx
  • docs/content/use-cases/rag-authorization.mdx
  • docs/sidebars.js
  • docusaurus.config.js
  • src/features/LandingPage/FeaturesSection/index.tsx
  • src/features/LandingPage/HeroHeader/HeroLogo.tsx
  • src/features/LandingPage/HeroHeader/index.tsx
  • src/pages/index.tsx
  • src/theme/NotFound.tsx
  • src/theme/Root.tsx
  • static/llms.txt
  • static/robots.txt

Comment thread docs/content/getting-started/setup-openfga/configuration.mdx
Comment thread src/theme/Root.tsx
@Siddhant-K-code
Copy link
Copy Markdown
Member

Already feels like a good upgrade. Feel free to merge it. We can incrementally improve it!

name: 'What is Policy-Based Access Control?',
acceptedAnswer: {
'@type': 'Answer',
text: "Policy-Based Access Control (PBAC) manages authorization policies centrally, external to application code. Most ABAC implementations are also PBAC. OpenFGA's model DSL is itself a policy: committed to Git, reviewed via PR, deployed like any other code.",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
text: "Policy-Based Access Control (PBAC) manages authorization policies centrally, external to application code. Most ABAC implementations are also PBAC. OpenFGA's model DSL is itself a policy: committed to Git, reviewed via PR, deployed like any other code.",
text: "Policy-Based Access Control (PBAC) manages authorization policies centrally, external to application code. Most ABAC implementations are also PBAC. OpenFGA's authorization model DSL is functionally similar to a policy: it can be committed, PR reviewed and CI/CD deployed.",

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I'm not sure we should add OpenFGA to this though - it's better to focus on answering the question and maybe adding another question: "How does OpenFGA compare to Policy-Based Access Control?"

Same note applies to the questions above and below

name: 'What is Zanzibar?',
acceptedAnswer: {
'@type': 'Answer',
text: "Zanzibar is Google's global authorization system, used by Drive, YouTube, Calendar, and Cloud. It stores object-relation-user tuples and answers checks and reverse queries against the resulting graph. OpenFGA implements the Zanzibar model on your existing databases.",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
text: "Zanzibar is Google's global authorization system, used by Drive, YouTube, Calendar, and Cloud. It stores object-relation-user tuples and answers checks and reverse queries against the resulting graph. OpenFGA implements the Zanzibar model on your existing databases.",
text: "Zanzibar is Google's global authorization system, used by Drive, YouTube, Calendar, and Cloud. It stores object-relation-user tuples and answers checks and reverse queries against the resulting graph. OpenFGA is an authorization service, similar to Zanzibar, and is open source and can be used with your data and services.",

Comment thread src/pages/index.tsx

import { QuickStartSection, FeaturesSection, ResourcesSection, HeroHeader } from '@features/LandingPage';

const softwareApplicationJsonLd = {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Verified this on https://search.google.com/test/rich-results and it works, so good to go as is - but we may want to add:

  • owner, we can point to CNCF
{
  name: "Cloud Native Computing Foundation",
  alternateName: "CNCF",
  url: "https://www.cncf.io/"
}

Comment thread src/theme/Root.tsx
sameAs: [
'https://github.com/openfga',
'https://twitter.com/openfga',
'https://hachyderm.io/@openfga',
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
'https://hachyderm.io/@openfga',
'https://mastodon.social/@openfga',

Comment thread src/theme/Root.tsx
'https://github.com/openfga',
'https://twitter.com/openfga',
'https://hachyderm.io/@openfga',
'https://openfga.dev/community',
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
'https://openfga.dev/community',
'https://openfga.dev/community',
'https://www.youtube.com/@OpenFGA',
'https://www.linkedin.com/company/openfga/',

Comment thread src/theme/Root.tsx
logo: 'https://openfga.dev/img/openfga_logo.svg',
sameAs: [
'https://github.com/openfga',
'https://twitter.com/openfga',
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Suggested change
'https://twitter.com/openfga',
'https://x.com/openfga',

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.

4 participants