Create a Express Boilerplate with Typescript

Bare minimum to get started with a backend API

ExpressJS is the most popular framework for NodeJS applications. It's very versatile and offers no restrictions. So you can do whatever you want and design your application however you like.

You can refer to the following article if you want a boilerplate without ExpressJS support.

https://www.mohammadfaisal.dev/blog/create-nodejs-typescript-boilerplate

Get the NodeJS boilerplate

Let's first clone the boilerplate repository where we have a working NodeJS application with Typescript, EsLint, and Prettier already set up. We will integrate Express on top of this.

git clone https://github.com/Mohammad-Faisal/nodejs-typescript-skeleton.git

Install the dependencies

Then go inside the project and install the dependencies.

cd nodejs-typescript-skeleton
yarn add Express

And also, add the type definitions for the express module.

yarn add -D @types/express

Test it out!

Go inside the src/index.ts file, import the dependencies, and create a basic express application.

import express, { Application, Request, Response } from "express";

const app: Application = express();

Then let's create a basic route that will accept a GET request and return a result.

app.get("/", async (req: Request, res: Response): Promise<Response> => {
  return res.status(200).send({
    message: "Hello World!",
  });
});

Then start the server on port 3000;

const PORT = 3000;

try {
  app.listen(PORT, (): void => {
    console.log(`Connected successfully on port ${PORT}`);
  });
} catch (error: any) {
  console.error(`Error occured: ${error.message}`);
}

And then run the application.

yarn dev

Go ahead and hit the following URL http://localhost:3000/, and you should be greeted with the following response.

{ "message": "Hello World!" }

Add Bodyparser

Now, this is the bare minimum to get started with Express. But in real life, we need a couple of things to get the server working properly.

to handle HTTP POST requests in Express, we need to install a middleware module body-parser

Let's install it first.

yarn add body-parser
yarn add -D @types/body-parser

Then use it inside the index.ts file.

import bodyParser from "body-parser";

const app: Application = express();

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

And add another route to handle HTTP POST requests.

app.post("/post", async (req: Request, res: Response): Promise<Response> => {
  console.log(req.body);
  return res.status(200).send({
    message: "Hello World from post!",
  });
});

You will notice that inside the route handler, we can get the body of the request by

req.body;

It's possible because of the use of body-parser

Conclusion

That's it. Now you have a basic express application that can expect HTTP requests.

Github Repository

https://github.com/Mohammad-Faisal/express-typescript-skeleton


Share this post


Read more articles...

team

Create a NodeJS Boilerplate with Typescript

team

Error handling in a NodeJS application

team

Production Grade NodeJS Logging

team

Setup Eslint Prettier and Husky in NodeJS

team

Multiple Environment in NodeJS Application

team

Request Validation in ExpressJS

team

Add swagger to an ExpressJS application

team

Dockerize a Express-Typescript Application

team

Using Sequelize with ExpressJS and PostgreSQL

Profile Image

Who I am

Hi, I amMohammad Faisal, A full-stack software engineer @Cruise , working remotely from a small but beautiful country named Bangladesh.

I am most experienced inReactJS,NodeJS andAWS

Buy Me a Coffee Widget