Fern, a language for defining REST APIs that compiles into OpenAPI
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://github.com/fern-api/plantstore-api Generated repos: - https://github.com/fern-api/plantstore-node - https://github.com/fern-api/plantstore-java - https://github.com/fern-api/plantstore-postman - https://github.com/fern-api/plantstore-openapi
Share cardActual performance
Launch Intel predictions
Analyze your own launch →Correct prediction on native model
Similar products
Ruby on Roda – REST APIs with Roda and Sequel
Expressa – build REST apis without code
Easily consume REST APIs with Go
Testing REST, GraphQL APIs
WunderGraph – Aggregate REST and GraphQL APIs, Add AuthN/Z and Caching
Codeless Tests for GraphQL and REST APIs
Connecting REST APIs
PSX – Build fully typed REST APIs
Use REST APIs? Test them!
ToolMesh – turn all your REST APIs into MCP tools via declarative YAML