/awesome-smithy

Awesome Smithy is a curated list of awesome build-tools, code-generators, examples, and other resources related to the Smithy IDL.

Apache License 2.0Apache-2.0

Awesome Smithy

Awesome Smithy is a curated list of awesome build-tools, code-generators, examples, and other resources related to the Smithy IDL.

If you want your component to appear here, send a pull request to this repository to add it (see the contribution guidelines for more information).

The Smithy team cannot vouch for the stability or production-worthiness an item on this list unless it has the icon (official) next to it. This icon means the component is an official project supported by the Smithy team. Official Smithy team projects with the 🚧 icon next to them are still a work-in-progress and are not production-ready.

Contents

Build tools

  • Smithy CLI (official) - Smithy CLI is used to build, validate, diff, and transform Smithy models.
  • Gradle Plugin (official) - Integrates Smithy with the Gradle build system.
  • Mill Plugin - Community supported plugin that integrates smithy with the Mill build tool.
  • SBT Plugin - Community supported plugin that integrates smithy with the SBT build system for Scala.

Code Generators

Client Code Generators

  • TypeScript (official) 🚧 - Client code generation for Typescript.
  • Golang (official) 🚧 - Client code generation for Golang.
  • Rust (official) 🚧 - Client code generation for Rust.
  • Ruby (official) 🚧 - Client code generation for Ruby.
  • Kotlin (official) 🚧 - Client code generation for Kotlin.
  • Swift (official) 🚧 - Client code generation for Swift.
  • Scala - Community plugin for generation of clients/servers in Scala.
  • Dafny (official) 🚧 - Code generation tools for the Dafny verification-aware programming language.
  • Python (official) 🚧 - Client code generation for Python.

Server Code Generators

  • TypeScript (official) 🚧 - Server generator for TypeScript.
  • Rust (official) 🚧 - Server generator for Rust.
  • Scala - Community plugin for generation of clients/servers in Scala.

Learning resources

IDE Support

Implementations

Model Converters

CICD Support

GitHub Actions

Videos

Blog Posts

Others

  • Smithy Playground 🚧 - A language server and VS Code client for interactive experimentation with Smithy services.
  • Build Server Protocol - an extension to the Language Server Protocol using Smithy as a definition language.
  • Alloy - a library of Smithy traits providing additional semantics and constraints, used in particular by smithy-translate and smithy4s.

Contribute

Contributions welcome! Read the contribution guidelines first.