WWebBuddyMarketplace
Get started

Quick start

Run Adcraft on your own machine with no keys and no database, make a sample ad, then add provider keys and PostgreSQL as you need them.

3 min readUpdated Oct 17, 2026Applies to Adcraft 1.0.0

On this page

This gets Adcraft running on your laptop. You need Node.js 22 or newer; pnpm is installed for you by Corepack. Nothing else is required for a first look.

1. Install and start

From the folder you unzipped:

Terminal
corepack enable
pnpm install --frozen-lockfile
cp .env.example .env

Open .env and set the one required value:

.env
# paste the output of: openssl rand -base64 32
AUTH_SECRET=

Then start the app:

Terminal
pnpm --filter @adcraft/app dev

Open http://localhost:3000. The marketing site is at /, and the product starts at /sign-in.

Note

With no DATABASE_URL, the app runs an embedded PostgreSQL (PGlite) that keeps its data in .data/pglite in the project folder, and creates its tables on first use. It survives restarts on your machine, but it is meant for evaluation only.

2. Sign in

In development the sign-in page shows a development sign-in box: type any email address and you are signed in, with no email sent. It is never shown in production. Set DEV_LOGIN=0 to hide it locally too.

The first sign-in takes you to /welcome: name your workspace and your first brand, optionally give the brand's website, and you start with 10 trial credits.

3. Make a sample ad

With no AI keys, you can walk through the whole flow:

  1. Add a product under Library: upload a photo, or paste a product page address. Without FAL_KEY the background is not removed; the original photo is kept.
  2. Write a brief under Briefs. Suggest and Improve return a labelled sample without a text key.
  3. Generate ideas. Without ANTHROPIC_API_KEY you get eight "[Sample]" concepts. A run costs 1 credit, sample or not.
  4. Select an idea and choose Make the ad, Make a video or Make the UGC video.

What you see next depends on keys:

Step Without keys
Static ad (single) Generation is disabled until an image provider is connected; the form says which key to add
Bulk static ads Placeholder gradient scenes behind your layout
Product video Placeholder stills with a slow zoom, assembled into a real video file
Presenter video A "presenter card" placeholder with a silent voice track
Character Studio Needs fal.ai and HeyGen before it can generate
Publishing Built-in sandbox ad accounts with simulated campaigns and metrics

Placeholder runs still spend credits, so you may run out of trial credits quickly. Make yourself an admin (next step) and add credits under Admin → Organisations.

4. Make yourself an admin

Add your address to .env and restart the dev server:

.env
ADMIN_EMAILS=you@example.com

Sign in with that address and open /admin. First admin and the admin panel explains how this works in production.

5. Turn on the AI

Add keys to .env and restart. The two that matter most:

.env
# Concepts, copy and brief help (Claude)
ANTHROPIC_API_KEY=sk-ant-...

# Images, background removal and video (default models run on fal.ai)
FAL_KEY=...

Add HEYGEN_API_KEY and ELEVENLABS_API_KEY for presenter videos and Character Studio. AI models and providers lists every key and what it switches on. Admin → Providers shows which are set.

6. Use a real database (optional)

Point the app at PostgreSQL so your data lives somewhere durable. A local Docker container is enough:

Terminal
docker run -d --name adcraft-db -p 5433:5432 \
  -e POSTGRES_PASSWORD=postgres postgres:18
.env
DATABASE_URL=postgres://postgres:postgres@localhost:5433/postgres

Apply the schema, then restart the app:

Terminal
pnpm --filter @adcraft/db db:migrate
pnpm --filter @adcraft/app dev

The migration command reads DATABASE_URL from .env at the project root.

Good to know in development

  • Jobs run inside the dev server unless Inngest is configured. To try Inngest locally, run pnpm inngest (the Inngest Dev Server on port 8288) and set INNGEST_DEV=1 together with INNGEST_EVENT_KEY; jobs are only sent to Inngest when an event key is set.
  • Stripe is off by default. In development, plan and top-up buttons simulate the purchase and add credits, which is handy for testing. A production install without Stripe refuses purchases instead. See Running without Stripe.
  • Uploads and generated files are written to .data/files in the project folder.
  • Checks: pnpm typecheck, pnpm test and pnpm build run across the monorepo.

Next steps