# Quick start

> Put an Express app online from a GitHub repository, step by step: sign in, connect the repository, deploy, and what to do if it does not go live.

## Before you start

You need two things:

- A GitHub repository with an Express app.
- A server in that app that listens on `process.env.PORT`. The [Express guide](https://arrangic.com/docs/frameworks/express.md) shows how, and [Check your app](https://arrangic.com/docs/check-your-app.md) checks it for you.

## Deploy your app


1. **Sign in.**

   Open [the dashboard](https://app.arrangic.com) and enter your email address. We email you a 6-digit code. There is no password. If the address is new, you add your name and the account is created.

2. **Start a new app.**

   Open **Apps** and choose **New app**. If the dashboard asks for a plan first, choose one or start the trial. [Pricing](https://arrangic.com/pricing) explains both.

3. **Connect GitHub.**

   The first time, choose **Connect GitHub** and pick the repositories we may read. Only an owner or an admin of the team can do this.

   Is a repository missing from the list later? Choose **Manage access on GitHub** and add it.

4. **Source: choose the code.**

   Pick the **Repository**, the **Branch** and the **Framework** (Express). Every push to this branch will deploy.

5. **Configure: check the settings.**

   Give the app a **Name**. The settings under **Advanced settings** are filled in from your code:

   | Setting | Filled in with |
   | --- | --- |
   | Node version | `.nvmrc`, then `engines.node` in `package.json`, otherwise 22 |
   | Build command | `npm run build` if `package.json` has a build script |
   | Start command | `npm run start` |
   | Port | 3000 |
   | Region | The first region in the list |

   Change what is not right. The region is the one setting you cannot change later. [Build settings](https://arrangic.com/docs/build-settings.md) explains each one.

6. **Size: choose the compute.**

   Pick how much CPU and memory each replica gets. You can change the size later. [Scaling](https://arrangic.com/docs/scaling.md) lists the sizes.

7. **Create the app.**

   Check the summary and choose **Create app**. The first deployment starts at once.

8. **Watch it go live.**

   Open the deployment to follow the **Build log**. When its status is **Live**, your app is online. Its address is at the top of the app and under **Domains**.


## What happens next

- **Every push deploys.** Push to your branch and a new deployment starts. You can switch this off under **Settings**, **Deploy on push**.
- **A new app does not sleep.** It starts with **Keep one replica always on** switched on, so it answers at once. That replica runs all month. To pay only while the app has visitors, switch it off under **Scaling**. See [Sleep and wake](https://arrangic.com/docs/sleep-and-wake.md).
- **Add what the app needs.** [Environment variables](https://arrangic.com/docs/environment-variables.md) for secrets and settings, [deploy commands](https://arrangic.com/docs/deploy-commands.md) for database migrations, a [custom domain](https://arrangic.com/docs/domains.md) for your own address.

## If it does not go live

The deployment page says which step failed. [Troubleshooting](https://arrangic.com/docs/troubleshooting.md) lists the messages and what to do about each.

---

This page on the site: https://arrangic.com/docs/quick-start  
All pages of the documentation: https://arrangic.com/llms.txt
