Setup
Get the Artisanal Futures site running locally.
Prerequisites
| Tool | Version | Check with |
|---|---|---|
| Node.js | v20+ | node --version |
| pnpm | Resolved via Corepack to the repo's pin, 9.11.0 | pnpm --version |
| Docker | Any recent version with the docker compose v2 command | docker --version && docker compose version |
| Git | Any recent version | git --version |
Enable Corepack so pnpm resolves to the version this repo is pinned to, even if a newer pnpm is installed globally:
corepack enableGet the code
git clone git@github.com:Artisanal-Futures/artisanal-futures-site.git
cd artisanal-futures-siteThe repo is public to read/clone, but pushing changes requires membership in the Artisanal-Futures GitHub organization — ask Andrew Alvarez (help@generativejustice.org) for access.
Start the database
This runs PostgreSQL in a Docker container in the background:
docker compose up -dPostgres comes up on host port 3377 (mapped to the container's internal 5432).
Install dependencies
pnpm installThis runs a postinstall step that generates the Prisma client automatically — you don't need to run it separately.
Create your env file
cp .env.example .envThen fill in real values from one of:
- Coolify — the development environment's env config in the Coolify dashboard (ask Andrew for access).
- Ask Andrew directly — he can send values over Slack.
- Shared Credentials — refer to our Shared Credentials for access; ask the senior software dev for assistance with access.
A bare cp .env.example .env is not enough to boot the app. Environment variables are validated at startup by @t3-oss/env-nextjs (src/env.js), and several required vars ship empty in .env.example with validation rules that reject an empty string — so pnpm dev will fail before the server starts.
To actually run the app locally, pick one:
-
Get real values from Coolify or Andrew, or
-
Fill non-empty placeholder values into the blocking vars (real-looking URLs for
.url()fields, any non-empty string for.min(1)fields), or -
Skip validation entirely:
SKIP_ENV_VALIDATION=1 pnpm dev
This escape hatch is especially useful for Docker builds or a quick local boot when you don't need the gated features (Discord/Google/Auth0 login, Coolify provisioning, SimplePress, email, file uploads, Stripe, hCaptcha) to actually work.
Generate the Prisma client and apply migrations
The Prisma client (the typed database access code Prisma builds from prisma/schema.prisma) is generated automatically by the postinstall step above, but re-run it any time you pull schema changes:
pnpm db:genThen apply pending migrations to your local database:
pnpm db:migrateStart the dev server
pnpm devOpen http://localhost:3000.
Next steps
See Architecture for how the app is laid out, and Database for migrations, seeding, and the shared-database gotcha.