Skip to content

docs: simplify README and create Astro Starlight documentation pages#13

Merged
sheepla merged 1 commit into
masterfrom
devin/1777641381-docs-simplification
May 1, 2026
Merged

docs: simplify README and create Astro Starlight documentation pages#13
sheepla merged 1 commit into
masterfrom
devin/1777641381-docs-simplification

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented May 1, 2026

Copy link
Copy Markdown
Contributor

Summary

Simplifies the README.md from ~850 lines to ~60 lines and migrates all detailed content into Astro Starlight documentation pages under docs/src/content/docs/.

README changes

  • Removed Table of Contents, Features, Why?, Usage, and CSV extension sections
  • Kept About, Packages, Installation (added dotnet add package commands for nuget.org), Author, and License
  • Added a Documentation section linking to the docs site

Documentation pages created (16 new files)

  • Getting Started: installation.mdx, quick-start.mdx
  • Guides (9 pages): defining-endpoints.mdx, request-binding.mdx, response-types.mdx, validation.mdx, authorization.mdx, error-responses.mdx, endpoint-groups.mdx, filters.mdx, http-context.mdx
  • Extensions (5 pages): csv-helper/index.mdx, csv-helper/csv-import.mdx, csv-helper/csv-export.mdx, csv-helper/row-validation.mdx, csv-helper/class-map.mdx

Other changes

  • Deleted quick-start/about.mdx (reorganized into getting-started/)
  • Updated index.mdx with hero actions, About + code example, Core concepts, Why REPR comparison table, and Next steps CardGrid
  • Configured sidebar in astro.config.mjs with Getting Started, Guides, and Extensions sections
  • Added cross-links between related documentation pages
  • CSV extension install commands updated to use dotnet add package AxisEndpoints.Extensions.CsvHelper (nuget.org)

Review & Testing Checklist for Human

  • Verify the simplified README reads well and has no broken links
  • Check that code examples in the doc pages match the original README content (no unintentional modifications)
  • Run cd docs && npm run build to confirm all pages build without errors (verified locally — 18 pages built successfully)
  • Review cross-links between pages to ensure they resolve correctly
  • Verify the sidebar navigation order matches the specification

Notes

  • All code examples were migrated from the existing README without modification
  • The :::note Starlight admonition syntax is used in error-responses.mdx for the ProducesSuccess note
  • The docs build produces a sitemap warning (requires site in astro.config) — this is pre-existing and unrelated to this change

Link to Devin session: https://app.devin.ai/sessions/52178bbee89c430d9588a57dfcd35a5e
Requested by: @sheepla


Open in Devin Review

Summary by CodeRabbit

  • Documentation

    • Comprehensive documentation structure added, including Getting Started guides (Installation, Quick Start), feature guides (Authorization, Validation, Request Binding, Response Types, Filters, HTTP Context, Endpoint Groups, Defining Endpoints, Error Responses), and CSV extension documentation.
    • Updated sidebar navigation for improved discoverability.
    • Streamlined README with consolidated information and reference to full documentation.
  • Chores

    • Documentation reorganized for better user experience and clarity.

- Simplify README.md from ~850 lines to ~60 lines, keeping About, Packages, Installation, and adding a link to the documentation site
- Delete quick-start/about.mdx (reorganized into getting-started/)
- Update index.mdx with hero actions, About section with code example, Core concepts, Why REPR comparison table, and Next steps CardGrid
- Create getting-started/installation.mdx and quick-start.mdx
- Create 9 guide pages: defining-endpoints, request-binding, response-types, validation, authorization, error-responses, endpoint-groups, filters, http-context
- Create 5 CSV extension pages: index, csv-import, csv-export, row-validation, class-map
- Configure sidebar in astro.config.mjs with Getting Started, Guides, and Extensions sections
- Add cross-links between related documentation pages

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@coderabbitai

coderabbitai Bot commented May 1, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

Restructures project documentation by migrating content from a bloated README into a comprehensive Astro documentation site with organized guides, getting-started materials, and CSV extension documentation while reducing the README to minimal content linking to ./docs/.

Changes

