| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A standardized file format for importing and exporting lists of trading cards.
Status: RFC. This is a proposal. Nothing here is final. Feedback is requested via issues.
Every collection site, deck builder app and marketplace exports card lists in its own CSV or text dialect. Column names differ, data types are loose, and importing a list from one site into another is a guessing game that regularly fails or silently drops data.
And this is not a rare migration event. Card lists move constantly: wishlists go to marketplaces to be bought, decklists travel between builders and playgroups, trade lists and buylists change hands, purchases land back in collection trackers. Every one of those hops crosses a dialect boundary today.
One small JSON format with fixed field names and strict types, validated by a published JSON Schema. If a file is valid, an import will succeed. That is the whole promise, and the schema is what makes it work universally.
{
"stack": "1.0",
"game": "mtg",
"cards": [
{ "qty": 4, "name": "Lightning Bolt", "set": "m21", "number": "234", "finish": "foil" }
]
}Only qty and name are required per card. Everything else (set, collector number, external ids, finish, language, condition, grouping) is optional, so the format covers everything from a scribbled-down decklist to a full collection export with Scryfall and Cardmarket ids.
Read the spec: SPEC.md
The industry exports CSV today, and CSV is exactly why imports fail: quoting, encodings, Excel mangling, semicolon locales, and no types. A "strict CSV" spec cannot be enforced, because most CSVs are round-tripped through tools that break strictness.
Adoption is not hurt by JSON, because the people who adopt this format are developers at sites and app makers, and every one of their stacks already speaks JSON. For site-to-site transfer, end users never open the file; they download from one site and upload to another.
Spreadsheets are the honest exception. Many people manage collections in Excel or Google Sheets, and neither imports JSON comfortably. That does not change the interchange format, but it is a real workflow to serve: see open question 5 on a defined CSV projection.
Input is specifically requested on these. Each has a seeded issue, discuss there.
Any JSON Schema validator works, e.g.:
npx ajv-cli validate --spec=draft2020 -s schema/stack.schema.json -d examples/minimal.stackSee examples/: minimal, collection with ids and conditions, deck with groups, and one per profile: Pokemon, Sorcery.
Sites and apps that import and/or export .stack:
Adopted the format? Open a PR adding your site or app to this list, stating what you import and export.
While the format is an RFC, @andli acts as editor: open questions are discussed in the issues and closed by editor decision, with the reasoning recorded in the issue. This is a practical bootstrap, not a power grab, and help governing is explicitly invited: if you represent a site, app or game community and want to co-maintain the spec or own a game profile, say so in an issue.
CC0 1.0 (public domain). Anyone can implement this format for any purpose without permission or attribution.
| Back | FazBrowse Home | New Git URL |