deploy (vercel)
how to ship slopmark as a public read-only MVP — challenge gallery, realshot BYOK, docs.
phase 1 — what works without any env vars
| route | needs keys? |
|---|---|
/challenges | no |
/challenge/niche-sprint-v1 | no |
/realshot | user BYOK in browser |
/bench paste mode | no |
/docs | no |
challenge results are read from committed data/challenges/*/results.json via lib/challenges/store-json.ts — no sqlite on serverless.
vercel setup
- import repo: github.com/nothariharan/benchmark
- framework: Next.js
- root directory: repo root
- build command:
npm run build(default) - deploy
no environment variables required for the minimal deploy.
optional environment variables
| variable | required? | purpose |
|---|---|---|
OPENROUTER_API_KEY | optional | host-funded free models (baked fallback exists). locked to :free slugs, 1 req/min |
AIMLAPI_KEY | optional | optional aiml/ slugs or leave to BYOK |
NEXT_PUBLIC_SUPABASE_URL | optional | login UI + session refresh |
NEXT_PUBLIC_SUPABASE_ANON_KEY | optional | login UI + session refresh |
SUPABASE_URL + SUPABASE_SERVICE_ROLE_KEY | optional | postgres eval persistence |
middleware skips supabase session refresh when NEXT_PUBLIC_SUPABASE_* are unset — deploy won't crash.
post-deploy smoke test
/challenges— lists Niche Sprint v1/challenge/niche-sprint-v1— infographic + 6 models/realshot— duel form loads, test connection with your key/docs/challenges— challenge docs renderGET /api/challenges— returns{ challenges: [...] }GET /api/challenges/niche-sprint-v1— returns 60 runs
local production check
npm run build
npm run start
then hit http://localhost:3000/api/challenges.
operator workflow (not on vercel)
run new challenges locally with your key:
npm run challenge
writes sqlite (data/local.db) + exports data/challenges/{slug}/results.json. commit the json to ship updated results.
roadmap (later phases)
| phase | feature |
|---|---|
| 2 | BYOK solo eval on /bench |
| 3 | user-created challenges + supabase |
| 4 | background jobs + redis rate limits |
see benchmark challenges for challenge system details.