Onera Core

Open-source modular ERP core: business capabilities ship as modules, providers sit behind adapters, and the domain layer stays portable.

Application → Port → Adapter → Provider

Runtime

development

Cloudflare Workers + static assets

Extensions

1 registered

4 permissions declared

Tenancy

Org → Workspace

Resolved server-side, never client

Layers

  1. 01Presentation

    React routes, Core design system. No business rules, no data access.

  2. 02Application

    Use cases, commands and queries. Talks to ports only.

  3. 03Domain

    Entities, value objects, policies, events. Zero dependencies.

  4. 04Infrastructure

    Repositories and provider adapters behind port interfaces.

  5. 05Runtime

    Cloudflare Workers, static assets, bindings, queues, scheduled tasks.

Dependency direction: Presentation → Application → Domain

Ports

  • DatabasePort
  • AuthPort
  • AuthorizationPort
  • StoragePort
  • QueuePort
  • EmailPort
  • CachePort
  • EventBusPort
  • AuditPort

Bound providers

database
memory
auth
native
storage
memory
payment
memory
email
console
queue
memory
cache
memory
search
memory
ai
none

Swap any row in the composition root — no application or domain code changes.

Extension registry

CRM

module

onera.crm · v0.1.0 · 1 migration

Customers, contacts and pipeline built on Core identity and events.

  • customer.read
  • customer.create
  • customer.update
  • customer.delete