{"id":13518161,"url":"https://github.com/smithy-lang/awesome-smithy","last_synced_at":"2025-03-31T09:31:16.692Z","repository":{"id":179498104,"uuid":"639971623","full_name":"smithy-lang/awesome-smithy","owner":"smithy-lang","description":"Awesome Smithy is a curated list of awesome build-tools, code-generators, examples, and other resources related to the Smithy IDL.","archived":false,"fork":false,"pushed_at":"2025-02-27T22:09:15.000Z","size":77,"stargazers_count":186,"open_issues_count":0,"forks_count":16,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-03-17T11:54:11.192Z","etag":null,"topics":["api","awesome","awesome-list","aws","client","codegen","sdk","server","smithy"],"latest_commit_sha":null,"homepage":"https://smithy.io","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/smithy-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2023-05-12T16:50:24.000Z","updated_at":"2025-03-06T21:56:06.000Z","dependencies_parsed_at":"2024-04-13T20:39:56.536Z","dependency_job_id":null,"html_url":"https://github.com/smithy-lang/awesome-smithy","commit_stats":null,"previous_names":["smithy-lang/awesome-smithy"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithy-lang%2Fawesome-smithy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithy-lang%2Fawesome-smithy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithy-lang%2Fawesome-smithy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/smithy-lang%2Fawesome-smithy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/smithy-lang","download_url":"https://codeload.github.com/smithy-lang/awesome-smithy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246350950,"owners_count":20763230,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","awesome","awesome-list","aws","client","codegen","sdk","server","smithy"],"created_at":"2024-08-01T05:01:41.474Z","updated_at":"2025-03-31T09:31:16.675Z","avatar_url":"https://github.com/smithy-lang.png","language":null,"funding_links":[],"categories":["Technical","Other Lists","aws"],"sub_categories":["awesome-*","TeX Lists"],"readme":"# Awesome Smithy\n\n[\u003cimg src=\"/assets/smithy-light.svg#gh-light-mode-only\" align=\"right\" width=\"300\"\u003e](https://smithy.io#gh-light-mode-only)\n[\u003cimg src=\"/assets/smithy-dark.svg#gh-dark-mode-only\" align=\"right\" width=\"300\"\u003e](https://smithy.iog#gh-dark-mode-only)\n\n*Awesome Smithy* is a curated list of awesome build-tools, code-generators, examples, and other resources related to\nthe [Smithy IDL](https://github.com/awslabs/smithy).\n\nIf you want your component to appear here, send a pull request to this repository to add it (see the [contribution\nguidelines](#contribute) for more information).\n\nThe Smithy team cannot vouch for the stability or production-worthiness an item on this list unless it has the icon\n\u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e next to it. This icon means the\ncomponent is an official project supported by the [Smithy](https://github.com/smithy-lang) team.\nOfficial Smithy team projects with the 🚧 icon next to them are still a work-in-progress and are not production-ready.\n\n\n## Contents\n  - [Contents](#contents)\n  - [Build tools](#build-tools)\n  - [Code Generators](#code-generators)\n    - [Client Code Generators](#client-code-generators)\n    - [Server Code Generators](#server-code-generators)\n  - [Learning resources](#learning-resources)\n  - [IDE Support](#ide-support)\n  - [Implementations](#implementations)\n  - [Model Converters](#model-converters)\n  - [CICD Support](#cicd-support)\n    - [GitHub Actions](#github-actions)\n  - [Videos](#videos)\n  - [Blog Posts](#blog-posts)\n  - [Others](#others)\n  - [Contribute](#contribute)\n\n## Build tools\n* [Smithy CLI](https://github.com/smithy-lang/smithy/tree/main/smithy-cli) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Smithy CLI is used to build, validate, diff, and transform Smithy models.\n* [Gradle Plugin](https://github.com/smithy-lang/smithy-gradle-plugin) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Integrates Smithy with the Gradle build system.\n* [Mill Plugin](https://disneystreaming.github.io/smithy4s/docs/overview/installation/#mill) - Community supported plugin that integrates smithy with the [Mill build tool](https://github.com/com-lihaoyi/mill).\n* [SBT Plugin](https://disneystreaming.github.io/smithy4s/docs/overview/installation/#sbt) - Community supported plugin that integrates smithy with the SBT build system for Scala.\n\n## Code Generators\n### Client Code Generators\n* [TypeScript](https://github.com/awslabs/smithy-typescript) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Client code generation for Typescript.\n* [Java](https://github.com/smithy-lang/smithy-java) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Client code generation for Java.\n* [Golang](https://github.com/aws/smithy-go) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Client code generation for Golang.\n* [Rust](https://github.com/awslabs/smithy-rs) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Client code generation for Rust.\n* [Ruby](https://github.com/awslabs/smithy-ruby) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Client code generation for Ruby.\n* [Kotlin](https://github.com/awslabs/smithy-kotlin) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Client code generation for Kotlin.\n* [Swift](https://github.com/awslabs/smithy-swift) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Client code generation for Swift.\n* [Scala](https://github.com/disneystreaming/smithy4s) - Community plugin for generation of clients/servers in Scala.\n* [Dafny](https://github.com/awslabs/smithy-dafny) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Code generation tools for the [Dafny](https://dafny.org/) verification-aware programming language.\n* [Python](https://github.com/smithy-lang/smithy-python) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Client code generation for Python.\n\n### Server Code Generators\n* [TypeScript](https://github.com/awslabs/smithy-typescript) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Server generator for TypeScript.\n* [Java](https://github.com/smithy-lang/smithy-java) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Server code generation for Java.\n* [Rust](https://github.com/awslabs/smithy-rs) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Server generator for Rust.\n* [Scala](https://github.com/disneystreaming/smithy4s) - Community plugin for generation of clients/servers in Scala.\n\n\n## Learning resources\n* [Smithy Examples](https://github.com/smithy-lang/smithy-examples) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - A collection of examples to help you get up and running with Smithy.\n* [aws-samples: Typescript Example service](https://github.com/aws-samples/smithy-server-generator-typescript-sample) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Shows how to write a Typescript lambda service using Smithy and call the service using a generated client (see: [blog post](https://aws.amazon.com/blogs/devops/smithy-server-and-client-generator-for-typescript/)).\n* [Rust server SDK examples](https://github.com/awslabs/smithy-rs/tree/main/examples) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - a collection of examples using Smithy to generate a Rust server SDK.\n* [kubukoz/smithy4s-course](https://github.com/kubukoz/smithy4s-course) - Smithy/Smithy4s course.\n\n## IDE Support\n* [Smithy LSP](https://github.com/awslabs/smithy-language-server) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - A Language Server Protocol implementation for the Smithy IDL.\n* [Visual Studio Code Plugin](https://github.com/awslabs/smithy-vscode) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Visual Studio Code extension providing a Language Server Protocol implementation for the Smithy IDL.\n* [Intellij plugin](https://github.com/awslabs/smithy-intellij) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e 🚧 - Provides IDE integration for the Smithy IDL within IntelliJ IDEA.\n* [iancaffey/smithy-intellij-plugin](https://github.com/iancaffey/smithy-intellij-plugin) - Community plugin for IDE integration for the Smithy IDL in Intellij IDEA.\n* [Tree Sitter Grammar for Smithy](https://github.com/indoorvivants/tree-sitter-smithy) - Tree-sitter grammar for Smithy. Included in [Neovim](https://github.com/nvim-treesitter/nvim-treesitter) and [Helix](https://docs.helix-editor.com/) by default.\n* [Zed extension](https://github.com/joshrutkowski/zed-smithy) - [Zed](https://zed.dev/) extension using [Tree-sitter grammar for Smithy](https://github.com/indoorvivants/tree-sitter-smithy).\n\n## Implementations\n* [Smithy Reference Implementation](https://github.com/awslabs/smithy) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Smithy reference implementation in Java\n* [Atelier](https://github.com/johnstonskj/rust-atelier) 🚧 - Community implementation of Smithy in Rust\n\n## Model Converters\n* [Smithy to OpenAPI](https://smithy.io/2.0/guides/converting-to-openapi.html#smithy-to-openapi) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Converts Smithy models to [OpenAPI](https://www.openapis.org/).\n* [Smithy to JSONSchema](https://github.com/awslabs/smithy/tree/main/smithy-jsonschema) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Converts Smithy models to [JSONSchema](https://json-schema.org/).\n* [Cloud Formation Resource Schemas](https://smithy.io/2.0/guides/generating-cloudformation-resources.html#smithy-to-cloudformation) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Generating Cloudformation resource schemas from Smithy models.\n* [Openapi/JSONSchema to Smithy](https://github.com/disneystreaming/smithy-translate) - smithy-translate : a community-provided CLI tool for best-effort Openapi/JSONSchema to Smithy conversions\n* [Smithy to Protobuf](https://github.com/disneystreaming/smithy-translate) - smithy-translate (see above)\n\n## CICD Support\n### GitHub Actions\n* [setup-smithy](https://github.com/marketplace/actions/setup-smithy) - Install Smithy CLI to your GitHub Workflow.\n* [format-smithy](https://github.com/marketplace/actions/format-smithy) - Checks if Smithy Models are formatted.\n\n## Videos\n* [Scaling APIs with Smithy](https://www.youtube.com/watch?v=3GpZzu4guTE) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Overview of Smithy's background and features.\n* [Abstraction: Creating the Best developer experience / Model-First Design](https://youtu.be/gX2sHQafadA?t=1558) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - An introduction to model first design with Smithy.\n* [Building with the new AWS SDKs for Rust, Kotlin, and Swift](https://www.youtube.com/watch?v=Nhk1K1AjYvg) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Explores how these SDKs were built in parallel with Smithy, the commonalities they share, and how to build an app with each one.\n* [Simplify building applications with AWS SDKs](https://www.youtube.com/watch?v=7J0UMAGgAdw) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - 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.\n* [Introduction to Smithy/Smithy4s](https://www.youtube.com/watch?v=CA8qGXMQ3cE) - Scala Conference talk introducing the Smithy IDL and the Smithy4s library\n* [Generating Kotlin SDKs with Smithy](https://www.youtube.com/watch?v=Wsra04prG-E) - KotlinConf talk that provides an overview of Smithy and discusses how `smithy-kotlin` can be used to generate Kotlin SDKs\n* [Elevating API Design With Smithy](https://www.youtube.com/watch?v=tufEEuPn6Lk) - Functional Scala talk - Intro to Smithy IDL with JVM Tooling and Smithy4s \n\n## Blog Posts\n* [Introducing Smithy IDL 2.0](https://aws.amazon.com/blogs/developer/introducing-smithy-idl-2-0/) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Launch announcement for the Smithy IDL 2.0.\n* [Introducing the Smithy CLI](https://aws.amazon.com/blogs/developer/introducing-the-smithy-cli/) \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Launch announcement for the Smithy CLI along with examples of how to use the CLI.\n* [Developer Preview: Ruby SDK code generation using Smithy](https://aws.amazon.com/blogs/developer/developer-preview-smithy-code-generated-ruby-sdk/)  \u003cimg src=\"/assets/smithy-anvil.svg\" alt=\"(official)\" title=\"Smithy Official\" height=\"10px\"\u003e - Launch announcement for and overview of the AWS Ruby SDK built with Smithy.\n* [Smithy4s-full stack](https://blog.indoorvivants.com/2022-06-10-smithy4s-fullstack-part-1) - A series of posts describing an application built with Smithy4s in both front-end and back-end.\n\n## Others\n* [Smithy Playground](https://github.com/kubukoz/smithy-playground/) 🚧 - A language server and VS Code client for interactive experimentation with Smithy services.\n* [Build Server Protocol](https://github.com/build-server-protocol/build-server-protocol) - an extension to the Language Server Protocol using Smithy as a definition language.\n* [Alloy](https://github.com/disneystreaming/alloy/) - a library of Smithy traits providing additional semantics and constraints, used in particular by smithy-translate and smithy4s.\n\n## Contribute\nContributions welcome! Read the [contribution guidelines](CONTRIBUTING.md) first.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmithy-lang%2Fawesome-smithy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsmithy-lang%2Fawesome-smithy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsmithy-lang%2Fawesome-smithy/lists"}