https://github.com/fern-api/express-starter
A starter repo for Express, using Fern
https://github.com/fern-api/express-starter
api-first generate-server
Last synced: 5 days ago
JSON representation
A starter repo for Express, using Fern
- Host: GitHub
- URL: https://github.com/fern-api/express-starter
- Owner: fern-api
- Created: 2023-01-29T22:54:04.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2025-01-10T15:04:32.000Z (about 1 year ago)
- Last Synced: 2026-01-19T16:46:23.891Z (26 days ago)
- Topics: api-first, generate-server
- Language: TypeScript
- Homepage:
- Size: 32.5 MB
- Stars: 16
- Watchers: 2
- Forks: 9
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Express + Fern starter repo
This repo is a starter repo for building an Express server using [Fern](https://github.com/fern-api/fern).
**Fern is an open source format for defining REST APIs.** Fern makes it easy to:
1. Define your API
1. Implement your API on the backend
1. Consume your API on the frontend
## Quick start
### Step 1: Fork this repo
### Step 2: Clone your fork
### Step 3: Generate code
Most of the code for this server is auto-generated by Fern!
In a terminal, run:
```
npm install -g fern-api
fern generate
```
### Step 4: Run the backend
```
yarn install
yarn dev
```
Now you can cURL the server!
```
curl 'http://localhost:8080/movies/goodwill-hunting'
```
## Development
To get started, open a VSCode window for the root of this repo:
```
code .
```
Install the recommended extensions. These will give you a better experience in the IDE.
Install dependencies:
```
yarn install
```
Run the server:
```
yarn start
```
You can edit the server code, and the server will automatically reload.
### Auto-generated server code
Nearly all of the server code is generated by Fern when you run `fern generate`.
The generated code lives in [src/api/generated](src/api/generated).
In addition to saving you time, the auto-generated code gives you compile-time safety
that your API is implemented correctly. For example, if you forget to define the `getMovie`
endpoint, you'll get a compile error:

## Changing the API
The API is defined using [Fern](https://www.buildwithfern.comhttps://www.buildwithfern.com/). The definition
lives in the [fern/](fern/api/definition) directory. You can edit these YAML files
to update the API. Check out the [docs](https://docs.buildwithfern.com/definition) to read more about defining APIs.
Most of the server code in this repo is **automatically generated
by Fern.** You can regenerate the code using the Fern CLI:
```
npm install -g fern
fern generate
```
This will output newly generated code to [src/api/generated](src/api/generated).
When you change your API, you'll get compile errors if you're not implementing
the API correctly.
## Issues & contributing
If you run into any problems while using this ticket, plesae [file an
issue](https://github.com/fern-api/express-starter/issues). Of course, PRs are
welcome and encouraged!