Skip to main content
Bomboni is a collection of Rust libraries designed to help you build robust distributed systems and applications. It provides a comprehensive suite of utilities spanning from unique identifier generation to gRPC request handling, WebAssembly support, and Protocol Buffer utilities.
Bomboni is currently a work in progress. The API may change between versions.

What is Bomboni?

Bomboni is a workspace of interconnected Rust crates that solve common challenges in building distributed systems. Rather than reinventing the wheel for each project, you can leverage Bomboni’s battle-tested utilities to handle:
  • Unique identifier generation with sortable ULIDs
  • Google AIP-compliant API request parsing and validation
  • Protocol Buffer code generation with enhanced functionality
  • WebAssembly integration with TypeScript bindings
  • Template rendering with Handlebars
  • File system operations

Key features

Bomboni provides several powerful features that make it ideal for building modern Rust applications:

ULID-based identifiers

Generate sortable, unique identifiers that work across distributed systems. Support for both random generation and worker-based approaches ensures uniqueness without coordination.

Google AIP-compliant request handling

Parse and validate API requests following Google’s API Improvement Proposals (AIPs). Built-in support for filtering (AIP-160), pagination, ordering, and SQL generation.

Enhanced Protocol Buffers

Extend prost-generated code with additional helper functions, field name constants, and improved type conversions. Seamless integration with serde and WebAssembly.

WebAssembly ready

Full WASM support with automatic TypeScript declaration generation. Build Rust libraries that work seamlessly in browser environments.

Database integration

Optional features for PostgreSQL and MySQL provide type conversions and SQL query generation from filter expressions.

Architecture

Bomboni is organized as a Cargo workspace with multiple specialized crates:
1

Core utilities

bomboni_common provides unique identifiers and UTC datetime handlingbomboni_core contains core utilities and abstractions used across the projectbomboni_macros offers convenient procedural macros
2

Protocol Buffers

bomboni_prost compiles Protocol Buffers with enhanced code generationbomboni_proto implements Google’s well-known protobuf types with additional functionality
3

Request handling

bomboni_request provides comprehensive API request utilities following Google AIP standardsbomboni_request_derive offers derive macros for request parsing and type conversion
4

WebAssembly

bomboni_wasm provides WebAssembly utilities for JavaScript interoperabilitybomboni_wasm_core contains core WASM utilities and TypeScript declaration generationbomboni_wasm_derive offers derive macros for generating TypeScript WASM bindings
5

Additional utilities

bomboni_template provides Handlebars template rendering with custom helpersbomboni_fs offers file system utilities for recursive operations

When to use Bomboni

Consider using Bomboni when you:
  • Build distributed systems that need unique, sortable identifiers across multiple services
  • Create gRPC APIs following Google’s API design guidelines with filtering and pagination
  • Work with Protocol Buffers and need enhanced code generation or improved type handling
  • Target WebAssembly and want seamless Rust-to-JavaScript interoperability with TypeScript support
  • Need database integration with automatic SQL generation from filter expressions
  • Want consistent utilities across multiple microservices or applications

Example use cases

Building a gRPC service

Use bomboni_common for generating unique entity IDs, bomboni_request for parsing list requests with filtering and pagination, and bomboni_proto for enhanced protobuf types. Check out the bookstore example for a complete implementation.

Creating a WASM library

Leverage bomboni_wasm to generate TypeScript declarations automatically, use bomboni_common identifiers that work in both native and WASM targets, and bomboni_proto for message passing between Rust and JavaScript.

Implementing API filtering

Use bomboni_request to parse Google AIP-160 compliant filter expressions, validate them against schemas, and generate SQL queries for PostgreSQL or MySQL databases.

Next steps

Installation

Learn how to add Bomboni to your project

Quickstart

Build your first application with Bomboni

Build docs developers (and LLMs) love