Show HN: Nebula – A DSL for scripting TestContainers-based demos
github.comHey HN,
I'm Marty, founder of Orbital[0]—a semantic data integration platform.
As we've been demo'ing Orbital to people, we kept hitting a common challenge: when people evaluate Orbital, they need a demo to play with. But since Orbital is all about integration, those demos need real data sources—Kafka topics, S3 buckets, SQL databases, microservices, etc.—that actually do stuff: emit messages, respond to API calls, and contain data.
Historically, we shipped demos as a mix of Docker Compose files and Spring Boot microservices (for the "doing stuff" part). But that was painful—Spring Boot services had to be dockerized and deployed somewhere, and code got messy.
So we built Nebula[1] to fix this. It’s a simple DSL where you declare the Docker images you need, then write Kotlin code to script them—all in a single file.
Nebula itself runs as a standalone Docker image. At runtime, it takes in the script, pulls and starts the required Docker images, then executes the Kotlin code you've written. The docker parts are handled by the awesome TestContainers, and scripting by Kotlin. Since it's just Kotlin, you can write whatever you need—we've even simulated full food delivery systems inside Nebula scripts.
We split it into its own repo under Apache 2. It's simple but surprisingly powerful (and kinda fun) for quickly hacking together demo ecosystems.
Thought I'd share!
[0]: Orbital - https://github.com/orbitalapi/orbital
[1]: Nebula - https://github.com/orbitalapi/nebula