Run it locally
For contributors. Set up the Prood monorepo and run every application on your machine.
This section is for people working on Prood's source. It walks you through installing the monorepo, configuring environment variables, seeding the database, and running every application in development. Opening a store on Prood needs none of this: start with Get started.
Prerequisites
| Tool | Version |
|---|---|
| Node.js | 24 or later |
| pnpm | 10 |
| Neon Postgres | A database URL (local Docker or Neon cloud) |
Optional for full checkout flows:
- Upstash Redis — checkout session storage
- Stripe (or Easypay / Ifthenpay) — a test account. Keys are entered per store in the dashboard, under Integrations
Quick install
git clone <your-repo-url>
cd prood-commerce-platform
pnpm install
cp .env.example .env.local
pnpm env:link
pnpm db:migrate
pnpm db:seed
pnpm devAfter pnpm dev, Turbo starts all apps:
| App | URL |
|---|---|
| Storefront | http://localhost:3000 |
| Marketing | http://localhost:3001 |
| Dashboard | http://localhost:3002 |
| Docs | http://localhost:3003/docs |
| Checkout | http://localhost:3004 |
| API | http://localhost:3005 |
Monorepo applications
| App | Port | Purpose |
|---|---|---|
storefront | 3000 | Customer-facing store: catalog, cart, checkout redirect, account |
web | 3001 | Marketing site (prood.com) |
dashboard | 3002 | Merchant admin: products, orders, integrations, domains, team |
docs | 3003 | This documentation site (Fumadocs + OpenAPI) |
checkout | 3004 | Hosted payment app: Stripe, Easypay, Ifthenpay |
api | 3005 | Commerce REST API (/v1/*), MCP server, Agent Auth |
Database scripts
pnpm db:migrate— Applies the versioned migrations inpackages/platform/drizzlewithdrizzle-kit migrate: the commerce tables, the Better Auth tables (user, session, account, organization, agent auth,tenant_domain,integration_config), theprood_approle and the row-level-security policies. Already-applied migrations are skipped, so re-running it is a no-op.pnpm db:seed— Seeds the demo store: theorg_demoorganization (slugprood-demo), European countries, the demo catalog in EUR, and an admin user fromADMIN_EMAIL/ADMIN_PASSWORDwhen those env vars are set. Idempotent.
The storefront resolves the demo store from its host: open http://prood-demo.localhost:3000.
Shared environment
All apps read from a single root .env.local. Run pnpm env:link once to symlink apps/*/.env.local → root .env.local. This avoids drift between apps.
Documentation map
Installation
Detailed install steps, monorepo layout, and build commands.
Walkthrough
End-to-end flow: browse → cart → checkout → payment.
Environment variables
Complete reference for every env var in `.env.example`.
Default demo credentials
After seeding, the platform creates an admin user if ADMIN_EMAIL and ADMIN_PASSWORD are set in .env.local. Use these to sign in to the dashboard at :3002.
The seeded catalog belongs to the org_demo organization. The storefront serves it at prood-demo.localhost:3000 (the {slug}.{NEXT_PUBLIC_PLATFORM_DOMAIN} host).