Skip to content

screamcode-dev/screamcode-reporting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

ScreamCode logo

ScreamCode.Reporting

Embedded .NET 8 reporting with a full Blazor admin portal

NuGet Downloads License .NET

Live Demo · Documentation · Pricing · NuGet


What is ScreamCode.Reporting?

ScreamCode.Reporting is an embedded reporting library for ASP.NET Core that drops a full-featured admin portal directly into your existing application — no separate server, no external services, no re-architecting.

Install via NuGet, add a few lines to Program.cs, and your users get a complete reporting portal at /reportadmin.

yourapp.com/reportadmin   ← full reporting portal, embedded in your app

Why embedded?

Most reporting tools require a separate server, a SaaS subscription, or months of integration work. ScreamCode.Reporting is different:

  • One NuGet install — no external dependencies to manage
  • Your data, your server — nothing leaves your infrastructure
  • One-time payment — no recurring fees, no per-seat pricing
  • Blazor Server — works with your existing .NET 8 stack

Features

Feature Community Professional Enterprise
Reports Up to 10 Up to 30 Unlimited
HTML Templates 5 10 10
PDF export
Excel export
CSV export
Charts & visualizations
Images in reports
Scheduler + email delivery ✓ (5) ✓ Unlimited
Audit trail 30 days 365 days
Backup & restore
Digital signature on PDFs
Price Free $149 $299

Every install starts with a 30-day Professional trial — no credit card required.


Quick Start

1. Install packages

dotnet add package ScreamCode.Reporting.Core
dotnet add package ScreamCode.Reporting.Admin
dotnet add package ScreamCode.Reporting.Pdf
dotnet add package ScreamCode.Reporting.Excel
dotnet add package ScreamCode.Reporting.Builder
dotnet add package ScreamCode.Reporting.Templates

2. Configure Program.cs

builder.Services
    .AddScreamReporting(builder.Configuration)
    .AddPdf()
    .AddExcel()
    .AddBuilder()
    .AddTemplates()
    .AddAdmin()
    .AddDataProvider<YourDataProvider>();

var app = builder.Build();
await app.Services.InitializeScreamReportingAsync();
await app.Services.EnsureAdminDatabaseAsync();

app.UseStaticFiles();
app.UseAntiforgery();
app.MapBlazorHub();

var adminPath = builder.Configuration["ScreamReporting:AdminPath"] ?? "reportadmin";
app.MapFallbackToPage($"/{adminPath}/{{**path}}", "/_Host");
app.MapFallbackToPage($"/{adminPath}", "/_Host");

3. Add appsettings.json

{
  "ScreamReporting": {
    "LicenseKey": "",
    "ApplicationName": "YourApp",
    "AdminAuth": {
      "Enabled": true,
      "Username": "admin",
      "Password": "your-secure-password"
    }
  }
}

4. Implement your data provider

public class OrdersDataProvider : IReportDataProvider
{
    private readonly AppDbContext _db;
    public OrdersDataProvider(AppDbContext db) => _db = db;

    public string EntityName => "orders";
    public string DisplayName => "Orders";

    public IReadOnlyList<ReportColumnDefinition> AvailableColumns =>
    [
        new() { Name = "Id", DisplayName = "Order ID", Type = "string" },
        new() { Name = "CustomerName", DisplayName = "Customer", Type = "string" },
        new() { Name = "Total", DisplayName = "Total", Type = "currency" },
        new() { Name = "CreatedAt", DisplayName = "Date", Type = "datetime" }
    ];

    public IReadOnlyList<ReportFilterDefinition> AvailableFilters =>
    [
        new() { Name = "CreatedAt", DisplayName = "Date Range", Type = "daterange" },
        new() { Name = "CustomerName", DisplayName = "Customer", Type = "string" }
    ];

    public async Task<ReportTable> GetDataAsync(ReportBuilderRequest request, CancellationToken ct = default)
    {
        var data = await _db.Orders
            .Select(o => new Dictionary<string, object?>
            {
                ["Id"] = o.Id,
                ["CustomerName"] = o.CustomerName,
                ["Total"] = o.Total,
                ["CreatedAt"] = o.CreatedAt
            })
            .ToListAsync(ct);

        return new ReportTable { Columns = AvailableColumns.ToList(), Rows = data };
    }

    public async Task<int> GetCountAsync(ReportBuilderRequest request, CancellationToken ct = default)
        => await _db.Orders.CountAsync(ct);
}

5. Open the portal

Navigate to https://yourapp.com/reportadmin — done.


Architecture

Your ASP.NET Core App
│
├── /                    ← your existing app
└── /reportadmin         ← ScreamCode.Reporting embedded portal
    ├── Dashboard
    ├── Reports          ← build, run, export
    ├── HTML Templates   ← custom layouts
    ├── Schedules        ← automated delivery
    ├── Audit Trail      ← full history
    ├── Settings         ← backup & restore
    └── License          ← activation

ScreamCode.Reporting stores everything in a local SQLite database alongside your app — no external database required.


PDF Generation

PDF export uses Playwright with Chromium for pixel-perfect rendering.

Automatic setup — Chromium installs automatically on first run:

[ScreamCode.Reporting] Chromium not found. Installing...
[ScreamCode.Reporting] Chromium installed successfully.

Windows Server 2016 requires a manual step — see PDF & Chromium docs.


Localization

Built-in: English and Bosnian. Add any language by dropping a JSON file:

publish/
└── Localization/
    └── Languages/
        ├── en.json   ← built-in
        ├── bs.json   ← built-in
        └── de.json   ← your language

RTL languages (Arabic, Hebrew) are supported automatically.


Packages

Package Description
ScreamCode.Reporting.Core Core engine, licensing, interfaces
ScreamCode.Reporting.Admin Blazor Server admin portal
ScreamCode.Reporting.Pdf PDF generation via Playwright
ScreamCode.Reporting.Excel Excel export via ClosedXML
ScreamCode.Reporting.Builder Dynamic query engine
ScreamCode.Reporting.Templates HTML template engine
ScreamCode.Reporting.Audit Audit trail (Professional+)
ScreamCode.Reporting.Scheduler Scheduled delivery (Professional+)

Live Demo

Try the full portal without installing anything:

reporting.screamcode.com/reportadmin


Documentation

Full documentation at screamcode.com/docs


Pricing

Community Professional Enterprise
Price Free forever $149 one-time $299 one-time
Buy Get started Buy via Polar.sh Buy via Polar.sh

Already on Professional? Upgrade to Enterprise for $199


Support

  • Email: support@screamcode.com
  • Documentation: screamcode.com/docs
  • Issues: Use GitHub Issues for bug reports and feature requests

Build faster. Report smarter.

screamcode.com · NuGet · Live Demo

About

Embedded .NET 8 reporting library with Blazor admin portal, PDF export, scheduling and audit trail. Install via NuGet, drop into your ASP.NET Core app in minutes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors