Skip to content

About

High-performance enterprise reporting engine & web middleware built on .NET 10 (Native AOT). Modern replacement for Crystal Reports, SSRS, JasperReports.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

67 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ Bangplanix β€” High-Performance Enterprise Reporting Engine

.NET 10 License SDK License Tests Architecture Zero Copyleft

Docker Image NuGet npm PyPI Go Reference

Bangplanix is a high-performance, microsecond-level enterprise reporting engine and web middleware built on .NET 10 (C# 14 / Native AOT). Designed as a modern, open-core replacement for legacy reporting suites (Crystal Reports, SSRS, Jaspersoft, FastReport, BIRT, DevExpress).


πŸ“¦ Official Packages & Container Registries

Ecosystem Registry / Package Install Command / Source
🐳 Docker Hub thabot/bangplanix docker pull thabot/bangplanix:latest
πŸ™ GitHub Container (GHCR) ghcr.io/thabot/bangplanix docker pull ghcr.io/thabot/bangplanix:v1.0.0
πŸ”· NuGet (.NET) Bangplanix.Client dotnet add package Bangplanix.Client
🟒 npm (Node.js/TS) @bangplanix/client npm install @bangplanix/client
🐍 PyPI (Python) bangplanix pip install bangplanix
πŸ”΅ Go Packages github.com/thabot/bangplanix/sdk/go go get github.com/thabot/bangplanix/sdk/go

πŸ“š Essential Quick Links


⚑ Key Highlights & Core Capabilities

  • πŸš€ Microsecond Execution Speed: Compiled to Native Machine Code with .NET 10 Native AOT, running with Zero-GC memory pressure (ReadOnlySpan<T>, ArrayPool<T>, and SIMD hardware acceleration).
  • πŸ‡ΉπŸ‡­ Complete Thai & Global Typography: Integrated HarfBuzzSharp complex text shaping (ΰΈͺระแΰΈ₯ΰΈ°ΰΈ§ΰΈ£ΰΈ£ΰΈ“ΰΈ’ΰΈΈΰΈΰΈ•ΰΉŒΰΉ„ΰΈ‘ΰΉˆΰΈ₯ΰΈ­ΰΈ’), Buddhist calendar formatting, and zero-allocation =BahtText() currency conversion.
  • πŸ€– Bangplanix AI Suite: Generate and modify .bpx report schemas from natural language prompts with built-in SQL AST security sanitization and PII redaction.
  • 🎨 Framework-Agnostic Web Components: Embed the visual WYSIWYG Designer (<bangplanix-designer>) and High-Resolution Viewer (<bangplanix-viewer>) across React, Vue, Angular, or plain HTML.
  • πŸ”„ 18+ Legacy Migration Adapters: Convert existing legacy reports (SSRS RDL, Crystal Reports, Jaspersoft JRXML, FastReport FRX, Stimulsoft MRT, DevExpress REPX, Telerik TRDX, Eclipse BIRT, ActiveReports, Pentaho PRPT, Oracle BI Publisher RTF, IBM Cognos, Handlebars/Mustache HTML, UBL 2.1 e-Invoicing, Zebra ZPL/EPL, Epson ESC/POS) in seconds via CLI.
  • πŸ–¨οΈ Direct Hardware Printing: Output directly to network raw sockets (TCP 9100, CUPS, IPP), thermal POS slip printers (ESC/POS), and industrial barcode printers (Zebra ZPL II).
  • πŸ›‘οΈ Enterprise Zero-Trust Security: True Vector Redaction, AES-256 DRM encryption, PAdES digital signatures, e-Tax Invoice ETDA (ฑธอ. 3-2560) compliance, and SIEM cryptographic audit trails.
  • πŸ”Œ Polyglot Client SDKs: Strongly-typed client libraries for C# (.NET), Node.js/TypeScript, Python, Go, and Java.

πŸš€ 3 Execution Modes: Choose What Fits Your Stack

Bangplanix offers 3 flexible execution modes:

πŸ“¦ Mode 1: In-Process Embedded C# Library (.NET 8/9/10 Native)

using Bangplanix.Core;
using Bangplanix.Rendering.SkiaSharp;

var template = ReportTemplate.LoadFromJsonFile("templates/commercial-invoice-ubl.bpx");
var engine = new ReportEngine();
var result = await engine.RenderAsync(template, myDataJson, ExportFormat.Pdf);
await File.WriteAllBytesAsync("invoice.pdf", result.ToByteArray());

πŸ’» Mode 2: Standalone Local CLI & Native AOT Binary (Zero Docker)

# Render PDF directly with sub-10ms latency
bangplanix render -t templates/commercial-invoice-ubl.bpx -d data.json -o invoice.pdf

# Run diagnostic health check
bangplanix doctor

🐳 Mode 3: Docker Microservice & Polyglot SDKs

docker run -d -p 9545:9545 -p 9546:9546 \
  -v $(pwd)/volumes/templates:/app/volumes/templates \
  ghcr.io/thabot/bangplanix:latest

Access Web Portal at http://localhost:9545/portal (Default Login: admin / bangplanix2026!).


πŸ’» Polyglot Client SDK Quick Examples

Choose your preferred language / stack:

πŸ”· C# / .NET SDK (NuGet: Bangplanix.Client)
dotnet add package Bangplanix.Client
using Bangplanix.Client;

var client = new BangplanixClient("http://localhost:9545");
byte[] pdf = await client.RenderReportAsync(new RenderReportRequest
{
    TemplatePath = "templates/invoice.bpx",
    DataJson = JsonSerializer.Serialize(myDataset)
});
await File.WriteAllBytesAsync("invoice.pdf", pdf);
🟒 Node.js / TypeScript SDK (npm: @bangplanix/client)
npm install @bangplanix/client
import { BangplanixClient } from '@bangplanix/client';
import * as fs from 'fs';

const client = new BangplanixClient({ baseUrl: 'http://localhost:9545' });
const pdfBuffer = await client.renderReport({
  templatePath: 'templates/invoice.bpx',
  data: [ { ItemName: 'Cloud Compute', Price: 15000 } ]
});
fs.writeFileSync('invoice.pdf', pdfBuffer);
🐍 Python SDK (PyPI: bangplanix)
pip install bangplanix
from bangplanix import BangplanixClient

client = BangplanixClient(base_url="http://localhost:9545")
client.render_to_file("templates/invoice.bpx", data=[{"ItemName": "Cloud Node", "Price": 15000}], output_path="invoice.pdf")
πŸ”΅ Go SDK (pkg.go.dev)
go get github.com/thabot/bangplanix/sdk/go
package main

import (
    "context"
    "os"
    bangplanix "github.com/thabot/bangplanix/sdk/go"
)

func main() {
    client := bangplanix.NewClient("http://localhost:9545")
    pdf, _ := client.RenderReport(context.Background(), &bangplanix.RenderRequest{
        TemplatePath: "templates/invoice.bpx",
        DataJson:     `[{"ItemName": "High-Speed Node", "Price": 15000}]`,
    })
    os.WriteFile("invoice.pdf", pdf, 0644)
}
β˜• Java SDK
BangplanixClient client = new BangplanixClient("http://localhost:9545");
byte[] pdf = client.renderReport(new RenderReportRequest()
    .setTemplatePath("templates/invoice.bpx")
    .setDataJson(jsonData));
🐘 PHP (Laravel / Native cURL)
<?php
$payload = [
    'templatePath' => 'templates/invoice.bpx',
    'format' => 'Pdf',
    'dataJson' => json_encode([['ItemName' => 'Cloud Server', 'Price' => 15000]])
];

$ch = curl_init('http://localhost:9545/api/v1/reports/render');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));

