Architecture & stack

Technology foundation of Axiom ERP

Built on modern enterprise development principles β€” no compromises on performance, reliability or scalability.

Go 1.26 PostgreSQL 18 Angular 21 DDD + CQRS Hexagonal Architecture Event-Driven
Principles

Architectural approach

Each of the 22 business contexts is organized with the same structure β€” four clear layers with one-directional dependencies.

01
HTTP / Ports Entry point β€” request handling
Gin Handlers DTOs RBAC Middleware Validation
↓
02
Application Orchestration β€” use-case logic
Commands Queries Event Handlers
↓
03
Domain Core β€” pure business rules
Aggregates Value Objects Domain Events Business Rules
↓
04
Infrastructure Adapters β€” external systems
PostgreSQL Repos Redis Cache File Storage SMTP

Key principles

1

Dependency Inversion

Domain does not depend on Infrastructure. Repositories are interfaces in the domain, implementation is in the infrastructure.

2

CQRS β€” separation of reads and writes

Each command and query has a separate Handler. Reads are optimised independently from writes.

3

Event-driven integration

No direct calls between contexts. Event Bus (in-memory + Redis) is the only communication channel.

4

Google Wire β€” compile-time DI

No reflection at runtime. Dependency graph is built at compile time β€” zero overhead.

Technical Excellence

Technology stack

Chosen for performance and reliability.

⚑
Go 1.26 Backend Backend Β· compiled Β· concurrent
Go 1.26

Statically typed language with native concurrency. Minimal latency, minimal memory footprint.

Gin v1.10 pgx/v5 squirrel Google Wire golang-jwt go-redis v9 OpenTelemetry testify
🐘
PostgreSQL 18 Primary database Β· relational
PG 18

Native uuidv7() support, LTREE for hierarchies, JSONB for metadata, DATERANGE for time boundaries.

Native uuidv7() LTREE paths JSONB DATERANGE Triggers data-checksums
πŸ…°οΈ
Angular 21 Frontend Frontend Β· SPA Β· TypeScript
NG 21

Signals-based reactivity, standalone components, PrimeNG UI, Chart.js visualisations.

Angular 21 PrimeNG 21 TypeScript 5.9 Chart.js 4 CodeMirror 6 Signals API
Technical Excellence

What makes Axiom technically unique

Money as int64, never float

All monetary values stored as BIGINT (cents). Custom pkg/money with full arithmetic. Zero rounding errors.

UUID v7 everywhere

Time-ordered keys enable efficient cursor pagination and natural chronological sorting without additional indexes.

Two-tier automation

Tier-1: expr-lang for fast formulas (<1ms). Tier-2: Starlark Python-like sandbox for complex logic.

Offline RSA-2048 licensing

Signed keys without internet connection. Public key embedded at compile time via //go:embed. Only stdlib.

No ORM β€” full SQL control

Raw SQL via pgx/v5 + squirrel. Full query visibility, optimal execution plans, no N+1 problems.

Testcontainers in CI

Integration tests spin up real PostgreSQL 18 in Docker β€” not mocks. 265+ tests including real migrations.

Core Principles

Automatic event chains

No manual data transfer. 185+ domain events form automatic business processes.

Sales β†’ Operations

  • DealWon β†’ Auto-contract + sales target credit
  • ContractActivated β†’ Auto-generate revenue plan
  • OrderCreated β†’ Auto stock reservation
  • OrderConfirmed β†’ Auto invoice creation

Procurement β†’ Finance

  • GoodsReceived β†’ Stock receipt + AP accrual
  • InvoiceCreated β†’ AR posting in accounting
  • ProductionStarted β†’ Raw material issue from warehouse
  • PayrollPosted β†’ GL journal entries + production labour

Flexible deployment options

🏒

Modular Monolith

Single binary, Docker Compose, minimal infrastructure requirements. Ideal for getting started.

☁️

Microservices

Each context can be extracted independently. No direct imports. Event Bus β†’ Kafka/RabbitMQ.

πŸ”’

On-Premise

Full data control. Offline licensing. Suitable for data protection requirements.