StyloIssues 0.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package StyloIssues --version 0.0.1
                    
NuGet\Install-Package StyloIssues -Version 0.0.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="StyloIssues" Version="0.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="StyloIssues" Version="0.0.1" />
                    
Directory.Packages.props
<PackageReference Include="StyloIssues" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add StyloIssues --version 0.0.1
                    
#r "nuget: StyloIssues, 0.0.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package StyloIssues@0.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=StyloIssues&version=0.0.1
                    
Install as a Cake Addin
#tool nuget:?package=StyloIssues&version=0.0.1
                    
Install as a Cake Tool

StyloIssues

CI version NuGet license

A GitHub-issues-backed feedback UX for ASP.NET Core. Users file bug reports and feature requests through a first-class UI on your site; those flow two-way to and from GitHub issues on your repo. GitHub stays the source of truth and gets the full fix-it workflow (labels, PRs, CI); your site provides a nicer front door.

Reusable and framework-agnostic: pluggable identity (ICurrentUser), pluggable form policy (IFeedbackFormPolicy), an optional read-model (IIssueStore), and an optional diagnostic-archive attachment hook (IIssueAttachmentSource). GitHub is the source of truth, so the default build needs no database.

Layout

  • src/StyloIssues.Abstractions: interfaces, DTOs, options, reporter marker.
  • src/StyloIssues: Octokit GitHub-App gateway, sync, DI wiring.
  • src/StyloIssues.UI: Razor Class Library: SSR + HTMX + Alpine feedback UI.
  • samples/StyloIssues.Sample: zero-infra sample host.
  • docs/: design spec and implementation plan.

Host route convention

The UI components expect two host-owned pages in your application:

  • GET /feedback - embeds <sb-feedback-form> and <sb-feedback-list />
  • GET /feedback/{number:int} - embeds <sb-feedback-detail number="@number" />

See samples/StyloIssues.Sample/Pages/Feedback.cshtml and FeedbackDetail.cshtml for reference implementations. These pages are intentionally not provided by the RCL so hosts retain full control over their layout and surrounding markup.

IIssueStore

IIssueStore is a forward-declared seam for a host-supplied read-model (e.g. a SQLite or PostgreSQL projection). The default build binds a no-op; no production wiring drives it in this drop. Implement and register it only if you need a local query surface beyond what the GitHub API already provides via IIssueReader.

Security notes

CSRF: Antiforgery is enforced by the package. AddStyloIssuesUi registers the antiforgery service with HeaderName = "RequestVerificationToken". The form partials render the token as a hidden field via @Html.AntiForgeryToken(). The write handlers (/feedback/new and /feedback/{n}/comment) call antiforgery.ValidateRequestAsync(context) after the auth and bot-gate checks. DisableAntiforgery() is applied only to the HMAC-signed webhook endpoint (/feedback/webhook), which receives server-to-server delivery from GitHub.

Hosts using HTMX must attach the token to HTMX requests with the standard htmx:configRequest listener:

document.body.addEventListener('htmx:configRequest', e => {
  const t = document.querySelector('input[name="__RequestVerificationToken"]');
  if (t) e.detail.headers['RequestVerificationToken'] = t.value;
});

The sample layout (samples/StyloIssues.Sample/Pages/Shared/_Layout.cshtml) includes this script. No-JS form submissions use the hidden field directly.

Status

Early implementation. See docs/ for the design spec and the task-by-task plan.

License

Released into the public domain under The Unlicense.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on StyloIssues:

Package Downloads
StyloIssues.UI

GitHub-issues-backed feedback UX for ASP.NET Core: SSR + HTMX + Alpine, zero-PII, GitHub as the source of truth.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.2 47 7/7/2026
0.0.1 41 7/7/2026