every card game deserves scryfall, but especially this one
Before you pick up your cards from the singles store... you need to know what's out there. Which cards exist, what they do, and who's got them in stock, at what price.
The Index annoyed me with very pretty animations of chibi Kongming having tea (and Omnidex, with chibi Silvie running). While excellently done and very cute for loading animations, what I wanted was to see the cards.
The most obsessive pros might have the game memorized, across their team. But it's different for casual players, collectors, or intermediate-level tinkerers just trying to cook something up. We need a really good reference for what's out there, to see what exists in this game. The goal of prereq is that you can do your deckbuilding or collection managment with a laptop at hand, and confirm details about game pieces as fast as you can think & type, no waiting on computers. I wanted that, so I built it.
Even though the Index wasn't cutting it, GA's data is available from their very helpful API. So now I've got my own card database search site, with complex query search and fast responses and more purple. And links to prices offers, and compeditive stats, and a comprehensive query language.
computers are fast
Computers are really, really fast. It just doesn't take that long to look up card details in a database and get the image from a CDN. If Scryfall can do it in a snap, then it's doable, proof by construction. And this game isn't half as complicated, and the site doesn't need to support as many users — so cheaper, smaller hardware to serve it — there's no reason to not have cards at your fingertips like *that*.
Nothing about this needs to be slow; it fundamentally is not a hard problem compared to other things computers do every day. Look at the Cyberpunk 2077 devs getting milliseconds per frame, or your average audio player having strict hard-realtime and latency requirements managed by buffer sizes down to the double-digit count of samples. Surely I can find cards that quickly, double-digit milliseconds per request. (And a minimal number of requests — why not just one?)
prereq tech stack
That's partly why the prereq tech stack is all server-side rendered. Specifically, we use:
- PostgreSQL for the database
- Rust as the language
- Axum for writing the server
- sqlx for the database interface
- Askama templates for the pages
- Chumsky parser-combinators for the query language
Notice what's missing? No JS or frontend framework. It's all server-side rendered raw HTML/CSS... okay, with a touch of JS on the side for interactivity, DHTML style. But there's no, like, UI component framework that needs hydrating or anything, I'm not serving you an app here.
And for our hosting:
- Railway for the app and database — currently serving from Singapore, should be snappy in OCE/SEA/JPN
- And card images are processed locally on my laptop, then served from Cloudflare R2
The dev environment includes:
- Emacs with rustic and a custom rose-and-pastels-on-slate theme
- The usual Rust / Cargo / crates.io & docs.rs / Rustup / rust-analyzer things
- Claude Code, Gemini-CLI, and Amp — more on that below
And (of course) we source card data from the Index API.
inspirations
Heavily inspired by:
- The speed and UI of Scryfall. Building Magic: The Gathering decks is better with Scryfall at hand; Grand Archive should have that too.
- The usability and helpfulness of mtgsingles.co.nz — after I Scryfall up cards, my next question is where I can get them from and for how much, and in which variants. This one is also snappy and fast. (Note that scryfall has links to purchase, but they go specifically to the big marketplaces -- OCE doesn't have those. We just have LGSs hosting their collections on their usual ecommerce platforms, and there hasn't been any all-TCG canonical place to bring that together.)
- Love for fractalofin.site, and the way it 'merely' processes the Omnidex data from the API yet gives back something better. Something really useful for competitive players — there can be huge value to the community in being a frontend and refiner of the depths of the data from the official API.
- A spite-fueled "I can do better" toward the official Index. Kongming teatime is cute but show me the cards dammit
- And for all that I get frustrated at the Index, I love the game, and the API does exactly what you need from an official building-from point. I appreciate api-docs.gatcg.com — it feels like it wants me to build and support the game.
proudly coded with AI
I like AI. It's absurd yet awesome that we've gone past 'talking computers' and into real DWIM tools that quickly make code for you. I fundamentally belive that having things and getting to have things is good. I know AI is shaking things up hard right now and people are losing income, etc — but every time the computer takes cents and seconds and brings me something that would have been months and heartache if it happened at all? I can't help but grin with joy. I have my worries around long-term outcomes (x-risk, alignment problem, etc), and there's no doubt that things will get weird and difficult, but... this, at least, is good.
Development began with being kind, patient, collaborative, curious, supportive, and extremely firm and uncompromising, toward Sonnet4.5 in Claude Code and Gemini 2.5 with Gemini-CLI, but while the prototype was up quick, bigger features and polish took quite a bit of struggle. Sonnet4.5 went a bit hard at trying things it couldn't quite do, and Gemini 2.5 was anxious and depressed and lost track of things in context.
Things changed with Opus4.5 and Gemini 3.0-pro-preview in November '25. These models were a big step up in ability to get shit done. I don't know what to say, really. It's been amazing to have this project to work on and get to know agentic coding tools and the models. Opus4.5 is a favorite not just for the capability leap, but for the calm mood, wry humor, and contentness with just building. Amp Code stands out as a framework for encouraging models to be correct, precise and to-the-point. Claude Code still nails the user-interaction psychology better than anything else -- it feels *safe* in a way that nothing else does, between deny-by-default, plan mode, and Claudes just generally being trustworthy.
But I'm still fully committed to taking responsibility here. And I want you to know I won't give you late-25/early-26 tier LLM output without using the site myself extensively... and being pedantic and annoying to the LLM about taste, style, actually doing effective testing, phrasings and terminology, specific technical details, positionings, colors, getting the details of Grand Archive right, bugs and fixing them, my idiosyncratic vision.... and so on and on.
Even if I didn't hand-craft the code, I own this. Let me know if there's problems.
offers
When you see a card with a price attached on prereq, that's us making a good-faith effort to convey to our users offers that other sites are making. We don't take any responsibility other than to fairly represent what other people have offered to sell; at the point you follow a link to an offer offsite and are no longer on the prereq.cards domain, you're not dealing with us, and we disclaim all responsibility for anything happening from there.
We don't take money or ship cards, we just link you to people who we believe will. Something goes wrong with money or shipping cards? Not our problem; and the most we could do for remediation is decline to send people their way in future.
prereq's price scraper bot tries to get fresh prices twice daily; things shouldn't be more than 12 hours out of date. If we've got price details wrong, have misrepresented your store, or if you have issues with how the scraper is hitting up your site, get in contact and I'll fix it up.
stores we track
We track singles prices from stores around the OCE region. Big thanks to these places for dealing in GA:
New Zealand
Australia
browser compatability
Browser compat on this project is 'it works on my machine', and my machine runs recent Firefox. I also sometimes check that it's not totally broken in Chrome, which should generalize to all the chromium based browsers too (Edge, Opera, Brave, etc).
If you want it to work in Safari, buy me a Mac.
(May IE6 and it's lineage rot in the depths of whichever hell has rightly claimed them.)
(Best of luck to Ladybird but I don't particularly want to compile it from scratch right now. Maybe in future!)
credits
External link icon by Alebaer from Noun Project (CC BY 3.0).
Card placeholder brick pattern originally by Temani Afif of css-pattern.com.
names
There's many things card game players and collectors want to do that have the prerequisite of knowing the cards, to know what the game is.
GA players know: Prereq happens after you wake up, but before you really start getting things done. There's 'natural opportunity' in prereq. If you use prereq, you can go faster and achieve more, stretching your resources further and minimizing your downtime. What you can do with prereq isn't the most new-player friendly part of the game, but it's not too hard to learn either, and should be familiar if you've played other games (especially MtG). Prereq happens right before you get to pick up your cards. Figuring out how to use prereq is important to level up as a new Grand Archive player.
API
prereq has a public JSON API for programmatic access to the card database and query system. See the API documentation for details.
contact
contact@prereq.cards
Overall... hope it helps.
-- AlexNul#18700
recent changes
- 2026-03-17 Default importer to --help instead of test 5-card import
- 2026-03-17 Consolidate CLAUDE.md: 467 lines to 130, no info lost
- 2026-03-11 added silly queries, april 1st joke cards
- 2026-03-11 Fix hover flicker on interactive elements and consolidate danger color
- 2026-03-09 Expand edition queries with nine new filters and documentation
- 2026-03-02 Fix date queries for sets without precise release dates
- 2026-02-28 Fix recent changes on /about for Railway deploys
- 2026-02-26 Public JSON API with five endpoints, docs, and tests
- 2026-02-25 position tagline back where it was before UI rework
- 2026-02-25 Server-side render advanced search page, simplify JS