Artisanal Futures

Setup

Get the Artisanal Futures site running locally.

Prerequisites

ToolVersionCheck with
Node.jsv20+node --version
pnpmResolved via Corepack to the repo's pin, 9.11.0pnpm --version
DockerAny recent version with the docker compose v2 commanddocker --version && docker compose version
GitAny recent versiongit --version

Enable Corepack so pnpm resolves to the version this repo is pinned to, even if a newer pnpm is installed globally:

corepack enable

Get the code

git clone git@github.com:Artisanal-Futures/artisanal-futures-site.git
cd artisanal-futures-site

The 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 -d

Postgres comes up on host port 3377 (mapped to the container's internal 5432).

Install dependencies

pnpm install

This 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 .env

Then fill in real values from one of:

  1. Coolify — the development environment's env config in the Coolify dashboard (ask Andrew for access).
  2. Ask Andrew directly — he can send values over Slack.
  3. 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:gen

Then apply pending migrations to your local database:

pnpm db:migrate

Start the dev server

pnpm dev

Open http://localhost:3000.

Next steps

See Architecture for how the app is laid out, and Database for migrations, seeding, and the shared-database gotcha.

On this page