---
title: Quick start
description: Create a multi-page Markless app with npm create markless, start it, and click the starter counter.
---

One page in one tab works. For many pages, start from a starter app.

The starters are multi-page apps built with `@markless/router`. Each file in `pages/` becomes a URL. The router renders each page on a server first, with Nitro. If you want no server at all, use the [browser-only setup](/start/browser-only).

## Before you start

You need Node.js `^20.19.0` or `>=22.12.0`.

## Create the app

1. **Run the create command**

    ```bash
    npm create markless@latest
    ```

    The command asks what you are building, a name, and a runtime. Pick **Learn Markless**, the default. It writes nothing until you pick **Create app**.

2. **Start the dev server**

    ```bash
    cd my-markless-app
    npm run dev
    ```

3. **Open the page**

    Open `http://localhost:5173`. You see a **Markless Router** heading and a **Count 0** button. Click it.

Notice that the button text changes and nothing else does. This is the same counter as before, now inside an app.

`npm create markless@latest` installs version 0.4.0 today. These docs follow the repo at 0.5.0.

## Skip the questions

Pass a name and `--yes` to accept the defaults:

```bash
npm create markless@latest my-app -- --yes
```

Add `--starter` to pick another starter:

| Starter | Prompt label | What you get |
| --- | --- | --- |
| `minimal` | Learn Markless | One counter page. This is the default. |
| `app` | Build an app | A `document.tsrx`, plus 404 and 500 pages. |
| `full-stack` | Full-stack app | The `app` starter, plus `api/` and `middleware/`. |
| `docs` | Write docs | An MDX docs site with a layout and a sidebar. |

Other flags: `--format node|deno|bun`, `--no-install`, `--no-git`, and `--agents none`.

:::warning[Type npm run dev, not npm dev]
The "Next steps" text and the generated README say `npm dev`. npm answers `Unknown command: "dev"`. Use `npm run dev`. With Deno, use `deno task dev`.
:::

:::warning[Why does the app starter show an error in dev?]
Today, `npm run dev` stops on `document.tsrx` with `MARKLESS_CAPTURE_METADATA_MISSING`. This hits the `app` and `full-stack` starters. `npm run build` and then `npm run preview` work. The default `minimal` starter has no `document.tsrx`, so its dev server works.
:::

**Next:** Ready to write your own component? [Your first component →](/start/your-first-component)
