Conversation
- 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)
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
WalkthroughThis 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. ChangesDocumentation Expansion, Structured Data, and Site Infrastructure
🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly Related PRs
Suggested Reviewers
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
No dependency changes detected. Learn more about Socket for GitHub. 👍 No dependency changes detected in pull request |
There was a problem hiding this comment.
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.tsxfor sitewide injection. - Tweaks landing page semantics/accessibility and hardens external links (
rel="noopener noreferrer"), plus addsrobots.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.
|
|
@CodeRabbit review |
✅ Actions performedReview triggered.
|
There was a problem hiding this comment.
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
📒 Files selected for processing (39)
blog/fine-grained-news-2024-10.mddocs/content/authorization-concepts.mdxdocs/content/getting-started/overview.mdxdocs/content/getting-started/setup-openfga/configuration.mdxdocs/content/industries/applicant-tracking-system.mdxdocs/content/industries/banking.mdxdocs/content/industries/crm.mdxdocs/content/industries/ecommerce.mdxdocs/content/industries/healthcare.mdxdocs/content/industries/human-resources.mdxdocs/content/industries/lms.mdxdocs/content/industries/overview.mdxdocs/content/intro.mdxdocs/content/learn/abac-vs-rebac.mdxdocs/content/learn/fine-grained-authorization.mdxdocs/content/learn/overview.mdxdocs/content/learn/policy-engine.mdxdocs/content/learn/rbac-vs-rebac.mdxdocs/content/learn/rebac.mdxdocs/content/learn/zanzibar.mdxdocs/content/modeling/agents/mcp-authorization.mdxdocs/content/modeling/agents/overview.mdxdocs/content/modeling/agents/rag-authorization.mdxdocs/content/use-cases/ai-agent-authorization.mdxdocs/content/use-cases/mcp-server-authorization.mdxdocs/content/use-cases/microservices-authorization.mdxdocs/content/use-cases/multi-tenant-saas.mdxdocs/content/use-cases/overview.mdxdocs/content/use-cases/rag-authorization.mdxdocs/sidebars.jsdocusaurus.config.jssrc/features/LandingPage/FeaturesSection/index.tsxsrc/features/LandingPage/HeroHeader/HeroLogo.tsxsrc/features/LandingPage/HeroHeader/index.tsxsrc/pages/index.tsxsrc/theme/NotFound.tsxsrc/theme/Root.tsxstatic/llms.txtstatic/robots.txt
|
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.", |
There was a problem hiding this comment.
| 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.", |
There was a problem hiding this comment.
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.", |
There was a problem hiding this comment.
| 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.", |
|
|
||
| import { QuickStartSection, FeaturesSection, ResourcesSection, HeroHeader } from '@features/LandingPage'; | ||
|
|
||
| const softwareApplicationJsonLd = { |
There was a problem hiding this comment.
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/"
}
- softwareHelp->discussionUrl: https://github.com/orgs/openfga/discussions
- keywords:
open source, security, permissions, authorization, rbac, entitlements, abac, fga, pbac, fine grained access control, zanzibar, fine grained authorization, rebac, openfga - isAccessibleForFree: true
- releaseNotes: https://github.com/openfga/openfga/blob/main/CHANGELOG.md
- applicationSubCategory: Authorization Service
| sameAs: [ | ||
| 'https://github.com/openfga', | ||
| 'https://twitter.com/openfga', | ||
| 'https://hachyderm.io/@openfga', |
There was a problem hiding this comment.
| 'https://hachyderm.io/@openfga', | |
| 'https://mastodon.social/@openfga', |
| 'https://github.com/openfga', | ||
| 'https://twitter.com/openfga', | ||
| 'https://hachyderm.io/@openfga', | ||
| 'https://openfga.dev/community', |
There was a problem hiding this comment.
| 'https://openfga.dev/community', | |
| 'https://openfga.dev/community', | |
| 'https://www.youtube.com/@OpenFGA', | |
| 'https://www.linkedin.com/company/openfga/', |
| logo: 'https://openfga.dev/img/openfga_logo.svg', | ||
| sameAs: [ | ||
| 'https://github.com/openfga', | ||
| 'https://twitter.com/openfga', |
There was a problem hiding this comment.
| 'https://twitter.com/openfga', | |
| 'https://x.com/openfga', |
Description
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
mainSummary by CodeRabbit
New Features
Improvements
Documentation