A fast, offline-capable card management suite for Magic: The Gathering, Riftbound, and Pokémon TCG. Rust crates to search by CLI, REST API, or a full React web UI. Or build your own solution on top of the libraries provided!
GatheRs provides a complete toolkit - whether you prefer typing commands, calling an API, or browsing a visual interface.
Filter by name, color, rarity, set, artist, card text, and more. Searches run locally at native speed - no API rate limits.
Databases are downloaded or generated on demand. Keep searching when you have no internet connection. The first download is not offline though, sadly.
Manage multiple collections, timestamps, and bulk import/export via CSV. Mix and match cards from all supported games. It's your collection, who am I to tell you not to put that Squirtle next to Jace?
One unified tool for Magic: The Gathering, Riftbound, and Pokémon TCG - with a shared retrieval abstraction layer. Want to add One Piece? Or that old Star Wars TCG? PRs always welcome!
Self-host the server and get all the command line features exposed over HTTP. Build your own integrations with the JSON REST API, documented via OpenAPI/Swagger.
We are big Rust fans in this house, so we will rep Rust. Also, it's Rust, so you know it's bug free 100%.
A full-featured browser app that works alongside the local server. No cloud account needed. Unless you self-host and put some login in front of it. Again, I will not stop you. You do you queen / king / royalty!
Each game has a dedicated retrieval system that implements a common interface - making it trivial to add new games in the future.
Two retrieval modes:
Dedicated local SQLite database with auto-update from official sources.
Many thanks to vikkumar2021 for their amazing work.
Local SQLite database for the Pokémon Trading Card Game.
Many thanks to PokeTrax for their amazing work.
A first-class CLI for power users. Fast, scriptable, and available everywhere Rust runs.
# Search Magic cards by name + color $ gathers --system sql --name "lightning" --color R # Search Pokémon by energy type $ gathers --system pokemon --energy Fire # Search Riftbound by domain $ gathers --system riftbound-sql --domain Fury --domain Mind # Download / update databases $ gathers --download # Paginate results $ gathers --name "bolt" --limit 10 --offset 20 NAME SET NUM RARITY ARTIST Lightning Bolt LEA 183 Common Christopher Rush Chain Lightning LEA 51 Common Brian Snoddy …
--color W, --color U, …)--limit and --offsetcargo install --git https://codeberg.org/morosanmihail/gathers gathers
Track every card you own across all supported games in a local SQLite database you fully control.
Create unlimited named collections. "Main Deck", "Binder", "Trade Pile", whatever you need.
Move selected cards or entire collections between named buckets.
Bulk-import from CSV. Export any collection as a downloadable file for backup or sharing.
All data lives wherever you let it live. No cloud, no account, no tracking.
Spin up just the backend API. All functionality is exposed over HTTP. Documented via OpenAPI / Swagger.
/mtg/cards/search/mtg/cards/mtg/sets/mtg/update/riftbound/cards/search/riftbound/cards/riftbound/sets/riftbound/update/pokemon/cards/search/pokemon/cards/pokemon/sets/pokemon/update/collection/list/collection/add/collection/remove/{id}/collection/move/{id}/collection/cards/{id}/list/collection/cards/{id}/count/collection/cards/{id}/add/collection/cards/{id}/delete/collection/search/collection/import/collection/export/{id}GatheRs is a Cargo workspace. You need a stable Rust toolchain and Node.js (for the web UI).
git clone https://codeberg.org/morosanmihail/gathers.git
cd gathers
cargo run --bin gathers -- --download
This fetches AllPrintings.db from mtgjson.com and verifies the SHA-256 checksum.
cargo run --bin server -- --system sql riftbound-sql pokemon-sql --port 5234
cd webui && npm install && npm start
Opens at http://localhost:3000. API requests proxy automatically to port 5234.
GatheRs is open source. Primary development happens on Codeberg; GitHub is a mirror.