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).
| 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 |
- π Live Interactive WASM Playground: Try in Browser (GitHub Pages)
- β‘ Performance Benchmark Report: BENCHMARK.md
- π Popular Starter Templates Pack: samples/templates/
- π¬π§ Developer Guide (English): GETTING-STARTED.md
- πΉπ ΰΈΰΈΉΰΉΰΈ‘ΰΈ·ΰΈΰΈΰΈ²ΰΈ£ΰΉΰΈΰΉΰΈΰΈ²ΰΈΰΈ ΰΈ²ΰΈ©ΰΈ²ΰΉΰΈΰΈ’ (Thai): GETTING-STARTED.th.md
- π¨π³ εΏ«ιε ₯ι¨ζε (Simplified Chinese): GETTING-STARTED.zh.md
- π―π΅ γΉγΏγΌγγ’γγγ¬γ€γ (Japanese): GETTING-STARTED.ja.md
- πͺπΈ GuΓa de Inicio RΓ‘pido (Spanish): GETTING-STARTED.es.md
- π Commercial Licensing & Enterprise Tiers: PRICING.md
- π Release Notes v1.0.0: RELEASE-NOTES-v1.0.0.md
- π 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
.bpxreport 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.
Bangplanix offers 3 flexible execution modes:
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());# 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 doctordocker run -d -p 9545:9545 -p 9546:9546 \
-v $(pwd)/volumes/templates:/app/volumes/templates \
ghcr.io/thabot/bangplanix:latestAccess Web Portal at http://localhost:9545/portal (Default Login: admin / bangplanix2026!).
Choose your preferred language / stack:
π· C# / .NET SDK (NuGet: Bangplanix.Client)
dotnet add package Bangplanix.Clientusing 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/clientimport { 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 bangplanixfrom 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/gopackage 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| 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.
| 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 |
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.
- π Documentation: Read the Getting Started Guide
- πΊοΈ Roadmap & Upcoming Features: View the Product Roadmap
- π WebAssembly Live Playground: Interactive Browser Engine
- π Issues & Feedback: GitHub Issues
- πΌ Enterprise Licensing & OEM Partnerships:
thabot47@gmail.com
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.