# Build your first app

> A 15-minute walkthrough of the Shoplazza App lifecycle with Shoplazza CLI: authenticate, scaffold, add an extension, develop locally, deploy, check versions.

This tutorial walks through the full app lifecycle with Shoplazza CLI — from an empty directory to a deployed app with an extension. It should take about 15 minutes.

## Prerequisites

* Shoplazza CLI installed — see [Install](../install)
* A Shoplazza partner account

## 1. Authenticate

```shell
shoplazza auth login --store-domain my-store.myshoplaza.com --domain products
```

Verify:

```shell
shoplazza auth status
```

## 2. Scaffold the app

`app init` creates a new app and scaffolds its project into a sub-directory:

```shell
shoplazza app init --name "my-app"
```

If your account belongs to multiple partners, add `--partner <id>`. To link an existing app instead, use `shoplazza app init --client-id <client_id>`.

```shell
cd my-app
```

## 3. Add an extension

Scaffold a theme extension into the project:

```shell
shoplazza app extension create --type theme --name my-theme --theme-type basic
```

`--type` accepts `theme`, `checkout`, or `function`. For a function extension: `--type function --name my-function`.

## 4. Develop locally

Start the dev server with hot module replacement for all extensions:

```shell
shoplazza app dev
```

The store comes from the active app config. Use `--debug` for verbose extension builds.

## 5. Deploy

Build and deploy the app and all its extensions to production:

```shell
shoplazza app deploy
```

## 6. Review deployed versions

```shell
shoplazza app versions
```

## Next steps

* [Build a checkout extension](./build-a-checkout-extension)
* [app command reference](../commands/app) — Every flag and sub-command
* [Configuration files](../guides/configuration) — `shoplazza.app.toml` and multi-config workflows
