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).
- Install the VS Code extension: https://marketplace.visualstudio.com/items?itemName=thinkability.domain-lang
- Create a
.dlangfile and start modeling. - Use the docs hub for the learning path: dsl/domain-lang/docs/README.md
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
}- 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
- 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
- Docs hub: dsl/domain-lang/docs/README.md
- Getting started: dsl/domain-lang/docs/getting-started.md
- Quick reference: dsl/domain-lang/docs/quick-reference.md
- Language reference: dsl/domain-lang/docs/language.md
- Web docs: https://larsbaunwall.github.io/DomainLang/index.html
Development uses Node.js 20 (Volta is configured).
cd dsl/domain-lang
npm install
npm run langium:generate
npm run build
npm testIdeas, bug reports, and pull requests are welcome.
- Ask questions and share ideas in Discussions: https://github.com/larsbaunwall/DomainLang/discussions
- Report bugs or propose features in Issues: https://github.com/larsbaunwall/DomainLang/issues
- Want to contribute code? Start with docs/examples, then run
npm testandnpm run lintfromdsl/domain-lang/. - Workspace commands and package layout: dsl/domain-lang/README.md
Apache 2.0 (see LICENSE)
