Skip to content

DomainLang/DomainLang

Repository files navigation

DomainLang Logo

A DSL for Domain Driven Design

CI CoverageSecurity RatingVulnerabilitiesQuality Gate Status VS MarketplaceNPM VersionNPM Version

Warning

🚧 Prerelease Software — DomainLang is in active development and has not reached v1.0 yet. The language syntax and tooling may change. We welcome feedback and contributions—see the roadmap for planned features.

A small DSL for Domain-Driven Design (DDD) architecture models, with first-class IDE support.

Use DomainLang to keep domains, bounded contexts, ownership, terminology, and context maps close to the codebase (and easy to review in pull requests).

DomainLang CLI

Quick Start

  1. Install the VS Code extension: https://marketplace.visualstudio.com/items?itemName=DomainLang.vscode-domainlang
  2. Create a .dlang file and start modeling
  3. Read the documentation: https://domainlang.net/guide/getting-started
Classification CoreDomain
Team SalesTeam

Domain Sales {
    description: "Revenue generation and customer acquisition"
    vision: "Make it easy to buy"
}

bc Orders for Sales as CoreDomain by SalesTeam {
    description: "Order lifecycle and orchestration"

    terminology {
        term Order: "A customer's request to purchase"
    }
}

ContextMap SalesLandscape {
    contains Orders
}

Who this is for

  • Architects and tech leads who want lightweight, reviewable DDD models
  • Teams doing DDD who need a shared ubiquitous language in the repo
  • Developers who want IDE feedback while evolving architecture

What you get

  • A DDD-aligned language for architecture models
  • VS Code support (syntax highlighting, completion, hover, go-to-definition)
  • Validation to catch common modeling issues early
  • Model Query SDK for analysis and automation

Documentation

Full documentation is available at https://domainlang.net:

Build from Source

Development uses Node.js 20+ (Volta is configured).

cd dsl/domain-lang
npm install
npm run langium:generate
npm run build
npm test

See dsl/domain-lang/README.md for workspace commands and package layout.

Contributing

Ideas, bug reports, and pull requests are welcome!

Before submitting code, run npm test and npm run lint from dsl/domain-lang/.

License

Apache 2.0 (see LICENSE)


thinkability

This project is sponsored by thinkability