MakisDSL

MakisDSL

A type-safe Scala DSL for generating multi-cloud infrastructure templates. Write your infrastructure once and deploy to AWS, Azure, or GCP.

🔗 Overview

MakisDSL is a domain-specific language built in Scala 3 that allows you to define cloud infrastructure using a unified syntax. The same DSL code can generate:

🔗 Notice: Early Development

⚠️ MakisDSL is in early development.

This project is actively being developed and the API may change frequently. The documentation currently covers the basic functionality, but many advanced features are still being implemented.

If you'd like to help, please feel free to contribute by submitting issues, feature requests, or pull requests.

🔗 Features

🔗 Quick Example

Here's a simple example of defining cloud infrastructure with MakisDSL:

import cloud.*
import cloud.CloudProvider.*
import cloud.syntax.*

val myApp = cloudApp(provider = AWS) {
  val storage = objectStorage("my-data-bucket")
    .withVersioning(true)
    .withPublicAccess(false)

  val function = serverlessFunction("my-api-handler")
    .withRuntime("nodejs18.x")
    .withHandler("index.handler")
    .withCode(storage.reference)
    .dependsOn(storage)
    .build

  val database = noSqlTable("my-users-table")
    .withHashKey("userId", "S")
    .dependsOn(function)
    .build
}

This same code can generate templates for any supported cloud provider by simply changing the provider parameter.

For detailed usage instructions and examples, see the Getting Started guide.