Add DocFX documentation site with GitHub Pages#76
Conversation
Replace bloated README with concise quick-start and link to full docs. Move all detailed examples and guides into docs/articles/: - Getting Started (setup, config, DI, basic auth) - HTML & URL to PDF (Chromium features, cookies, page properties) - Screenshots (HTML/URL capture, format/quality options) - Office Conversion (LibreOffice options, image compression, watermarks) - PDF Manipulation (standalone operations, cross-cutting options) - Advanced Features (webhooks, value objects, multi-URL merge) DocFX auto-generates API reference from XML doc comments. GitHub Actions workflow deploys to GitHub Pages on push to master/develop when docs or source changes.
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 16 minutes and 58 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (2)
📝 WalkthroughWalkthroughAdded a complete DocFX-based documentation site, new article pages and TOC, a README overhaul, docs .gitignore, and a GitHub Actions workflow that builds the site and deploys it to GitHub Pages. Changes
Sequence Diagram(s)sequenceDiagram
participant Dev as Developer (push/docs change)
participant GH as GitHub (repo)
participant Runner as Actions Runner
participant DocFX as DocFX (dotnet tool)
participant Artifact as Upload Artifact
participant Deploy as Deploy Pages
participant Pages as GitHub Pages (site)
Dev->>GH: push to master/develop or manual dispatch
GH->>Runner: start workflow (docs.yml)
Runner->>Runner: checkout repo\ninstall dotnet 8.x\ninstall docfx
Runner->>DocFX: run docfx build (docs/docfx.json)
DocFX-->>Artifact: produce site in docs/_site
Runner->>Artifact: upload-pages-artifact
Artifact-->>Deploy: artifact available
Deploy->>Pages: deploy artifact to GitHub Pages
Pages-->>GH: site published (page_url)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ 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 |
Add example callouts at the top of each article linking to the relevant console app examples on GitHub.
There was a problem hiding this comment.
🧹 Nitpick comments (2)
docs/articles/getting-started.md (1)
53-54: Review nameof() usage for configuration section.Line 54 uses
nameof(GotenbergSharpClient)to reference the configuration section. This assumes a class namedGotenbergSharpClientexists. If the section name is just a string convention, using a hardcoded string"GotenbergSharpClient"would be more explicit and avoid potential confusion.Alternatively, if there is a dedicated options class (like
GotenbergSharpClientOptions), consider usingnameof(GotenbergSharpClientOptions)if the section name matches, or just use the string literal.💡 Possible alternatives
If no
GotenbergSharpClientclass exists, use a string literal:services.AddOptions<GotenbergSharpClientOptions>() - .Bind(Configuration.GetSection(nameof(GotenbergSharpClient))); + .Bind(Configuration.GetSection("GotenbergSharpClient")); services.AddGotenbergSharpClient();Or define a constant for reusability:
private const string ConfigSection = "GotenbergSharpClient"; services.AddOptions<GotenbergSharpClientOptions>() .Bind(Configuration.GetSection(ConfigSection));🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/articles/getting-started.md` around lines 53 - 54, The code uses nameof(GotenbergSharpClient) to locate the configuration section but that symbol may not exist; update the Configuration.GetSection call to explicitly reference the correct section name (either the string literal "GotenbergSharpClient" or nameof(GotenbergSharpClientOptions) if the options class name is the intended section) so the bind targets the right section; if reused elsewhere consider introducing a constant (e.g., ConfigSection) and use that instead when calling services.AddOptions<GotenbergSharpClientOptions>().Bind(Configuration.GetSection(...)).docs/docfx.json (1)
19-19: Review glob pattern syntax.Line 19 uses
"api/**.yml"which is non-standard DocFX globbing. The standard pattern for "all .yml files under api/" would be"api/**/*.yml". Similarly, line 23 uses"articles/**.md"instead of"articles/**/*.md".While DocFX may accept
**without/*, using the explicit/**/*pattern is more widely recognized and less ambiguous.📝 Proposed fix for glob patterns
{ - "files": ["api/**.yml", "api/index.md"] + "files": ["api/**/*.yml", "api/index.md"] }, { "files": [ - "articles/**.md", + "articles/**/*.md", "articles/**/toc.yml",🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@docs/docfx.json` at line 19, Replace the non-standard glob patterns used in docfx.json: update the string "api/**.yml" to "api/**/*.yml" and update "articles/**.md" to "articles/**/*.md" so the file globs correctly match all .yml files under api/ and all .md files under articles/ (look for the exact literal patterns "api/**.yml" and "articles/**.md" in the JSON and replace them).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@docs/articles/getting-started.md`:
- Around line 53-54: The code uses nameof(GotenbergSharpClient) to locate the
configuration section but that symbol may not exist; update the
Configuration.GetSection call to explicitly reference the correct section name
(either the string literal "GotenbergSharpClient" or
nameof(GotenbergSharpClientOptions) if the options class name is the intended
section) so the bind targets the right section; if reused elsewhere consider
introducing a constant (e.g., ConfigSection) and use that instead when calling
services.AddOptions<GotenbergSharpClientOptions>().Bind(Configuration.GetSection(...)).
In `@docs/docfx.json`:
- Line 19: Replace the non-standard glob patterns used in docfx.json: update the
string "api/**.yml" to "api/**/*.yml" and update "articles/**.md" to
"articles/**/*.md" so the file globs correctly match all .yml files under api/
and all .md files under articles/ (look for the exact literal patterns
"api/**.yml" and "articles/**.md" in the JSON and replace them).
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: fb5ac1a9-7704-44cb-b4a5-57d43a38a25b
⛔ Files ignored due to path filters (1)
docs/images/logo.pngis excluded by!**/*.png
📒 Files selected for processing (14)
.github/workflows/docs.ymlREADME.mddocs/.gitignoredocs/api/index.mddocs/articles/advanced-features.mddocs/articles/getting-started.mddocs/articles/html-and-url-to-pdf.mddocs/articles/office-conversion.mddocs/articles/pdf-manipulation.mddocs/articles/screenshots.mddocs/articles/toc.ymldocs/docfx.jsondocs/index.mddocs/toc.yml
- Use standard api/**/*.yml and articles/**/*.md glob patterns - Use string literal "GotenbergSharpClient" instead of nameof() in docs examples for clearer copy-paste usage
Summary
Documentation Structure
Setup Required
After merging, enable GitHub Pages in repo settings:
docs.ymlworkflow will deploy automaticallyTest plan
Summary by CodeRabbit
Documentation
Chores