Show HN: Fern, a language for defining REST APIs that compiles into OpenAPI https://ift.tt/tRdBPjm
January 11, 2023
0
Show HN: Fern, a language for defining REST APIs that compiles into OpenAPI Hi HN, this is Danny, Deep, and Zach. We built Fern after our previous ed tech startup failed. We were frustrated with how much time we spent writing “API code” instead of working on the actual product. We tried to use OpenAPI but we were underwhelmed - the generated code wasn’t idiomatic and it still required manual work (custom templates, scripts, manually publishing SDKs to registries). The Fern compiler takes your API as input and invokes generators that output things like: SDKs, server code, a Postman collection, and an OpenAPI spec. Some technical highlights about the compiler + generators: - The compiler (available as a CLI) handles syntactic + semantic validation. It also includes a linter that encodes best practices. If your API Definition compiles, you can have high confidence that the SDKs will generate correctly. - After all the parsing and validation, the compiler outputs an intermediate representation that gets handed off to the generators. This prevents each generator from re-implementing the same parsing and validation logic. - Each generator is implemented in the language it is targeting - e.g. the Python generators are written in Python, the TypeScript generators are written in TS. It makes the SDKs more idiomatic because every programming language generally has the best tooling/libraries for generating code in itself. We also think it’ll make community involvement + contribution easier. - The generators can output the code to disk, but also push the code to a Github repo and publish the SDK directly to registries (e.g. npm, Maven). We are looking for devs to use Fern for API development. If you have any feedback about the process, compiler, or the generated code, we’d love to hear it. "Plant Store" example: https://ift.tt/vr08oih Generated repos: - https://ift.tt/h2vSRMU - https://ift.tt/wRr2hqN - https://ift.tt/eyMInsB - https://ift.tt/cME5Aqf https://ift.tt/Li1qEhv January 12, 2023 at 04:39AM
Tags