Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smithy-lang/awesome-smithy
Awesome Smithy is a curated list of awesome build-tools, code-generators, examples, and other resources related to the Smithy IDL.
https://github.com/smithy-lang/awesome-smithy
List: awesome-smithy
api awesome awesome-list aws client codegen sdk server smithy
Last synced: 2 days ago
JSON representation
Awesome Smithy is a curated list of awesome build-tools, code-generators, examples, and other resources related to the Smithy IDL.
- Host: GitHub
- URL: https://github.com/smithy-lang/awesome-smithy
- Owner: smithy-lang
- License: apache-2.0
- Created: 2023-05-12T16:50:24.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-04-05T15:38:44.000Z (7 months ago)
- Last Synced: 2024-05-18T23:36:00.678Z (6 months ago)
- Topics: api, awesome, awesome-list, aws, client, codegen, sdk, server, smithy
- Homepage: https://smithy.io
- Size: 35.2 KB
- Stars: 114
- Watchers: 7
- Forks: 11
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- fucking-lists - awesome-smithy - tools, code-generators, examples, and other resources related to the 🌎 [Smithy IDL](smithy.io/). (Technical / awesome-*)
- lists - awesome-smithy - tools, code-generators, examples, and other resources related to the [Smithy IDL](https://smithy.io/). (Technical / awesome-*)
- ultimate-awesome - awesome-smithy - Awesome Smithy is a curated list of awesome build-tools, code-generators, examples, and other resources related to the Smithy IDL. (Other Lists / PowerShell Lists)
README
# Awesome Smithy
[](https://smithy.io)
*Awesome Smithy* is a curated list of awesome build-tools, code-generators, examples, and other resources related to
the [Smithy IDL](https://github.com/awslabs/smithy).If you want your component to appear here, send a pull request to this repository to add it (see the [contribution
guidelines](#contribute) 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](https://github.com/smithy-lang) team.
Official Smithy team projects with the 🚧 icon next to them are still a work-in-progress and are not production-ready.## Contents
- [Contents](#contents)
- [Build tools](#build-tools)
- [Code Generators](#code-generators)
- [Client Code Generators](#client-code-generators)
- [Server Code Generators](#server-code-generators)
- [Learning resources](#learning-resources)
- [IDE Support](#ide-support)
- [Implementations](#implementations)
- [Model Converters](#model-converters)
- [CICD Support](#cicd-support)
- [GitHub Actions](#github-actions)
- [Videos](#videos)
- [Blog Posts](#blog-posts)
- [Others](#others)
- [Contribute](#contribute)## Build tools
* [Smithy CLI](https://github.com/smithy-lang/smithy/tree/main/smithy-cli) - Smithy CLI is used to build, validate, diff, and transform Smithy models.
* [Gradle Plugin](https://github.com/smithy-lang/smithy-gradle-plugin) - Integrates Smithy with the Gradle build system.
* [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).
* [SBT Plugin](https://disneystreaming.github.io/smithy4s/docs/overview/installation/#sbt) - Community supported plugin that integrates smithy with the SBT build system for Scala.## Code Generators
### Client Code Generators
* [TypeScript](https://github.com/awslabs/smithy-typescript) 🚧 - Client code generation for Typescript.
* [Golang](https://github.com/aws/smithy-go) 🚧 - Client code generation for Golang.
* [Rust](https://github.com/awslabs/smithy-rs) 🚧 - Client code generation for Rust.
* [Ruby](https://github.com/awslabs/smithy-ruby) 🚧 - Client code generation for Ruby.
* [Kotlin](https://github.com/awslabs/smithy-kotlin) 🚧 - Client code generation for Kotlin.
* [Swift](https://github.com/awslabs/smithy-swift) 🚧 - Client code generation for Swift.
* [Scala](https://github.com/disneystreaming/smithy4s) - Community plugin for generation of clients/servers in Scala.
* [Dafny](https://github.com/awslabs/smithy-dafny) 🚧 - Code generation tools for the [Dafny](https://dafny.org/) verification-aware programming language.
* [Python](https://github.com/smithy-lang/smithy-python) 🚧 - Client code generation for Python.### Server Code Generators
* [TypeScript](https://github.com/awslabs/smithy-typescript) 🚧 - Server generator for TypeScript.
* [Rust](https://github.com/awslabs/smithy-rs) 🚧 - Server generator for Rust.
* [Scala](https://github.com/disneystreaming/smithy4s) - Community plugin for generation of clients/servers in Scala.## Learning resources
* [Smithy Examples](https://github.com/smithy-lang/smithy-examples) - A collection of examples to help you get up and running with Smithy.
* [aws-samples: Typescript Example service](https://github.com/aws-samples/smithy-server-generator-typescript-sample) - 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/)).
* [Rust server SDK examples](https://github.com/awslabs/smithy-rs/tree/main/examples) - a collection of examples using Smithy to generate a Rust server SDK.
* [kubukoz/smithy4s-course](https://github.com/kubukoz/smithy4s-course) - Smithy/Smithy4s course.## IDE Support
* [Smithy LSP](https://github.com/awslabs/smithy-language-server) 🚧 - A Language Server Protocol implementation for the Smithy IDL.
* [Visual Studio Code Plugin](https://github.com/awslabs/smithy-vscode) 🚧 - Visual Studio Code extension providing a Language Server Protocol implementation for the Smithy IDL.
* [Intellij plugin](https://github.com/awslabs/smithy-intellij) 🚧 - Provides IDE integration for the Smithy IDL within IntelliJ IDEA.
* [iancaffey/smithy-intellij-plugin](https://github.com/iancaffey/smithy-intellij-plugin) - Community plugin for IDE integration for the Smithy IDL in Intellij IDEA.
* [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.
* [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).## Implementations
* [Smithy Reference Implementation](https://github.com/awslabs/smithy) - Smithy reference implementation in Java
* [Atelier](https://github.com/johnstonskj/rust-atelier) 🚧 - Community implementation of Smithy in Rust## Model Converters
* [Smithy to OpenAPI](https://smithy.io/2.0/guides/converting-to-openapi.html#smithy-to-openapi) - Converts Smithy models to [OpenAPI](https://www.openapis.org/).
* [Smithy to JSONSchema](https://github.com/awslabs/smithy/tree/main/smithy-jsonschema) - Converts Smithy models to [JSONSchema](https://json-schema.org/).
* [Cloud Formation Resource Schemas](https://smithy.io/2.0/guides/generating-cloudformation-resources.html#smithy-to-cloudformation) - Generating Cloudformation resource schemas from Smithy models.
* [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
* [Smithy to Protobuf](https://github.com/disneystreaming/smithy-translate) - smithy-translate (see above)## CICD Support
### GitHub Actions
* [setup-smithy](https://github.com/marketplace/actions/setup-smithy) - Install Smithy CLI to your GitHub Workflow.
* [format-smithy](https://github.com/marketplace/actions/format-smithy) - Checks if Smithy Models are formatted.## Videos
* [Scaling APIs with Smithy](https://www.youtube.com/watch?v=3GpZzu4guTE) - Overview of Smithy's background and features.
* [Abstraction: Creating the Best developer experience / Model-First Design](https://youtu.be/gX2sHQafadA?t=1558) - An introduction to model first design with Smithy.
* [Building with the new AWS SDKs for Rust, Kotlin, and Swift](https://www.youtube.com/watch?v=Nhk1K1AjYvg) - 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](https://www.youtube.com/watch?v=7J0UMAGgAdw) - 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](https://www.youtube.com/watch?v=CA8qGXMQ3cE) - Scala Conference talk introducing the Smithy IDL and the Smithy4s library
* [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
* [Elevating API Design With Smithy](https://www.youtube.com/watch?v=tufEEuPn6Lk) - Functional Scala talk - Intro to Smithy IDL with JVM Tooling and Smithy4s## Blog Posts
* [Introducing Smithy IDL 2.0](https://aws.amazon.com/blogs/developer/introducing-smithy-idl-2-0/) - Launch announcement for the Smithy IDL 2.0.
* [Introducing the Smithy CLI](https://aws.amazon.com/blogs/developer/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](https://aws.amazon.com/blogs/developer/developer-preview-smithy-code-generated-ruby-sdk/) - Launch announcement for and overview of the AWS Ruby SDK built with Smithy.
* [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.## Others
* [Smithy Playground](https://github.com/kubukoz/smithy-playground/) 🚧 - A language server and VS Code client for interactive experimentation with Smithy services.
* [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.
* [Alloy](https://github.com/disneystreaming/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](CONTRIBUTING.md) first.