Files
claudemesh/SETUP-PROMPT.md
Alejandro Gutiérrez d3163a5bff feat(db): mesh data model — meshes, members, invites, audit log
- pgSchema "mesh" with 4 tables isolating the peer mesh domain
- Enums: visibility, transport, tier, role
- audit_log is metadata-only (E2E encryption enforced at broker/client)
- Cascade on mesh delete, soft-delete via archivedAt/revokedAt

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-04 21:19:32 +01:00

6.8 KiB

Autonomous Project Setup Prompt

Copy and paste the following prompt into Claude Code (or any AI coding agent) to autonomously set up this project from scratch.


Prompt

Clone and fully set up the TurboStarter Kit project so that `pnpm dev` runs successfully with the web app accessible at http://localhost:3000.

Repository: https://github.com/mou-minery/turbostarter-kit

Execute every step below in order. Stop and report if any step fails.

### Step 1: Clone the repository

git clone https://github.com/mou-minery/turbostarter-kit.git
cd turbostarter-kit

### Step 2: Verify prerequisites

Check that the following are installed and meet minimum versions. If any are missing, stop and report:
- Node.js >= 22.17.0 (`node --version`)
- pnpm 10.25.0 (`pnpm --version` — if missing, run `corepack enable && corepack prepare pnpm@10.25.0 --activate`)
- Docker and Docker Compose (`docker --version` and `docker compose version`)

Also verify Docker daemon is running: `docker info`

### Step 3: Install dependencies

pnpm install

### Step 4: Create root .env file

Create `.env` in the project root with this exact content:

DATABASE_URL="postgresql://turbostarter:turbostarter@localhost:5440/core"
PRODUCT_NAME="TurboStarter"
URL="http://localhost:3000"
DEFAULT_LOCALE="en"

CRITICAL: The database port MUST be 5440 (not 5432). The docker-compose.yml maps container port 5432 to host port 5440.

### Step 5: Create apps/web/.env.local file

Copy the example and apply necessary overrides:

cp apps/web/.env.example apps/web/.env.local

Then edit apps/web/.env.local to ensure these values are set correctly:

# These MUST reference the root .env values correctly
NEXT_PUBLIC_PRODUCT_NAME="TurboStarter"
NEXT_PUBLIC_URL="http://localhost:3000"
NEXT_PUBLIC_DEFAULT_LOCALE="en"

# Theme
NEXT_PUBLIC_THEME_MODE="system"
NEXT_PUBLIC_THEME_COLOR="orange"

# Auth — password login enabled, magic link disabled
NEXT_PUBLIC_AUTH_PASSWORD="true"
NEXT_PUBLIC_AUTH_MAGIC_LINK="false"
NEXT_PUBLIC_AUTH_PASSKEY="true"
NEXT_PUBLIC_AUTH_ANONYMOUS="true"
BETTER_AUTH_SECRET="lT4GdPj3OSx00OcTRUdwywn1DNgBBuvK"

# Seed credentials for dev accounts
SEED_EMAIL="me@turbostarter.dev"
SEED_PASSWORD="Pa$$w0rd"

# Billing
BILLING_MODEL="recurring"

# Email — use default "noreply" so no real provider is needed
EMAIL_FROM="hello@resend.dev"
CONTACT_EMAIL="hello@resend.dev"

# Storage — point to local MinIO from docker-compose
S3_REGION="us-east-1"
S3_BUCKET="uploads"
S3_ENDPOINT="http://localhost:9000"
S3_ACCESS_KEY_ID="minioadmin"
S3_SECRET_ACCESS_KEY="minioadmin"

Leave ALL other optional provider variables (Stripe, Resend, Sentry, PostHog, OpenAI, etc.) with their placeholder values or empty — they are all optional and validated with `optional()` in the zod schemas. The app will start without them.

DO NOT remove any `<your-...>` placeholder lines — leave them as-is. They will not cause errors because env validation treats them as optional strings.

