> ## Documentation Index
> Fetch the complete documentation index at: https://docs.slipway.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> From zero to a live preview URL in about five minutes.

You'll need a GitHub repo with a working `Dockerfile`. By the end, a push or pull request gives you a live URL.

<Frame caption="The dashboard: live deployments, recent activity, and build times at a glance.">
  <img src="https://mintcdn.com/slipway/XyuXtxn4cFnSJANr/images/dashboard/overview.png?fit=max&auto=format&n=XyuXtxn4cFnSJANr&q=85&s=8530f9b24ee42b4dd7662db8dce82d74" alt="Dashboard overview" width="1920" height="1200" data-path="images/dashboard/overview.png" />
</Frame>

<Note>
  New here? Your dashboard shows a **Getting started** checklist that walks you through these same steps — connect a repo, deploy it, open your live app — and ticks each one off as you go.
</Note>

## 1. Sign in

Sign in with GitHub. Slipway uses GitHub for identity — there are no passwords. First time in, you'll be prompted to install the GitHub App.

## 2. Install the GitHub App

Click **Install Slipway GitHub App** and choose which account and repositories to grant. You can scope it to a single repo while you try things out; repos you don't grant stay invisible to slipway.

When you come back, slipway creates an org named after the GitHub account and lists its repos under **Repos**.

<Note>
  **One org per GitHub account.** Re-installing on the same account signs you back into the same org. Installing on a different account creates a different org.
</Note>

## 3. Pick a plan

Slipway routes you to the plan picker. Plans include a 30-day free trial with no credit card required — adding a card during the trial is optional, and nothing runs after the trial until one is on file. Until you pick a plan the org is read-only: you can browse, but deploys are blocked. See [Plans & pricing](/organization/plans).

## 4. Add `slipway.yaml`

Create a file called `slipway.yaml` at the root of your repo. The smallest valid spec:

```yaml slipway.yaml theme={"system"}
version: 1

services:
  web:
    build:
      context: .
    ports:
      - { port: 3000, public: true }
    healthcheck:
      readiness: { http: { path: /healthz, port: 3000 } }
```

This builds the `Dockerfile` at the repo root, exposes port `3000` publicly, and waits for `/healthz` to return 2xx before going live. Adjust the port and path for your app — the [Services reference](/slipway-yaml/services) covers every field.

<Tip>
  No `slipway.yaml`? Slipway can deploy straight from a committed `docker-compose.yml` instead. See [the spec overview](/slipway-yaml/overview).
</Tip>

## 5. Deploy the repo

As soon as your plan is picked you land on **Deploy a repo** (it's also one click away from the dashboard, the Repos page, and the Environments page). Pick your repository, keep the default branch, and hit **Deploy** — or skip to the dashboard and come back later.

That one button creates an environment for the repo, starts the first build, and drops you on the live deployment page. Slipway validates your spec along the way; if `slipway.yaml` is missing or malformed, it tells you exactly what's wrong before anything runs.

The phase ladder on the deployment page tracks `build → deploy → live`.

<Frame caption="A live deployment: phase ladder and public URLs up top, per-service progress below.">
  <img src="https://mintcdn.com/slipway/XyuXtxn4cFnSJANr/images/deployments/detail.png?fit=max&auto=format&n=XyuXtxn4cFnSJANr&q=85&s=323285c6e0438f451a3d2b41336465a9" alt="Deployment detail page" width="1920" height="1200" data-path="images/deployments/detail.png" />
</Frame>

<Note>
  Deploying more than one repo together, or a PR-preview-only setup with nothing permanently running? Use the environment composer instead (**Environments → New environment**) — see [Environments](/environments/overview).
</Note>

## 6. Push and open pull requests

When the status reaches **healthy**, the deployment page shows the public URL.

From here the repo behaves the way you'd expect:

* **Push to the tracked branch** and slipway rebuilds and redeploys it automatically. The environment header shows whether it's set to **auto-update** or **pinned**.
* **Open a pull request** and slipway builds a separate preview with its own URL, torn down when the PR closes. If PR comments are on (the default), the URL is posted into the PR thread.

## Next steps

<CardGroup cols={2}>
  <Card title="Secrets & variables" icon="key" href="/slipway-yaml/secrets-and-variables">
    Wire `DATABASE_URL`, `API_KEY`, and friends in without committing them.
  </Card>

  <Card title="Custom domains" icon="globe" href="/configuration/domains">
    Serve previews under your own domain instead of the default.
  </Card>

  <Card title="Repository settings" icon="sliders" href="/configuration/repositories">
    Auto-deploy, PR comments, and preview authentication.
  </Card>

  <Card title="Deployments" icon="play" href="/deployments/overview">
    Triggers, manual deploys, and the deployment lifecycle.
  </Card>
</CardGroup>
