# Quickstart (/en/docs/quickstart)

<PillRow>
  <PillLink href="https://nextjs.coremvp.com/" primary>
    Live demo
  </PillLink>

  <PillLink href="/en/docs/getting-started/after-purchase">
    After Purchase
  </PillLink>
</PillRow>

Go from an empty folder to a running CoreMVP app with sign-in and a saved
Project. The steps are the same for Next.js and TanStack Start. Where a
command differs, pick your framework in the tabs and every tab on the page
follows.

## Before you start

Install these tools:

| Tool                                              | Version                                               | Check            |
| ------------------------------------------------- | ----------------------------------------------------- | ---------------- |
| [Git](https://github.com/git-guides/install-git)  | Any current release                                   | `git --version`  |
| [Bun](https://bun.sh/docs/installation)           | 1.4 or later                                          | `bun --version`  |
| [Node.js](https://nodejs.org/en/download)         | 22.23.4 or later on 22.x, or 24.22.1 or later on 24.x | `node --version` |
| [Docker](https://docs.docker.com/engine/install/) | Running before you start Supabase                     | `docker info`    |

You need access to your template's private repository; [After Purchase](/en/docs/getting-started/after-purchase)
explains how to claim it. Payment providers and email are not needed for the
first run.

## Run the app

<Steps>
  <Step>
    ### Clone and install

    <Tabs groupId="coremvp-docs-framework" items={['Next.js', 'TanStack Start']} persist>
      <Tab value="Next.js">
        ```bash interactive=true
        git clone https://github.com/coremvp/nextjs.git <my-app>
        cd <my-app>
        bun install --frozen-lockfile
        ```
      </Tab>

      <Tab value="TanStack Start">
        ```bash interactive=true
        git clone https://github.com/coremvp/tanstack-start.git <my-app>
        cd <my-app>
        bun install --frozen-lockfile
        ```
      </Tab>
    </Tabs>

    Run every later command from this folder. If Git reports
    `Repository not found`, Git is using a GitHub account without access to the
    repository. Use the account that received the invitation, or see
    [Repository access needs repair](/en/docs/getting-started/after-purchase#repository-access-needs-repair).
  </Step>

  <Step>
    ### Start local Supabase

    ```bash
    bunx supabase start
    ```

    The repository already includes its Supabase configuration and migrations,
    so do not run `supabase init`. The first start downloads Docker images and
    can take several minutes. It finishes by printing the local API and Studio
    URLs.
  </Step>

  <Step>
    ### Verify the local schema

    ```bash
    bunx supabase migration list --local
    ```

    Every migration is listed under both **Local** and **Remote**. If one is
    missing, see [Troubleshooting](#troubleshooting).
  </Step>

  <Step>
    ### Generate local settings

    ```bash
    ./coremvp env sync
    ```

    The CoreMVP CLI reads the running Supabase stack and writes the app URL,
    Supabase keys and database connection to `.env.local`. Warnings about unset
    billing or email settings are expected at this point.
  </Step>

  <Step>
    ### Start the app

    ```bash
    bun run dev
    ```

    Open [http://localhost:3000](http://localhost:3000) and the app's home page
    loads. Leave this process running.
  </Step>
</Steps>

## Save your first Project

The app is ready when a record you create survives a reload.

<Steps>
  <Step>
    ### Create an account

    Open [http://localhost:3000/signup](http://localhost:3000/signup) and sign up
    with any email and a password of at least 8 characters. The included local
    settings do not require email confirmation. After sign-up the app opens its
    pricing page; you do not need to buy anything to continue.
  </Step>

  <Step>
    ### Create a Project

    Open [http://localhost:3000/dashboard](http://localhost:3000/dashboard),
    choose your **Personal** Organization, then open **Projects** in the sidebar.
    Choose **New project**, enter a **Project name**, and select
    **Create Project**.
  </Step>

  <Step>
    ### Reload the page

    The app opens the new Project's page. Reload it: the Project still loads,
    and it is listed when you open **Projects** again. Sign-up, the dashboard
    and the database work together, and your local setup is complete.
  </Step>
</Steps>

## Troubleshooting

| Symptom                                                          | Fix                                                                                                                                                                                     |
| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| You bought CoreMVP but cannot open the TanStack Start repository | Email [support@coremvp.com](mailto:support@coremvp.com) with your GitHub username so support can grant access to [`coremvp/tanstack-start`](https://github.com/coremvp/tanstack-start). |
| `bun: command not found`                                         | Install Bun or add it to your shell `PATH`, then open a new terminal.                                                                                                                   |
| `Cannot connect to the Docker daemon`                            | Start Docker, then rerun `bunx supabase start`.                                                                                                                                         |
| `./coremvp env sync` reports that Supabase is not running        | Run `bunx supabase start`, wait for the URLs, then sync again.                                                                                                                          |
| A Supabase port or port `3000` is already in use                 | Stop the other app or Supabase project. To run two Next.js checkouts at once, follow [Run another project](/en/docs/nextjs/run-locally#run-another-project).                            |
| A migration is missing from **Local** or **Remote**              | On a new, empty database, run `bunx supabase db reset --local` and list the migrations again. Reset deletes local data.                                                                 |
| `template database "template1" has a collation version mismatch` | Recreate local data with `bunx supabase stop --no-backup && bunx supabase start`. This deletes this checkout's local data.                                                              |
| The dashboard cannot load data                                   | Run `./coremvp env list` to see which settings are set without printing values. Sync again, then restart `bun run dev`.                                                                 |

## What's next

<Cards>
  <Card title="Projects" href="/en/docs/projects" description="Trace the Project you just saved and extend it." />

  <Card title="Application Architecture" href="/en/docs/application-architecture" description="See where pages, API routes, services and queries live." />

  <Card title="Keep your product in your own repository" href="/en/docs/getting-started/after-purchase#clone-and-keep-your-own-repository" description="Push your clone to a private repository and keep CoreMVP as upstream." />

  <Card title="Billing" href="/en/docs/billing" description="Add Stripe or Polar checkout when you are ready to charge." />
</Cards>
