{"id":34798724,"url":"https://github.com/noqqe/serra","last_synced_at":"2026-03-11T20:03:32.275Z","repository":{"id":88477735,"uuid":"442118872","full_name":"noqqe/serra","owner":"noqqe","description":"Personal Magic: The Gathering Collection Tracker","archived":false,"fork":false,"pushed_at":"2026-03-01T07:21:38.000Z","size":16741,"stargazers_count":27,"open_issues_count":1,"forks_count":5,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-01T10:13:25.752Z","etag":null,"topics":["finance","golang","magic","magic-the-gathering","mongodb","mtg"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/noqqe.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-12-27T09:54:03.000Z","updated_at":"2026-03-01T07:21:31.000Z","dependencies_parsed_at":"2023-03-05T00:30:38.932Z","dependency_job_id":"881074ed-6c01-47fd-bf5b-c85dcb1a08e3","html_url":"https://github.com/noqqe/serra","commit_stats":null,"previous_names":[],"tags_count":87,"template":false,"template_full_name":null,"purl":"pkg:github/noqqe/serra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noqqe%2Fserra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noqqe%2Fserra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noqqe%2Fserra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noqqe%2Fserra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/noqqe","download_url":"https://codeload.github.com/noqqe/serra/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/noqqe%2Fserra/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30398192,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T18:46:22.935Z","status":"ssl_error","status_checked_at":"2026-03-11T18:46:17.045Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["finance","golang","magic","magic-the-gathering","mongodb","mtg"],"created_at":"2025-12-25T11:02:55.843Z","updated_at":"2026-03-11T20:03:32.268Z","avatar_url":"https://github.com/noqqe.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# serra\n\nSerra is my personal *Magic: The Gathering* collection tracker.\n\nIt began as a holiday project in winter 2021/2022 because I was frustrated of\nCollection Tracker Websites that are:\n\n* Pain to use\n* Want ~$10 a month\n* Don't have the features I want\n\nSo I started my own Collection Tracker using [Golang](https://golang.org),\n[MongoDB](https://mongodb.com) and [Scryfall](https://scryfall.com) to have\nan overview in what cards you own and what value they have.\n\n**What Serra does**\n\n* Tracks prices\n* Calculates statistics\n* Query/filter all of your cards\n* Shows what cards/sets do best in value development.\n\n**What Serra does not**\n\n* Does not care about conditions (NM, M, GD...)\n* Does not track etched cards. Only normal and foil.\n\n# Quickstart\n\n## Install Binaries\n\non macOS you can use\n\n    brew install noqqe/tap/serra\n\non Linux/BSD/Windows you can download binaries from\n\n    https://github.com/noqqe/serra/releases\n\n## Spin up Database\n\nTo run serra, a MongoDB Database is required. The best way is to setup one by yourself. Any way it connects is fine. \n    \n    docker run -d -p 27017:27017 --name mongo mongo:8\n\nFor \"production\" use this docker command is not recommended since it does not have persistent storage.\n\n## Configure the Database\n\nConfigure `serra` via Environment variables\n\n    export MONGODB_URI='mongodb://localhost:27017'\n    export SERRA_CURRENCY=USD # or EUR\n\nAfter that, you can add a card\n\n    ./serra add usg/17\n    ./serra update\n\nStart exploring :) (the more cards you add, the more fun it is)\n\n# Usage\n\nThe overall usage is described in `--help` text. But below are some examples.\n```\nUsage:\n  serra [command]\n\nAvailable Commands:\n  add         Add a card to your collection\n  card        Search \u0026 show cards from your collection\n  check       Check if a card is in your collection\n  completion  Generate the autocompletion script for the specified shell\n  flops       What cards lost most value\n  help        Help about any command\n  missing     Display missing cards from a set\n  remove      Remove a card from your collection\n  set         Search \u0026 show sets from your collection\n  stats       Shows statistics of the collection\n  tops        What cards gained most value\n  update      Update card values from scryfall\n  web         Startup web interface\n\nFlags:\n  -h, --help      help for serra\n  -v, --version   version for serra\n\nUse \"serra [command] --help\" for more information about a command.\n```\n\n## Add\n\nTo add a card to your collection.\n\n![](https://github.com/noqqe/serra/blob/main/imgs/add.png)\n\n## Cards\n\nQuery all of your cards with filters\n\n![](https://github.com/noqqe/serra/blob/main/imgs/cards.png)\n\n## Sets\n\nList all your sets\n\n![](https://github.com/noqqe/serra/blob/main/imgs/sets.png)\n\n## Set\n\nShow details of a single set\n\n![](https://github.com/noqqe/serra/blob/main/imgs/set.png)\n\n## Stats\n\nCalculate some stats for all of your cards\n\n![](https://github.com/noqqe/serra/blob/main/imgs/stats.png)\n\n## Tops\n\nShow what cards/set gained most value\n\n![](https://github.com/noqqe/serra/blob/main/imgs/tops.png)\n\n## Flops\n\nShow what cards/set lost most value\n\n![](https://github.com/noqqe/serra/blob/main/imgs/flops.png)\n\n## Update\n\nThe update mechanism iterates over each card in your collection and fetches\nits price. After all cards you own in a set are updated, the set value will\nupdate. After all Sets are updated, the whole collection value is updated.\n\n![](https://github.com/noqqe/serra/blob/main/imgs/update.png)\n\n## Check\n\nTo add a card to your collection.\n\n![](https://github.com/noqqe/serra/blob/main/imgs/check.png)\n\n## Adding all those cards, manually?\n\nYes. While there are serveral OCR/Photo Scanners for mtg cards, I found they\nare not accurate enough. They guess Editions wrong, they have problems with\nblue/black cards and so on.\n\nI add my cards the `add --interactive` feature, since they are sorted by editions\nanyways.\n\n```\n\u003e ./serra add --interactive --unique --set one\none\u003e 1\n1x \"Against All Odds\" (uncommon, 0.06 USD) added to Collection.\none\u003e 1\nNot adding \"Against All Odds\" (uncommon, 0.06 USD) to Collection because it already exists.\none\u003e 3\n1x \"Apostle of Invasion\" (uncommon, 0.03 USD) added to Collection.\n```\n\nIt also supports ranges of cards \n```\ndmr\u003e 1-3\n1x \"Auramancer\" (common, 0.02$) added to Collection.\n1x \"Battle Screech\" (uncommon, 0.09$) added to Collection.\n1x \"Cleric of the Forward Order\" (common, 0.01$) added to Collection.\n```\n\nIts basically typing 2-3 digit numbers and hitting enter. I was way faster\nwith this approach then Smartphone scanners.\n\n# Upgrade\n\nIf you want to upgrade, go to\n[releases](https://github.com/noqqe/serra/releases) Page and download the\ncorresponding release for your platform.\n\nFor example:\n```\nwget https://github.com/noqqe/serra/releases/download/3.10.0/serra_Darwin_x86_64.tar.gz\ntar zxfv serra_Darwin_x86_64.tar.gz\n./serra \n```\n\n## Upgrade Notes\n\n### 3.x.x -\u003e 4.x.x\n\nNo extra steps needed\n\n### 2.x.x -\u003e 3.x.x\n\nNo extra steps needed. Only new Webinterface and Foil support\n\n### 1.5.3 -\u003e 2.0.0 \n\nIn this stage of the development of serra, I was breaking the original database\n\"schema\" without migration. \n\nSadly you need to export the cards from the mongodb and import it again using\n`serra add ` commands\n\nI wrote a little helper script in python to export all the cards in format\nset/number and generate some queries\n\n```\npython3 export.py \u003e add_commands.sh\n\nhead add_commands.sh\n./serra add 5ed/3 -c 1\n./serra add mmq/2 -c 1\n./serra add p02/4 -c 1\n./serra add chr/44 -c 1\n./serra add 4ed/291 -c 1\n./serra add 4ed/292 -c 1\n./serra add mir/2 -c 1\n./serra add usg/231 -c 1\n./serra add mir/155 -c 1\n./serra add pcy/29 -c 2\n\n\u003cdo the upgrade of serra (download new binary\u003e\n\n\u003cdelete the old mongodb or just empty it completly\u003e\n\nbash add_commands.sh\n```\n\n# Development\n\n## Install\n\n    go build .\n    ./serra\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoqqe%2Fserra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnoqqe%2Fserra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnoqqe%2Fserra/lists"}