Skip to content
LittleGiantWeb.

React + Firebase

MyCardTracker

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.

Type
Web Application
Timeline
2024–Present
Stack
React 18, TypeScript, Firebase, Chart.js, Stripe
Live site
mycardtracker.com.au

Spreadsheets, then three apps, then this

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 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.

MyCardTracker dashboard showing collection overview with card grid, total value, profit, and ROI
The collection dashboard with real-time valuations and portfolio stats

Collection Tracking

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.

Card Details and Value History

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.

Card detail view showing a PSA 10 Charizard with value history chart and financial summary
Card detail view with value history, financial summary, and PSA verification

Adding Cards

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.

Add New Card wizard with image upload and PSA certificate lookup options
Three-step card adding wizard with image upload and PSA lookup

Purchase and Sales Tracking

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.

Purchase invoices view showing total spent, cards purchased, average cost, and seller breakdown
Purchase invoice tracking with seller details and financial summaries

Sales and Tax Tracking

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.

Sold invoices showing investment, sale price, profit, days held, and estimated tax payable
Sales tracking with profit/loss, hold period, and tax estimates

The Marketplace

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.

MyCardTracker marketplace showing listed cards with PSA grades, prices, and location
Built-in marketplace with one-click listing from your collection

Multi-Currency Support

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.

Mobile Experience

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 mobile dashboard view
Mobile dashboard
MyCardTracker mobile card details view
Mobile card details

Is there a business in it?

It has Stripe billing, Firebase auth and the architecture to run properly as a subscription product for collectors here and overseas. Every feature in it exists because I wanted it myself first, which is probably why it works. Whether that turns into a business is the part I have not proven yet.

Where it got to

$350K+
Collection Value Tracked
445+
Cards Managed
204%
ROI Tracking
83+
Purchase Invoices
Multi
Currency Support
SaaS
Ready

Those are my own numbers, not a client's. 445 cards, around $350K at current valuations, 83 purchase invoices logged. Worth reading them as what the app tracks rather than as a performance claim, since a collection is only ever worth what the market says this week. The part that actually changed for me is that I know what every card cost, what it is worth this morning, and where I stand on tax if I sell. I could not have told you any of that from a spreadsheet.

What it runs on

React 18 and TypeScript, Firestore behind it, Firebase Auth for accounts. The part that makes it useful rather than just another spreadsheet is the PSA and PriceCharting integration, because that is what keeps valuations live instead of something you remember to update.

Chart.js draws the value history. Stripe runs the subscription tiers. Leaflet handles the location side of the marketplace, and React PDF generates the invoices, which sounds like a detail right up until July.

Got something you want built?

Tell me what it is and I’ll tell you what it takes.

Get in touch