I built a full-stack collection management platform for trading card collectors. Real-time PSA valuations, purchase and sales tracking, tax-ready invoicing, and a built-in marketplace.
I collect graded trading cards. Mostly Pokémon, but also some NBA and other sports. Over the past couple of years, my collection grew to the point where I was spending real money on it, and I had no good way of tracking what I owned, what I paid, or what anything was worth now.
I tried spreadsheets. I tried a few existing apps. Nothing did what I actually needed. Most collection trackers are built for casual hobbyists, not for someone who treats their cards as investments. I wanted to see my total portfolio value in real time, track profit and loss per card, log purchase invoices with seller details, record sales with tax estimates, and eventually list cards for sale without having to retype everything into Facebook Marketplace.
So I built it myself.
The core of the platform is the collection view. Every card is stored with its name, set, year, grading company, grade, serial number, population data, and images. The dashboard shows the total amount paid, current market value, profit, daily change, and overall ROI at a glance.
Cards are displayed in a visual grid with their PSA slab images and current values. You can search by name, set, or serial number, and filter by category, grade, or collection. I built it so you can organise cards into custom collections like "Base Set Holos" or "Japanese Promos" and track each one separately.
Clicking on any card opens a detail view with the full slab image, a value history chart tracking price over time, and a financial summary showing what you paid versus what it's worth now. The chart pulls data from PSA and PriceCharting, so the valuations update automatically. There's also a direct link to view the card on the PSA website for verification.
Adding a new card follows a three-step wizard. You can either upload images of the card (the system reads the slab details automatically) or enter a PSA serial number to look up the card directly from PSA's database. The lookup pre-fills all the card details: name, set, grade, population, and certification number. From there you just add your purchase price and any notes, and it goes straight into your collection.
This is where it goes beyond a simple collection tracker. Every purchase is logged as an invoice with the date, seller name, total amount, and which cards were included. The Purchases tab gives you a full overview: total spent, number of cards purchased, average cost per card, and how many different sellers you've bought from. You can search invoices, download them as PDFs, and keep everything organised for tax time.
The Sold tab works the same way but from the other direction. Every sale is recorded with the original investment, what you sold it for, the profit or loss, and how many days you held the card. The platform automatically calculates estimated tax payable based on your profit, which is a big deal for collectors in Australia who are selling through an SMSF or running a small business on the side.
You can filter by financial year, export to JSON, and see your total profit across all sales at a glance. Each invoice tracks multiple cards if they were sold as a batch, with individual profit breakdowns.
One of the biggest frustrations as a collector is listing cards for sale. You've already got all the data in your collection tracker, but to sell a card you have to manually retype everything into Facebook Marketplace or eBay. I built a marketplace directly into MyCardTracker so users can list any card from their collection with one click. All the data carries over automatically.
The marketplace has browse, search, and filter functionality. Each listing shows the card image, PSA grade, price, and location. There are tabs for browsing all listings, managing your own, and a built-in messaging system so buyers and sellers can negotiate without leaving the platform.
A lot of card collecting happens internationally. You might buy a card in USD from a US seller, another in JPY from a Japanese auction, and sell locally in AUD. Most trackers force you to convert everything manually, which means your purchase prices drift every time the exchange rate changes.
MyCardTracker stores every price in the currency it was originally transacted in. Your purchase price in USD stays in USD. Your AUD sale price stays in AUD. The platform handles all the conversions for reporting, so your financial data stays accurate regardless of FX fluctuations.
The platform is fully responsive. The dark-mode interface works on desktop and mobile, and I specifically designed the mobile experience for when you're at a card show or a store and need to quickly check what you own, what you paid, or what something is currently worth.
MyCardTracker started as a tool I built for myself because nothing else existed that did what I needed. It now has Stripe integration for tiered subscription plans, Firebase authentication for user accounts, and the architecture to support multiple users at scale. The goal is to grow it into a proper SaaS product for the Australian and international collecting community. Every feature was built because I actually needed it as a collector, and I think that shows in the product.
What the platform does
The technology powering the platform
Component-based frontend with type safety, CRACO for webpack optimisation, and code splitting for performance
Firestore for real-time data, Firebase Auth for user accounts, and Firebase Hosting for deployment
Interactive value history charts, portfolio analytics, and real-time data visualisation
Automatic card lookup, real-time market valuations, population data, and grade verification
Tiered subscription plans, payment processing, and billing management for SaaS monetisation
Location-based marketplace features with interactive maps and PDF invoice generation
If you're looking for someone to build a purpose-built platform for your niche, whether it's collectibles, asset tracking, or a marketplace, let's talk.