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.
- 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.
- 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 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.
- 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.
- Smithy Reference Implementation
- Smithy reference implementation in Java
- Atelier π§ - Community implementation of Smithy in Rust
- OpenAPI
- Converts Smithy models to OpenAPI.
- JSONSchema
- Converts Smithy models to JSONSchema.
- Cloud Formation Resource Schemas
- Generating Cloudformation resource schemas from Smithy models.
- 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.
- 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.
- Smithy Playground π§ - A language server and VS Code client for interactive experimentation with Smithy services.
Contributions welcome! Read the contribution guidelines first.