A fast, no-nonsense Magic: The Gathering deckbuilder. No ads, no feature sprawl, no pay-gates — just the tools you need to brew.
- drag-and-drop deck building across mainboard, sideboard, considering, and commander zones
- format legality + Commander bracket detection
- deck stats — mana curve, color breakdown, type distribution, opening-hand simulator
- printing picker with per-set prices (USD/EUR, foil variants)
- import/export — plaintext, Arena, JSON (maindeck format)
- public deck exploration with forking
card data is synced from Scryfall via a Vercel Workflow; staging goes through Vercel Blob so ingestion doesn't thrash the live DB
![]() home |
![]() card search |
![]() deck editor |
![]() card detail |
- framework: Next.js 16 (App Router, Cache Components) + React 19
- db: Postgres + Prisma 7 on Railway
- auth: better-auth
- email: Resend
- ingestion: Vercel Workflow + Vercel Blob/S3-compatible storage/local filesystem
- ui: Tailwind 4 + Base UI + shadcn, mana-font for MTG symbols
Copy .env.example to .env and fill in at minimum:
DATABASE_URL,BETTER_AUTH_SECRET,CRON_SECRETRESEND_API_KEY,EMAIL_FROMBLOB_READ_WRITE_TOKEN(only ifSTAGING_DRIVER=blob)
pnpm install # installs deps; postinstall runs `prisma generate`
pnpm db:up # postgres via docker compose
pnpm db:migrate # apply migrationspnpm dev # next.js on :3000
pnpm wf:dev # (separate terminal) vercel workflow dev serverpnpm test # vitest
pnpm lint # eslint
pnpm typecheck # tsc --noEmit
pnpm db:studio # prisma studio
pnpm analyze # bundle analyzer



