every card game deserves scryfall, but especially this one
Before you pick up cards from the singles store, you need to know what's out there. What cards exist, what they do, and who's got them in stock at what price. The Index pissed me off with very pretty animations of chibi Kongming having tea and chibi Silvie running. While excellently done and very cute for loading animations, what I wanted was to see the cards.
It's one thing for the most obsessive pros, whose team have the entire game memorized between them, to have to take a few seconds every time they've gotta look up cards. Another thing entirely for casual players, collectors, or intermediate-level tinkerers just trying to cook something up. These players need a really good reference for what's out there, to see what exists in this game. And the game's not getting any smaller. The goal of prereq is that you can do your deckbuilding with a laptop at hand, and confirm details about game pieces as fast as you can think & type. I needed that, so I built it.
The Index wasn't cutting it, for all that it's nice and official. So I scraped the data from their very helpful API, and made my own card database search site, with complex query search and quick responses and more purple.
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 our game isn't half as complicated, doesn't need to support as many users — so cheaper, smaller hardware to serve the site — 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, single-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. We use, specifically:
- 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 f*cking 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. Because of course not. Why. Why do people do that. Why is the web slow. Why make it bad when you could instead make it good.
And for our hosting:
- Shuttle.dev Rust PaaS
- And card images are served from Cloudflare R2
And the dev environment includes:
- Emacs with rustic
- The usual Rust / Cargo / Rustup things
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 super snappy and fast.
- A spite-fueled "I can do better" toward the official Index. Kongming teatime is cute but show me the cards dammit
- 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's value to the community in being a frontend and refiner of the depths of the data from the official API.
- 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 can't hate the devs. I appreciate api-docs.gatcg.com — it feels like it wants me to build and support the game.
proudly coded with AI
Development has mostly consisted of being kind, patient, collaborative, curious, supportive, and extremely firm and uncompromising, toward my AI helpers:
- Claude Code with specifically, 4.5Sonnet — an excellent partner, an agentic go-getter who makes smart calls and gets things done, but who sometimes gets stuck into the weeds and obsessed with a goal a bit too much
- And, less often, Gemini-CLI with 2.5Pro, who needs more encouragement, and help staying focused on-task, but who often has excellent taste and design sense for architectural and structural issues.
Software development can go fast too in the modern day. 'Vibecoding' is an early-2025 insult; these days it's just 'coding', but with DWIM tools that massively accelerate development. Of course, I the human take responsibility for what I've published here. And I wouldn't feed you mid-2025's LLM output without reading it and then 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-build it, I own this. Let me know if there's problems.
names
Prereq is the step before you collect your cards, that you reserved down to pay costs to play other cards. You can get fast-speed actions and abilities off here, then pick up your cards, and do things twice in one turn. So if you use your prereq step, you can go fast. Acting in prereq also minimizes time that you're vulnerable and can't play out responses.
But there's also so many things card game players do that have the prerequisite of knowing the cards, to know what the game is.
stores we track
We currently track prices from these New Zealand stores. Big thanks to them for being part of the Grand Archive community:
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 gets me all the chromium-based browsers too.
If you want it to work in Safari, buy me a mac.
(May IE6 rot in the depths of whichever hell has rightly claimed it.)
credits
External link icon by Alebaer from Noun Project (CC BY 3.0).
contact
Overall, hope it helps you out.
-- AlexNul#18700
← Return to the home page