DocsDevelopment

Commands

Every Makefile target and package script — what each one actually runs.

Makefile targets

TargetRunsNotes
make installforge install foundry-rs/forge-std OpenZeppelin/openzeppelin-contracts --no-commit + pnpm installFirst-time setup
make buildforge buildContracts only
make testforge test -vvv90 tests, 13 suites
make paperpnpm --filter keeper exec tsx ../scripts/paper-copy.tsPhase 0 engine; no key/RPC needed
make deploy-testnetforge script DeployTestnet.s.sol --rpc-url robinhood_testnet --broadcastSources .env; never deploys SeatToken, never sets a router
make deploy-mainnetforge script DeployMainnet.s.sol --rpc-url robinhood --broadcastRefuses without CONFIRM_MAINNET=I_UNDERSTAND
make deploy-phase2forge script DeployPhase2.s.sol --rpc-url robinhood --broadcastRefuses without both CONFIRM_MAINNET and CONFIRM_SEAT_TGE
make write-addressespnpm exec tsx scripts/write-addresses.tsRegenerates app/src/lib/addresses.ts from broadcast logs
make app-devpnpm --filter @seat/app devThe blotter
make site-dev / make site-buildpnpm --filter @seat/site dev/buildThis documentation site (dev port 3100)
make keeper-testnetkeeper with EXECUTION_MODE=PAPER, CHAIN_ID=46630Paper executor unless live guards pass (they do not on 46630)
make keeper-mainnetkeeper with EXECUTION_MODE=LIVE, CHAIN_ID=4663, SWAP_ROUTER_CONFIGURED=1Still dry-runs unless SEAT_SUBMIT_TX=1

The Makefile prepends ~/.foundry/bin to PATH, so cron/systemd contexts work without an interactive shell profile.

Vercel (this site)

The public project site is @seat/site. The repo vercel.json sets rootDirectory to site. Do not point a production project at app/ — that package is the desk blotter and needs a built @seat/sdk.

On the Vercel project: Settings → Build and Deployment → Root Directory → site, then Redeploy. A site-only commit is skipped while Root Directory is still app.

Package scripts

PackageScripts
rootbuild / test / typecheck (recursive), paper
keeperstart (tsx src/index.ts), build/typecheck (tsc), test (live-guards)
@seat/sdkbuild/typecheck (tsc → dist/)
@seat/appdev, build, start, typecheck
@seat/sitedev (port 3100), build, start, typecheck, test (story numbers)

Everyday loops

bash
# contracts
forge build && forge test -vvv

# keeper change
pnpm --filter keeper test && make paper

# app change
pnpm --filter @seat/app typecheck && make app-dev

# docs change (this site)
make site-dev