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

# Create your first project

> Scaffold a Vue todo Site or App and connect it to Goalmatic.

<Note>
  The CLI is in beta. The `beta` npm dist-tag may receive breaking changes between
  beta releases.
</Note>

## Run the local todo

Use Node.js 22.12 or later. Create a local Site with:

```bash theme={null}
npx goalmatic@beta create my-todos --local --type site --name my-todos
cd my-todos
npm ci
npm run dev
```

The CLI prints the created directory. Open the URL printed by Vite. Add a task,
mark it complete, switch between All, Open, and Done, then reload the page.
The local Site keeps its tasks in component memory and resets on refresh.

For the App template, use `--type app` in a new directory. Its local page displays
a Demo badge and resets tasks on refresh. A hosted App uses Goalmatic
authentication and the declared `todos` Table. It never substitutes demo data for
an unavailable account session.

Local creation makes no Goalmatic API requests and creates no remote resources.

## Create a connected project

To create a connected project, omit `--local` and choose a new directory:

```bash theme={null}
npx goalmatic@beta create connected-todos --type app --name connected-todos
```

1. Open the browser link printed by the CLI. Sign in or create your Goalmatic account.
2. Check that the browser code matches your terminal. Approve the terminal request.
3. Select the account that will own your project. The default account is labeled.
4. Follow the GitHub connection prompt. Choose the exact owner and repository, or
   create a repository under that owner.

The result includes the project directory, editor URL, and source preview URL.
`goalmatic.json` records the account, project, and API origin. The generated folder
is connected to Git without replacing your files. GitHub credentials stay on the
Goalmatic server.

To resume an interrupted creation, repeat the same command. The local setup
receipt preserves the original request. Keep it while recovering setup.

## Use the beta packages

```bash theme={null}
npm create goalmatic@beta my-todos -- --local --type site --name my-todos
```

For ongoing commands, use `npx goalmatic@beta` or install the CLI once:

```bash theme={null}
npm install -g goalmatic@beta
```

## Open an existing project

Use an empty destination folder:

```bash theme={null}
goalmatic link PROJECT_ID existing-todos --account ACCOUNT_ID
```

`link` downloads the selected project's existing source. It does not overwrite a
non-empty directory or convert a local demo in place.

Continue with [GitHub](/github) and [previews and releases](/deploy-and-release).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.