---
title: "New app monorepo"
description: "From an empty folder to a Nuxt + Supabase monorepo with the agent layer, auth starter and first change."
canonical_url: "https://razcue-agent-kit.vercel.app/en/guides/new-app-monorepo"
---
# New app monorepo

> From an empty folder to a Nuxt + Supabase monorepo with the agent layer, auth starter and first change.

<steps>

### Scaffold

```bash [Terminal]
npx @razcue/agent-kit init shop --kind monorepo --apps web,app,docs
cd shop && npm install
```

You get `apps/web` (public site, prerendered), `apps/app` (SPA + server routes + Supabase), `apps/docs` (Docus), `packages/ui` (shadcn-vue components, Tailwind v4 theme), `packages/shared` (Zod schemas and utils), `supabase/migrations/`, `supabase/test-data/` and a CI workflow.

### Connect Supabase

Create a Supabase project, copy `apps/app/.env.example` to `.env` with your URL and keys, and apply `supabase/migrations/` in order in the SQL Editor. The first migration locks the Data API to `service_role` and creates `_env`; set it on this database:

```sql [SQL Editor]
INSERT INTO public._env (name) VALUES ('dev') ON CONFLICT (id) DO UPDATE SET name = excluded.name;
```

With `--supabase-mcp <project-ref>` agents also get a read-only Supabase MCP server to check the live schema.

### Run the checks

```bash [Terminal]
npm run check         # typecheck + tests
npm run dev:app       # http://localhost:3001
```

### Start Claude Code

```bash [Terminal]
claude
```

Accept the plugin, then describe the first feature. A new module goes through the [spec lane](https://razcue-agent-kit.vercel.app/en/guides/spec-lane-change).

</steps>

## Conventions the agent follows

The `stack-nuxt-supabase` skill (in `.claude/skills/`) loads when the agent touches pages, server routes, migrations, RPCs or test data:

- the browser never reaches the database — all data goes through `apps/app/server/api/*` with the service-role client;
- writes go through RPCs (SECURITY DEFINER), after Zod validation;
- schemas are shared from `packages/shared`;
- migrations are append-only and idempotent;
- npm workspaces only.


## Sitemap

See the full [sitemap](https://razcue-agent-kit.vercel.app/sitemap.md) for all pages.
