Skip to content

PHP Architecture That Enforces Itself

You define the architecture. The Jardis Builder enforces it at the filesystem level. Hexagonal architecture, CQRS, and Domain Events as generated structure, not as a convention nobody follows after sprint 10.

Your architecture only exists on whiteboards.

Sprint 1 looks clean. Sprint 10 is a different system. And you spend more time defending than designing.

Architecture erosion with every sprint

You define hexagonal architecture. The team takes shortcuts. After six months, every service has a different interpretation of your specifications. The architecture on the whiteboard and the one in code are two different systems.

Conventions nobody follows

Ports and Adapters as a naming convention. Repository Pattern as a wiki entry. CQRS as a slide deck. Everything documented, nothing enforced. Every code review becomes a debate about architecture compliance instead of business logic.

Architecture violations in production

A service queries another service's database directly. A command handler contains query logic. A domain event is processed synchronously. You catch it in review, or worse: in production.

How Jardis enforces software architecture.

The Jardis Builder generates the entire architecture infrastructure from a single schema definition. No convention anyone can ignore. Physical separation at the filesystem level.

STRUCTURE ENFORCEMENT

Hexagonal architecture as filesystem, not convention

Ports, Adapters, Application Layer, Domain Layer: the builder generates the complete directory structure. No developer has to guess where a class belongs. The architecture is the folder structure. No drift possible.

PATTERN CONSISTENCY

CQRS, Events, and Repositories from a single definition

Commands, Queries, Domain Events, and the Repository Pipeline are generated from the schema. Every Bounded Context follows exactly the same patterns. Whether Team A or Team B, junior or architect: the output is structurally identical.

ARCHITECTURE AS CODE

ADRs that arrive in generated code

You make an architecture decision. The builder implements it in every new Bounded Context. Automatically. No gap between decision and implementation. Your architecture lives in the repository, not in Confluence.

See what three files turn into.

Three definition files in, a complete bounded context out. Browse the generated code.

E-Commerce / Sales
schema.yaml
# Database Schema — Sales Bounded Context
# This file defines the persistent storage structure.

schema:
  domain: ECommerce
  boundedContext: Sales

tables:
  order:
    columns:
      id:
        type: integer
        primary: true
        autoIncrement: true
      public_id:
        type: uuid7
        unique: true
      customer_email:
        type: string
        length: 255
      status:
        type: string
        length: 32
        default: "draft"
      total_amount:
        type: integer
      currency:
        type: string
        length: 3
        default: "EUR"
      created_at:
        type: datetime
      updated_at:
        type: datetime
        nullable: true

  order_item:
    columns:
      id:
        type: integer
        primary: true
        autoIncrement: true
      order_id:
        type: integer
        foreignKey:
          table: order
          column: id
          onDelete: cascade
      product_name:
        type: string
        length: 255
      sku:
        type: string
        length: 64
      quantity:
        type: integer
      unit_price:
        type: integer
      line_total:
        type: integer
Files
Definitions (Input)
Generated Code (Output)
BUILDER OUTPUT
80%
architecture infrastructure generatedEntities, Commands, Queries, Domain Events, API Contracts, and the Repository Pipeline. You review business logic, not architecture infrastructure.
3x
faster pattern consistency across teams
0
architecture violations in generated structures
CONSISTENCY
100%
hexagonal structure in every Bounded ContextEvery generated service follows the same Ports and Adapters architecture. No deviation, no interpretation, no shortcuts.

Why software architects choose Jardis.

Less defending, more designing. Architecture that enforces itself.

> Layer Enforcement

Physical layers instead of logical conventions

Application, Domain, and Infrastructure as separate packages. The builder enforces the dependency direction. No service can violate layer boundaries because they are anchored in the filesystem.

> Pattern Precision

Every Bounded Context follows your architecture blueprint

You define the patterns once. The builder reproduces them in every new context exactly the same way. Hexagonal architecture, CQRS, Repository Pipeline. Consistent, repeatable, reviewable. Whether Team A or Team B: the output is structurally identical.

> Review Focus

Code reviews for business logic, not for structure

80% of the technical foundation is generated and architecture-compliant. Your reviews focus on what matters: domain logic, business rules, correctness. Not on missing interfaces or wrong directories.

Ready to codify architecture instead of documenting it?

Join the Waitlist

Structure costs less than chaos.

Free Trial

Try Jardis 7 Days Free

Point Jardis at your real domain. Discovery, structure, and your first platform build.

Join Waitlist
20 Discovery Runs
5 Structure Builds
1 Platform Build
All Jardis packages as open source
Jardis Base
€29per month

The complete DDD architecture with all classes and contracts. Your team ships features, not infrastructure.

Join Waitlist
Unlimited Discovery Runs
Unlimited Structure Builds
All 26 Jardis packages included
PHPStan Level 8 from day one
Jardis Pro
€180per month

The complete business logic with handlers, validation, and pipelines. What used to be a sprint is now a build.

Join Waitlist
Everything from Jardis Base
Commands, queries, and events fully implemented
Platform code in seconds instead of weeks
Additional Runs for €89 each
Enterprise

More than 20 Platform Builds per month?

Let's talk

Be there when Jardis launches.

Sign up. You'll get access as soon as we go live. Including a free trial.

100+ developers are already waiting for launch

Curious how Jardis works?

Discover Jardis

Frequently Asked Questions

Answers to the most common questions software architects ask about Jardis.

Yes. The Jardis Builder generates hexagonal PHP architecture with Ports and Adapters. The generated structures follow established DDD patterns: 3-layer Entities, Commands, Queries, Domain Events, and Repository Pipeline. The output is plain PHP, no proprietary framework.