$pdf = curl_exec($ch);
curl_close($ch);
file_put_contents('invoice.pdf', $pdf);
?>
🎯 Dart / Flutter (Mobile POS & Tablet)
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;

Future<void> generateInvoicePdf() async {
  final response = await http.post(
    Uri.parse('http://localhost:9545/api/v1/reports/render'),
    headers: {'Content-Type': 'application/json'},
    body: jsonEncode({
      'templatePath': 'templates/invoice.bpx',
      'format': 'Pdf',
      'dataJson': jsonEncode([{'ItemName': 'Mobile POS Terminal', 'Price': 8900}])
    }),
  );

  if (response.statusCode == 200) {
    await File('invoice.pdf').writeAsBytes(response.bodyBytes);
  }
}
πŸ¦€ Rust (reqwest Async)
use reqwest::Client;
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();
    let res = client.post("http://localhost:9545/api/v1/reports/render")
        .json(&json!({
            "templatePath": "templates/invoice.bpx",
            "format": "Pdf",
            "dataJson": "[{\"ItemName\":\"Compute Node\",\"Price\":9900}]"
        }))
        .send().await?.bytes().await?;

    std::fs::write("invoice.pdf", res)?;
    Ok(())
}
πŸ’Ž Ruby (Net::HTTP)
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("http://localhost:9545/api/v1/reports/render")
payload = {
  templatePath: "templates/invoice.bpx",
  format: "Pdf",
  dataJson: [{ ItemName: "SaaS Subscription", Price: 1200 }].to_json
}

