v1.0.0 Stable Release

THE ATOMIC
LOGIC FOR
MODERN ERPs

The pure, telemetry-free engine for PIM, WMS, and OMS.
Build for Laravel without the bloat.

ProductSeeder.php

<?php

use Obelaw\Ium\Pim\Data\ProductDTO;

// 1. Create a Category
$category = ium()->pim()->categories()->create([
    'name'      => 'Tech Gadgets',
    'slug'      => 'tech-gadgets',
    'is_active' => true,
]);

// 2. Create a Product
$productData = new ProductDTO(
    sku: 'SMART-WATCH-X1',
    name: 'Smart Watch X1',
    productType: 'simple',
    price: 199.99,
    description: 'The latest smart watch...',
    categories: [$category->id]
);

$product = ium()->pim()->products()->create($productData);
                            
$ php artisan obelaw:install

Why Obelawium?

Built different. On purpose.

01

Pure Logic

Decoupled from UI. Just business logic.

02

Telemetry-Free

No tracking. Your data is yours.

03

Zero Deps

No external services required.

The IUM
Stack

Modular architecture. Install only what you need. Zero bloat.

EXPLORE PACKAGES

IUM-PIM

Product Information Management

composer require obelaw/ium-pim

IUM-WMS

Warehouse Management System

composer require obelaw/ium-wms

IUM-OMS

Order Management System

composer require obelaw/ium-oms
Domain-Specific Language

Speak Business,
Write Code

Obelawium's Fluent API turns complex ERP operations into readable, chainable method calls. Your code reads like a sentence.

PIM — Product Structure
ium()->pim()
  ->products()
  ->structure()
  ->add($component);

Compose product structures with a fluent chain — BOM, variants, and bundles in one call.

WMS — Inventory
ium()->wms()
  ->inventory()
  ->reserve('SKU-001', 5)
  ->fromWarehouse('main');

Reserve, transfer, and audit stock with intent-revealing methods — no raw queries needed.

OMS — Orders
ium()->oms()
  ->orders()
  ->create($orderDTO)
  ->fulfill();

Create, process, and fulfill orders through a single expressive pipeline.

One Entry Point. Infinite Domains.

Every module is accessed through ium() — a single global helper that routes into any domain. No service container lookups, no boilerplate.

Read DSL Docs

Full Control.
Zero Magic.

We don't believe in black boxes. Every line of code is accessible, type-safe, and designed for extension.

  • Strict Types
  • 100% Test Coverage
  • PSR-12 Compliant
  • No hidden API calls
namespace Obelaw\IUM\WMS;

class InventoryManager 
{
    /**
     * Reserve stock for an order
     * @param string $sku
     * @param int $qty
     */
    public function reserve(string $sku, int $qty): void
    {
        // Your custom logic here...
        $this->stock->decrement($sku, $qty);
        
        Event::dispatch(new StockReserved($sku));
    }
}