Cohort / File(s) Summary
README Restructuring
README.md
Removes large Table of Contents and detailed sections (Features, Usage, CSV guide), retaining package description and adding new "Documentation" section pointing to ./docs/ folder.
Documentation Site Configuration
docs/astro.config.mjs
Expands sidebar configuration from placeholder to explicit navigation structure defining "Getting Started," "Guides," and "Extensions" sections with slug-based routing.
Getting Started Guides
docs/src/content/docs/getting-started/installation.mdx, docs/src/content/docs/getting-started/quick-start.mdx
New pages documenting NuGet package installation (standard and local .nupkg) and step-by-step quick start for ASP.NET Core Minimal APIs with endpoint registration and example POST endpoint implementation.
Core Endpoint Guides
docs/src/content/docs/guides/defining-endpoints.mdx, docs/src/content/docs/guides/response-types.mdx, docs/src/content/docs/guides/request-binding.mdx
New pages covering endpoint definition patterns (request/no-response/no-request variants), response type scenarios and helpers (Response<TBody>, Response.Empty, Response.NoContent), and request binding conventions (route/query/custom BindAsync).
Advanced Endpoint Guides
docs/src/content/docs/guides/endpoint-groups.mdx, docs/src/content/docs/guides/authorization.mdx, docs/src/content/docs/guides/filters.mdx, docs/src/content/docs/guides/validation.mdx, docs/src/content/docs/guides/error-responses.mdx, docs/src/content/docs/guides/http-context.mdx
New pages documenting endpoint grouping with inheritance, role/policy-based authorization, filter registration and execution, DataAnnotations and FluentValidation integration, error shape registration via ProducesError, and EndpointContext HTTP access patterns.
CSV Extension Documentation
docs/src/content/docs/extensions/csv-helper/index.mdx, docs/src/content/docs/extensions/csv-helper/csv-import.mdx, docs/src/content/docs/extensions/csv-helper/csv-export.mdx, docs/src/content/docs/extensions/csv-helper/row-validation.mdx, docs/src/content/docs/extensions/csv-helper/class-map.mdx
New pages covering CsvHelper extension setup, typed CSV import via CsvRequest<TRow> with binding and validation, streaming export via CsvResponse<TRow>, per-row DataAnnotations validation with error aggregation, and custom column mapping via CreateClassMap() override.
Home & Navigation Updates
docs/src/content/docs/index.mdx, docs/src/content/docs/quick-start/about.mdx
Rewrites home page with full CreateUserEndpoint example, "Why REPR?" comparison table, and updated quick-start cards; removes frontmatter from about page.

Possibly related PRs

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Poem

🐰 A warren of docs, now neatly arranged,
From README clutter to structures exchanged,
With guides that hop and examples that bound,
Our CSV carrots grow well-organized ground! 📚✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the two main changes: simplifying the README and creating Astro Starlight documentation pages.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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 docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch devin/1777641381-docs-simplification

Review rate limit: 9/10 reviews remaining, refill in 6 minutes.

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

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no potential bugs to report.

View in Devin Review to see 3 additional findings.

Open in Devin Review

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

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 the current code and only fix it if needed.

Inline comments:
In `@docs/src/content/docs/guides/request-binding.mdx`:
- Around line 23-37: The example endpoint uses _repository in
GetUserEndpoint::HandleAsync but never declares or injects it; fix by adding a
repository dependency to the GetUserEndpoint class (e.g., a private readonly
field like _repository of the repository interface used by FindByIdAsync) and
add a constructor that accepts that repository (IUserRepository or your repo
interface) and assigns it to the field so HandleAsync can call
_repository.FindByIdAsync; ensure the constructor parameter name matches the
assigned field and that the repository interface defines
FindByIdAsync(request.Id, CancellationToken).

In `@README.md`:
- Around line 50-54: The visible TODO under the "## Documentation" section in
README.md is being rendered to users; remove that stray text or convert it to an
HTML comment so it doesn't appear in the rendered README (e.g., delete the line
containing "TODO: ドキュメントサイトをデプロイしたら、ここのリンクをデプロイ先URLに更新する" or wrap that exact
text in <!-- ... -->). Locate the TODO near the "## Documentation" header to
apply the change and ensure the documentation link remains intact.
🪄 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: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: bfdac37d-578e-4ebe-a903-342381d7e95b

📥 Commits

Reviewing files that changed from the base of the PR and between 966df77 and ba792f4.

📒 Files selected for processing (20)
  • README.md
  • docs/astro.config.mjs
  • docs/src/content/docs/extensions/csv-helper/class-map.mdx
  • docs/src/content/docs/extensions/csv-helper/csv-export.mdx
  • docs/src/content/docs/extensions/csv-helper/csv-import.mdx
  • docs/src/content/docs/extensions/csv-helper/index.mdx
  • docs/src/content/docs/extensions/csv-helper/row-validation.mdx
  • docs/src/content/docs/getting-started/installation.mdx
  • docs/src/content/docs/getting-started/quick-start.mdx
  • docs/src/content/docs/guides/authorization.mdx
  • docs/src/content/docs/guides/defining-endpoints.mdx
  • docs/src/content/docs/guides/endpoint-groups.mdx
  • docs/src/content/docs/guides/error-responses.mdx
  • docs/src/content/docs/guides/filters.mdx
  • docs/src/content/docs/guides/http-context.mdx
  • docs/src/content/docs/guides/request-binding.mdx
  • docs/src/content/docs/guides/response-types.mdx
  • docs/src/content/docs/guides/validation.mdx
  • docs/src/content/docs/index.mdx
  • docs/src/content/docs/quick-start/about.mdx
