# Deploying a Nodejs Typescript application to Render

If you're looking for a good alternative to Heroku that allows you to deploy your applications for free, the answer is [Render](www.render.com)
 
This is a short guide for deploying a Node.js & Express Typescript application to render.

# What you need
- A Render account
- A Github or Gitlab account
- A computer with Node.js and NPM/Yarn


# Creating the typescript app
Create a new node project  

```
yarn init
```
Install typescript, express and typescript Node compiler and their types

```
yarn add typescript ts-node express
yarn add  @types/node @types/express -Dev
```

Once done, create a ``src/index.js`` file and paste the following into it

```
import express from "express";

const application = express();

const port = 3000;

application
  .get("/", (req, res) => {
    res.send({
      message: "Hello, World!",
    });
  })


application.listen(port, () => {
  console.log(`Application listening on port ${port}`);
});
```

In your ``tsconfig.json``,  add

```
{
  "compilerOptions": {
    "esModuleInterop": true,
    "outDir": "./build"
  }
}
```

You can run the application locally with 
```
npx ts-node ./src/application.ts
```

Finally, let's deploy the application,

Add the following ``build`` and ``start`` commands to the scripts section of your ``package.json``:

```
{
  "scripts": {
    "build": "tsc",
    "start": "node ./build/index.js"
  }
}
```

On Render, Create a new [Web Service](https://dashboard.render.com/select-repo?type=web), choose the free package and give Render permission to access your repository.

Configure your app to use the following settings:
> - Environment: ``Node``
> - Build Command: ``yarn;``, ``yarn build``
> - Start Command: ``yarn start``

That's it, your application has been deployed for free on Render


