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 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
- Code Generators
- Learning resources
- IDE Support
- Implementations
- Model Converters
- CICD Support
- Videos
- Blog Posts
- Others
- Contribute
- Smithy CLI - Smithy CLI is used to build, validate, diff, and transform Smithy models.
- Gradle Plugin - 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.
- TypeScript 🚧 - Client code generation for Typescript.
- Golang 🚧 - Client code generation for Golang.
- Rust 🚧 - Client code generation for Rust.
- Ruby 🚧 - Client code generation for Ruby.
- Kotlin 🚧 - Client code generation for Kotlin.
- Swift 🚧 - Client code generation for Swift.
- Scala - Community plugin for generation of clients/servers in Scala.
- Dafny 🚧 - Code generation tools for the Dafny verification-aware programming language.
- Python 🚧 - Client code generation for Python.
- TypeScript 🚧 - Server generator for TypeScript.
- Rust 🚧 - Server generator for Rust.
- Scala - Community plugin for generation of clients/servers in Scala.
- Smithy Examples - A collection of examples to help you get up and running with Smithy.
- aws-samples: Typescript Example service - Shows how to write a Typescript lambda service using Smithy and call the service using a generated client (see: blog post).
- Rust server SDK examples - a collection of examples using Smithy to generate a Rust server SDK.
- kubukoz/smithy4s-course - Smithy/Smithy4s course.
- Smithy LSP 🚧 - A Language Server Protocol implementation for the Smithy IDL.
- Visual Studio Code Plugin 🚧 - Visual Studio Code extension providing a Language Server Protocol implementation for the Smithy IDL.
- Intellij plugin 🚧 - Provides IDE integration for the Smithy IDL within IntelliJ IDEA.
- iancaffey/smithy-intellij-plugin - Community plugin for IDE integration for the Smithy IDL in Intellij IDEA.
- Tree Sitter Grammar for Smithy - Tree-sitter grammar for Smithy. Included in Neovim and Helix by default.
- Zed extension - Zed extension using Tree-sitter grammar for Smithy.
- Smithy Reference Implementation - Smithy reference implementation in Java
- Atelier 🚧 - Community implementation of Smithy in Rust
- Smithy to OpenAPI - Converts Smithy models to OpenAPI.
- Smithy to JSONSchema - Converts Smithy models to JSONSchema.
- Cloud Formation Resource Schemas - Generating Cloudformation resource schemas from Smithy models.
- Openapi/JSONSchema to Smithy - smithy-translate : a community-provided CLI tool for best-effort Openapi/JSONSchema to Smithy conversions
- Smithy to Protobuf - smithy-translate (see above)
- setup-smithy - Install Smithy CLI to your GitHub Workflow.
- format-smithy - Checks if Smithy Models are formatted.
- Scaling APIs with Smithy - Overview of Smithy's background and features.
- Abstraction: Creating the Best developer experience / Model-First Design - An introduction to model first design with Smithy.
- Building with the new AWS SDKs for Rust, Kotlin, and Swift - Explores how these SDKs were built in parallel with Smithy, the commonalities they share, and how to build an app with each one.
- Simplify building applications with AWS SDKs - Discusses how Smithy and model-first API design are used at AWS, how the AWS SDKs model client-side primitives such as paginators in Smithy, and how the AWS SDKs are evolving to use a standardized architecture.
- Introduction to Smithy/Smithy4s - Scala Conference talk introducing the Smithy IDL and the Smithy4s library
- Generating Kotlin SDKs with Smithy - KotlinConf talk that provides an overview of Smithy and discusses how
smithy-kotlin
can be used to generate Kotlin SDKs - Elevating API Design With Smithy - Functional Scala talk - Intro to Smithy IDL with JVM Tooling and Smithy4s
- Introducing Smithy IDL 2.0 - Launch announcement for the Smithy IDL 2.0.
- Introducing the Smithy CLI - Launch announcement for the Smithy CLI along with examples of how to use the CLI.
- Developer Preview: Ruby SDK code generation using Smithy - Launch announcement for and overview of the AWS Ruby SDK built with Smithy.
- Smithy4s-full stack - A series of posts describing an application built with Smithy4s in both front-end and back-end.
- 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.
Contributions welcome! Read the contribution guidelines first.