💤 Files with no reviewable changes (1)
  • docs/src/content/docs/quick-start/about.mdx

Comment on lines +23 to +37
public class GetUserEndpoint : IEndpoint<GetUserRequest, Response<GetUserResponse>>
{
public void Configure(IEndpointConfiguration config)
{
config.Get("/users/{id}")
.Tags("Users")
.Summary("Get a user by ID");
}

public async Task<Response<GetUserResponse>> HandleAsync(
GetUserRequest request,
CancellationToken cancel)
{
var user = await _repository.FindByIdAsync(request.Id, cancel);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add the missing repository dependency in the endpoint example.

_repository is used but never declared/initialized, so this snippet won’t compile when copied.

💡 Proposed fix
 public class GetUserEndpoint : IEndpoint<GetUserRequest, Response<GetUserResponse>>
 {
+    private readonly IUserRepository _repository;
+
+    public GetUserEndpoint(IUserRepository repository) => _repository = repository;
+
     public void Configure(IEndpointConfiguration config)
     {
         config.Get("/users/{id}")
             .Tags("Users")
             .Summary("Get a user by ID");
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
public class GetUserEndpoint : IEndpoint<GetUserRequest, Response<GetUserResponse>>
{
public void Configure(IEndpointConfiguration config)
{
config.Get("/users/{id}")
.Tags("Users")
.Summary("Get a user by ID");
}
public async Task<Response<GetUserResponse>> HandleAsync(
GetUserRequest request,
CancellationToken cancel)
{
var user = await _repository.FindByIdAsync(request.Id, cancel);
public class GetUserEndpoint : IEndpoint<GetUserRequest, Response<GetUserResponse>>
{
private readonly IUserRepository _repository;
public GetUserEndpoint(IUserRepository repository) => _repository = repository;
public void Configure(IEndpointConfiguration config)
{
config.Get("/users/{id}")
.Tags("Users")
.Summary("Get a user by ID");
}
public async Task<Response<GetUserResponse>> HandleAsync(
GetUserRequest request,
CancellationToken cancel)
{
var user = await _repository.FindByIdAsync(request.Id, cancel);
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/src/content/docs/guides/request-binding.mdx` around lines 23 - 37, The
example endpoint uses _repository in GetUserEndpoint::HandleAsync but never
declares or injects it; fix by adding a repository dependency to the
GetUserEndpoint class (e.g., a private readonly field like _repository of the
repository interface used by FindByIdAsync) and add a constructor that accepts
that repository (IUserRepository or your repo interface) and assigns it to the
field so HandleAsync can call _repository.FindByIdAsync; ensure the constructor
parameter name matches the assigned field and that the repository interface
defines FindByIdAsync(request.Id, CancellationToken).

Comment thread README.md
Comment on lines +50 to 54
## Documentation

```csharp
CsvResponse.From(rows, classMap: new UserExportRowMap(), fileName: "users.csv")
```
For detailed usage guides, API reference, and examples, visit the [documentation site](./docs/).
<!-- TODO: ドキュメントサイトをデプロイしたら、ここのリンクをデプロイ先URLに更新する -->

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Remove/contain the visible TODO in the rendered README.

The TODO text on Line 53 is not wrapped in an HTML comment, so it will likely render for end users on GitHub/npm views. Either delete it or wrap it like <!-- TODO: ... --> so it doesn’t ship.

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

In `@README.md` around lines 50 - 54, The visible TODO under the "##
Documentation" section in README.md is being rendered to users; remove that
stray text or convert it to an HTML comment so it doesn't appear in the rendered
README (e.g., delete the line containing "TODO:
ドキュメントサイトをデプロイしたら、ここのリンクをデプロイ先URLに更新する" or wrap that exact text in <!-- ...
-->). Locate the TODO near the "## Documentation" header to apply the change and
ensure the documentation link remains intact.

@sheepla sheepla merged commit 00a2078 into master May 1, 2026
3 checks passed
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.

1 participant