### Step 6: Start Docker infrastructure

Start PostgreSQL (pgvector) and MinIO:

docker compose up -d --wait

Verify both services are healthy:

docker compose ps

Expected: both `db` and `minio` should show status "healthy". The `minio-init` service will run once and exit (status "exited (0)" is normal — it creates the uploads bucket).

If services are not healthy after 60 seconds, check logs with `docker compose logs` and report the error.

### Step 7: Verify database connectivity

Test that PostgreSQL is reachable on port 5440:

docker compose exec db pg_isready -U turbostarter

This should print "accepting connections".

### Step 8: Run database migrations and seed

pnpm services:setup

This command:
1. Starts docker services (already running, so it's a no-op)
2. Runs database migrations via drizzle-kit (`db:migrate`)
3. Seeds initial data (`db:seed`)

If `pnpm services:setup` fails, try running the steps individually:

pnpm with-env turbo setup

Or manually:

pnpm --filter @turbostarter/db db:migrate
pnpm --filter @turbostarter/db db:seed

Then seed auth accounts:

# This requires sourcing the web env file first
set -a && source apps/web/.env.local && set +a && pnpm --filter @turbostarter/auth db:seed

### Step 9: Start the development server

pnpm dev

This starts all workspace apps via Turborepo. The Next.js web app should compile and become available at http://localhost:3000.

### Step 10: Verify the app is working

Wait for the dev server to finish compiling (watch for "Ready" or "compiled" in the output), then verify:

curl -s -o /dev/null -w "%{http_code}" http://localhost:3000

Expected: HTTP 200 (or 307 redirect which also means the app is running).

If you get a non-zero exit code or connection refused, wait 15 more seconds and retry — Next.js needs time to compile on first request.

### Step 11: Verify dev login works

Open http://localhost:3000 in a browser. You should be able to log in with:
- Email: me+user@turbostarter.dev
- Password: Pa$$w0rd

Or the admin account:
- Email: me+admin@turbostarter.dev
- Password: Pa$$w0rd

### Troubleshooting

If any step fails, check these common issues:

1. **Port 5440 already in use**: Another PostgreSQL or service is using port 5440. Run `lsof -i :5440` to find it, or change POSTGRES_PORT in docker-compose.yml and update DATABASE_URL accordingly.

2. **Port 9000/9001 already in use**: Another service (often another MinIO instance) is using the port. Run `docker compose down` first to clean up, or change MINIO_API_PORT/MINIO_CONSOLE_PORT.

3. **pnpm install fails**: Make sure you're using pnpm 10.25.0 exactly. Run `corepack prepare pnpm@10.25.0 --activate`.

4. **Node version too old**: This project requires Node >= 22.17.0. Use nvm or fnm to install: `nvm install 22`

5. **Database migration fails**: Ensure Docker services are healthy first. Check `docker compose logs db` for PostgreSQL errors.

6. **Build errors about missing env vars**: The build uses SKIP_ENV_VALIDATION. If you still get errors, ensure the root .env and apps/web/.env.local both exist and have the values from steps 4-5.

7. **"Module not found" or dependency errors**: Run `pnpm install` again. If it persists, run `pnpm clean` then `pnpm install`.

### Service URLs after setup

| Service         | URL                    | Credentials                        |
|-----------------|------------------------|------------------------------------|
| Web App         | http://localhost:3000  | See dev login above                |
| PostgreSQL      | localhost:5440         | turbostarter / turbostarter        |
| MinIO API       | http://localhost:9000  | minioadmin / minioadmin            |
| MinIO Console   | http://localhost:9001  | minioadmin / minioadmin            |

### Cleanup commands

To stop everything:
  pnpm services:stop   # stops Docker containers
  # Ctrl+C to stop the dev server

To reset everything:
  docker compose down -v   # removes containers AND data volumes
  pnpm --filter @turbostarter/db db:reset