Profiles
Elan8 uses profiles to scope what you're modeling. Each profile has a clear purpose and a set of constructs (components, services, modules, etc.) that fit that scope. This replaces the old "systems / subsystems" framing with something tailored to software architecture.
Application Profile
The Application profile describes the internal architecture of a single executable: modules, layers, boundaries, and how they connect. Use it for modular monoliths, service decomposition within one process, or any application where you care about internal structure.
Typical constructs: module, component, adapter, logical interfaces, and connect. Generated views include C4-style Component diagrams.
// Elan8 — software application (Application profile)
interface OrderAPI logical { role provider; role consumer }
system OrderServiceApp {
@profile(value="application")
module api_layer {
component orders_api { port orders: OrderAPI }
}
module domain_layer {
component order_service { port api: OrderAPI }
connect orders_api.orders to order_service.api
}
}Platform Profile
The Platform profile describes the composition of executables: services, event buses, gateways, queues, and how they communicate and deploy. Use it for microservices, distributed systems, or platform-level architecture.
Typical constructs: service, eventbus, apigateway, datastore, queue, connect, deploy to. Generated views include C4-style Container diagrams.
// Elan8 — platform: services, communication, deployment
system CheckoutPlatform {
@profile(value="platform")
service checkout_svc { port cart: CartAPI }
service cart_svc { port api: CartAPI }
eventbus order_events { }
apigateway gateway { }
connect checkout_svc.cart to cart_svc.api
connect checkout_svc.events to order_events.pub
deploy checkout_svc to gateway
}Enterprise IT Profile (future)
We're planning an Enterprise IT profile for on-prem infrastructure, identity and access management, network zones, and trust boundaries. It will build on the same DSL and validation approach.