Enterprise Architecture
Operating System

Define once, deploy everywhere. MetaObjects revolutionizes enterprise software development with metadata-driven architecture that works across all programming languages.

Built by Doug Mealing, who has spent 25 years solving enterprise integration challenges at Fortune 500 companies. This isn't academic theory—it's battle-tested in production environments handling pharmaceutical compliance, educational content management, and financial messaging systems.

25+ Years Enterprise Experience
100+ Engineers Teams Led
$25M+ Technology Budgets
20+ Years MetaObjects in Production
20+ Years Battle-Tested
5+ Languages Supported
Zero Vendor Lock-in
Quick Start: mvn archetype:generate -DgroupId=com.example -DartifactId=my-app -DarchetypeGroupId=com.draagon.metaobjects -DarchetypeArtifactId=metaobjects-archetype
metadata.json
Generated Java
Generated TypeScript
{
  "object": {
    "name": "Customer",
    "type": "pojo",
    "children": [
      {
        "field": {
          "name": "id",
          "type": "long",
          "validation": ["required"]
        }
      },
      {
        "field": {
          "name": "email",
          "type": "string",
          "validation": ["required", "email"],
          "pii": true
        }
      },
      {
        "field": {
          "name": "profile",
          "type": "object",
          "objectRef": "CustomerProfile"
        }
      }
    ]
  }
}
@Entity
@Table(name = "customer")
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotNull
    @Email
    @Column(name = "email")
    private String email;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "profile_id")
    private CustomerProfile profile;

    // Generated getters, setters, validation
}
export interface Customer {
  id: number;
  email: string;
  profile: CustomerProfile;
}

export const CustomerValidator = {
  validate(customer: Customer): ValidationResult {
    const errors: string[] = [];

    if (!customer.id) errors.push('ID is required');
    if (!customer.email) errors.push('Email is required');
    if (!isValidEmail(customer.email)) {
      errors.push('Invalid email format');
    }

    return { valid: errors.length === 0, errors };
  }
};

Universal Language Platform

Single metadata definition generates implementations across Java, C#, TypeScript, Python, and more with perfect consistency across your entire technology stack.

Universal Metadata Architecture

Define once, deploy everywhere. Create a single metadata definition that automatically generates consistent implementations across all programming languages in your stack.

  • Support for Java, C#, TypeScript, Python, Rust
  • Automatic code generation
  • Perfect consistency guaranteed
  • No manual synchronization needed

Runtime System Adaptation

Modify your system behavior, add fields, and update business rules without rebuilding or redeploying services. Zero downtime for metadata-driven changes.

  • Hot reload of metadata changes
  • No service interruption
  • Instant propagation across all services
  • Production-safe modifications

Intelligent Code Generation

Advanced code generators create production-ready implementations with validation, serialization, and documentation. Maven plugin integration makes it seamless.

  • Maven plugin integration
  • Multiple generator types (Java, TypeScript, API docs)
  • Customizable templates
  • Validation and business logic included

Enterprise Governance Built-In

Enterprise governance isn't an afterthought - it's built into the core architecture with compliance, security, and audit capabilities from day one.

  • Automatic audit trails
  • Role-based access control
  • PII data protection
  • Compliance reporting

Cross-Language Validation

Define validation rules once and have them enforced consistently across all services and languages. Same rules in frontend and backend.

  • Field-level validation
  • Object-level validation
  • Custom validation rules
  • Consistent validation everywhere

Metadata Overlay System

Layer additional metadata for specific contexts without changing base definitions. Extend without modifying core schemas.

  • Database-specific attributes
  • UI presentation layers
  • Environment-specific configs
  • Clean separation of concerns

Proven at Enterprise Scale

MetaObjects has been running in production for 20+ years at pharmaceutical, education, and financial companies. Handle FDA compliance changes, educational content, and secure messaging - all metadata-driven.

90% Faster system changes
10x Reduction in integration complexity
100% Consistency across services
Explore All Features

Applications

Java Spring React TypeScript C# .NET Python

MetaObjects Runtime

Validation Engine Type System Code Generators

Metadata Layer

Object Definitions Validation Rules Business Logic

Get Started in Minutes

From zero to running MetaObjects application in three simple steps

1

Add Dependency

<dependency>
  <groupId>com.draagon.metaobjects</groupId>
  <artifactId>metaobjects-core</artifactId>
  <version>5.1.0</version>
</dependency>
2

Define Metadata

{
  "object": {
    "name": "Product",
    "type": "pojo",
    "children": [
      {"field": {"name": "id", "type": "long"}},
      {"field": {"name": "name", "type": "string"}},
      {"field": {"name": "price", "type": "double"}}
    ]
  }
}
3

Generate & Use

mvn metaobjects:generate
MetaObject productMeta = loader.getMetaObject("Product");
Object product = productMeta.newInstance();
productMeta.setFieldValue(product, "name", "Widget");
productMeta.setFieldValue(product, "price", 29.99);

Open Source Community

Join thousands of developers building better enterprise applications with MetaObjects

GitHub Repository

Explore the source code, contribute to development, and report issues on our active GitHub repository.

View on GitHub

Discord Community

Join our Discord server to chat with other developers, get help, and stay updated on the latest news.

Join Discord

Stack Overflow

Get answers to your MetaObjects questions from the community using the 'metaobjects' tag.

Ask Question
Apache 2.0 Open Source License
5.1.0 Current Version
2001 First Release

Ready to Get Started?

Join the open source community and see how MetaObjects can streamline your enterprise development process