response = Net::HTTP.post(uri, payload.to_json, { 'Content-Type' => 'application/json' })
File.open("invoice.pdf", "wb") { |f| f.write(response.body) }
⚑ cURL / CLI / Shell
curl -X POST http://localhost:9545/api/v1/reports/render \
  -H "Content-Type: application/json" \
  -d '{
    "templatePath": "templates/invoice.bpx",
    "format": "Pdf",
    "dataJson": "[{\"ItemName\":\"Cloud Compute\",\"Price\":15000}]"
  }' \
  --output invoice.pdf

⚑ High-Throughput Performance Benchmarks

Metric / Scenario πŸš€ Bangplanix (.NET 10 Native AOT) 🐒 SAP Crystal Reports β˜• TIBCO Jaspersoft 🌐 Puppeteer / Chrome
Single Invoice Latency (p50) 0.42 ms 42.8 ms (101x slower) 38.5 ms (91x slower) 148.0 ms (352x slower)
Batch 10,000 Invoices 0.18 sec (55,500 p/s) 4.85 sec 4.10 sec 9.20 sec
Peak RAM (10k Batch) 24.5 MB (Zero-GC) 185.0 MB 460.0 MB 680.0 MB
Container Size 26.8 MB (Distroless) Windows Core (4.8 GB) OpenJDK/Tomcat (420 MB) Node/Chrome (640 MB)

πŸ“Š For complete methodology and reproducible reproduction steps, see BENCHMARK.md.


πŸ“Š Supported Document Formats & Legacy Adapters

Category Supported Technologies
Output Formats PDF & PDF/A, PDF/UA (Section 508), Encrypted PDF (AES-256), Excel (MiniExcel XLSX), Word (DOCX), HTML5 / Lit, SVG, PNG, WebP, CSV / NDJSON
Hardware & Printing Raw Socket TCP 9100, CUPS, IPP, Thermal POS (ESC/POS), Industrial Labels (Zebra ZPL II)
Legacy Migration SSRS / Power BI (.rdl, .rdlc), Crystal Reports (.rpt, .xml, .rptxml), Jaspersoft (.jrxml), FastReport (.frx), Stimulsoft (.mrt), Telerik (.trdx, .trdp), DevExpress (.repx), BIRT (.rptdesign), ActiveReports (.rdlx, .rpx), Oracle Reports (.rex, .xdo), Office & Web (.docx, .xlsx, .html, .liquid)
Data Connectors SQL Server, PostgreSQL, MySQL, ClickHouse, Snowflake, Google BigQuery, REST API, JSON Push Stream

πŸ’° Commercial Licensing & Instant Checkout

Bangplanix is available under Dual Licensing:

  • Community Edition (MIT): Free forever for developers and businesses with < $1M annual revenue. Unwatermarked production rendering.
  • Professional ($699/year or $59/mo): Up to 16 CPU cores, scheduled report bursting, S3/MinIO/SFTP delivery, all 5 SDKs. πŸ‘‰ Buy Professional
  • Enterprise Sovereign ($1,999/year or $199/mo): Unlimited CPU cores, Thai e-Tax invoice & RFC 3161 TSA, PAdES digital signatures, True Vector Redaction, 24/7 SLA. πŸ‘‰ Buy Enterprise Sovereign
  • OEM Sovereign ($3,999/year): Royalty-free white-label redistribution, 100% offline air-gapped validation, NIST FIPS 204 Post-Quantum Dilithium signatures.

πŸ’³ Detailed features breakdown, comparisons with QuestPDF, and global corporate invoicing (PO, VAT, W-8BEN) are available in PRICING.md and on pricing.html.


πŸ’¬ Community & Support


πŸ“œ License & Compliance

Bangplanix operates on a modern hybrid licensing model designed for frictionless developer adoption:

  • πŸ”Œ Client SDKs (C#, Node.js, Python, Go, Java): 100% MIT Licensed β€” unrestricted, open, and safe to embed in any commercial application.
  • πŸš€ Core Engine & Server: Bangplanix Community License (Free for individuals, open-source projects, and businesses with annual gross revenue < $1,000,000 USD running on ≀ 4 CPU cores).
  • πŸ’Ž Commercial & Enterprise: Organizations with annual revenue β‰₯ $1,000,000 USD, or requiring high CPU core quotas and enterprise modules (Thai e-Tax Invoice, PAdES), require a Commercial License. See PRICING.md and LICENSE-COMMERCIAL.md.

About

High-performance enterprise reporting engine & web middleware built on .NET 10 (Native AOT). Modern replacement for Crystal Reports, SSRS, JasperReports.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages