Mbrcode is a lightweight, deterministic, and clean membership code generator for Ruby applications.
It produces stable, structured IDs using the format:
PREFIX + SHARD + "-" + DIGITS
Where:
- PREFIX → normalized to exactly 4 characters
- SHARD → numeric grouping/version number
- DIGITS → auto-incrementing sequence
- Raw length before dashes = EXACTLY 16 characters
Example output:
MBR1-0000-0000-000
Mbrcode is ideal for membership systems, gyms, schools, apps, organizations, ERPs, identity platforms, and anything requiring clean, compact, and consistent codes.
- 🔒 Thread-safe incremental counter
- 🧩 Smart prefix normalization rules
- 📏 Always 16 raw characters before dash grouping
- 🔣 Groups digits into 4-4-4 format when possible
- ⚙️ Configurable prefix and shard
- 💎 Zero external dependencies
- 🚀 Fast, simple, production-ready
Add to your Gemfile:
gem "mbrcode"Install:
bundle installOr install manually:
gem install mbrcodeMbrcode.generate
# => "MBR1-0000-0000-000"Mbrcode.generate(prefix: "user")
# => "USER1-0000-0000-000"Mbrcode.generate(prefix: "karate membership")
# => "KM00-0000-0000-000"Mbrcode.generate(prefix: "ab")
# => "AB00-0000-0000-000"Mbrcode.generate(prefix: "customer")
# => "CUST1-0000-0000-000"Mbrcode.generate(prefix: "mbr", shard: 2)
# => "MBR2-0000-0000-000"| Input Prefix | Output Prefix | Rule Applied |
|---|---|---|
| "m" | "M000" | padded to 4 characters |
| "ab" | "AB00" | padded to 4 characters |
| "karate membership" | "KM00" | initials + padded |
| "ruby on rails" | "ROR0" | initials + padded |
| "customer" | "CUST" | first 4 characters |
| "USER" | "USER" | unchanged (4 chars) |
Before grouping and adding dashes, the ID ALWAYS equals:
PREFIX(4) + SHARD(N) + DIGITS(M) = 16 characters
If the shard leaves no space for digits:
Mbrcode.generate(prefix: "abcd", shard: 999999999)
# => raises "Shard too long"This ensures consistent, predictable, compact membership IDs.
Run RSpec tests:
bundle exec rspecAll tests should pass.
Clone the repository:
git clone https://github.com/delacruzjames/mbrcode.git
cd mbrcodeInstall dependencies:
bundle installRun tests:
bundle exec rspecPull requests are welcome!
Please include tests for new features or bug fixes.
Released under the MIT License.
Sensei James Dela Cruz
Ruby Developer • API Architect • Karate Instructor
📧 Email: delacruzjamesmartin@gmail.com
🐙 GitHub: @delacruzjames