serra
Serra is my personal Magic: The Gathering collection tracker.
It began as a holiday project in winter 2021/2022 because I was frustrated of Collection Tracker Websites that are:
- Pain to use
- Want ~$10 a month
- Don't have the features I want
So I started my own Collection Tracker using Golang, MongoDB and Scryfall to have an overview in what cards you own and what value they have.
What Serra does
- Tracks prices
- Calculates statistics
- Query/filter all of your cards
- Shows what cards/sets do best in value development.
What Serra does not
- Does not care about conditions (NM, M, GD...)
- Does not track etched cards. Only normal and foil.
Quickstart
Install Binaries
on macOS you can use
brew install noqqe/tap/serra
on Linux/BSD/Windows you can download binaries from
https://github.com/noqqe/serra/releases
Spin up Database
To run serra, a MongoDB Database is required. The best way is to setup one by yourself. Any way it connects is fine.
You can also use the docker-compose setup included in this Repo:
docker-compose up -d
Configure the Database
Configure serra via Environment variables
export MONGODB_URI='mongodb://root:root@localhost:27017'
export SERRA_CURRENCY=USD # or EUR
After that, you can add a card
./serra add usg/17
./serra update
Start exploring :) (the more cards you add, the more fun it is)
Usage
The overall usage is described in --help text. But below are some examples.
Usage:
serra [command]
Available Commands:
add Add a card to your collection
card Search & show cards from your collection
check Check if a card is in your collection
completion Generate the autocompletion script for the specified shell
flops What cards lost most value
help Help about any command
missing Display missing cards from a set
remove Remove a card from your collection
set Search & show sets from your collection
stats Shows statistics of the collection
tops What cards gained most value
update Update card values from scryfall
web Startup web interface
Flags:
-h, --help help for serra
-v, --version version for serra
Use "serra [command] --help" for more information about a command.
Add
To add a card to your collection.
Cards
Query all of your cards with filters
Sets
List all your sets
Set
Show details of a single set
Stats
Calculate some stats for all of your cards
Tops
Show what cards/set gained most value
Flops
Show what cards/set lost most value
Update
The update mechanism iterates over each card in your collection and fetches its price. After all cards you own in a set are updated, the set value will update. After all Sets are updated, the whole collection value is updated.
Check
To add a card to your collection.
Adding all those cards, manually?
Yes. While there are serveral OCR/Photo Scanners for mtg cards, I found they are not accurate enough. They guess Editions wrong, they have problems with blue/black cards and so on.
I add my cards the add --interactive feature, since they are sorted by editions
anyways.
> ./serra add --interactive --unique --set one
one> 1
1x "Against All Odds" (uncommon, 0.06 USD) added to Collection.
one> 1
Not adding "Against All Odds" (uncommon, 0.06 USD) to Collection because it already exists.
one> 3
1x "Apostle of Invasion" (uncommon, 0.03 USD) added to Collection.
It also supports ranges of cards
dmr> 1-3
1x "Auramancer" (common, 0.02$) added to Collection.
1x "Battle Screech" (uncommon, 0.09$) added to Collection.
1x "Cleric of the Forward Order" (common, 0.01$) added to Collection.
Its basically typing 2-3 digit numbers and hitting enter. I was way faster with this approach then Smartphone scanners.
Upgrade
If you want to upgrade, go to releases Page and download the corresponding release for your platform.
For example:
wget https://github.com/noqqe/serra/releases/download/3.10.0/serra_Darwin_x86_64.tar.gz
tar zxfv serra_Darwin_x86_64.tar.gz
./serra
Upgrade Notes
2.x.x -> 3.x.x
No extra steps needed. Only new Webinterface and Foil support
1.5.3 -> 2.0.0
In this stage of the development of serra, I was breaking the original database "schema" without migration.
Sadly you need to export the cards from the mongodb and import it again using serra add commands
You can find some inspiration in the utils/ Folder in this repo
Development
Install
go build .
./serra
MongoDB Operations
A few commands that do backups and exports of your data inside of the docker container.
Do a database dump
mongodump -u root -p root --authenticationDatabase admin -d serra -o /backup/
Do a collection export to json
mongoexport -u root -p root --authenticationDatabase admin -d serra -c cards > /backup/cards.json
mongoexport -u root -p root --authenticationDatabase admin -d serra -c sets > /backup/sets.json
mongoexport -u root -p root --authenticationDatabase admin -d serra -c total > /backup/total.json








