ProBill
Technologies Used
Software Info
Gallery

User-friendly billing interface
ProBill is a production validation of the BinWeb framework deployed against a real-world billing workflow for local shopkeepers and wholesalers.
The core packaging approach encodes the entire web frontend into C++ char arrays during a CMake pre-build step. These arrays are compiled directly into the .text segment, meaning the application carries its entire UI as read-only machine code with no loose asset files to manage or tamper with.
At runtime, a WebView2 instance intercepts all file:// requests through a custom URI scheme handler. The handler extracts the requested asset from the in-memory arrays and returns it to the WebView2 renderer. By using file:// rather than data: URIs, the renderer assigns the app a proper origin, which unlocks localStorage, IndexedDB, and the Cache API for persistent billing data.
PDF bill generation is handled by a native library called through the WebView2 message bridge. The web UI posts a JSON payload describing the bill; the C++ side receives it, formats it, and writes the PDF to disk without any round-trips to a server.
Software Specifications
System Requirements
Supported Formats
Key Features
Web assets hex-encoded into binary code segment at compile time
Sandboxed file:// URI scheme handler preserving full HTML5 storage APIs
PDF bill generation via native C++ library called through WebView2 message bridge
Billing history with persistent localStorage-backed data
Zero external dependencies and zero loose asset files at runtime
Real-time billing calculations with sub-100ms response
Architectural Implementation
Asset Embedding Pipeline
A CMake pre-build script scans the web source directory, compresses assets, and generates a C++ header containing each file as a static const unsigned char array keyed by path. The main binary includes this header. At runtime, the WebView2 URI handler resolves requests by looking up the path in a std::unordered_map built from these arrays, returning the bytes directly without any filesystem access.
Origin Preservation via file:// Interception
Serving assets as data: URIs assigns a null origin and breaks localStorage. BinWeb registers a custom URI scheme with WebView2 that remaps all internal requests to file:// URLs pointing to a sandboxed virtual path. The WebView2 renderer treats this as a real origin, enabling full storage API access while still serving assets entirely from memory.
Outcomes
Deployed to production use by real shopkeepers for daily billing operations
Binary footprint under 15MB including the BinWeb runtime
Validated BinWeb's storage APIs and offline operation in a production environment
Performance Benchmarks
Sub-second startup using BinWeb embedded assets
Under 50MB memory during operation
Instant PDF generation
Real-time calculation response under 100ms