CardCore
Back to Blog

Building CardCore in Public - Day One

March 21, 20265 min readBy Dan Vohasek
building-in-publicfounderstar-wars-unlimited

The short version

I'm Dan. I'm a systems engineer by day, and for the past several months I've been building CardCore - a platform that connects Star Wars: Unlimited players with their local game stores. As of today, there are over 500 hours logged on this project, and I'm starting to write about it.

What is CardCore?

If you play trading card games, you know the pain. You want to know if your local store has the card you need. You want to track what you own. You want to trade with other players without spreadsheets and Discord DMs. You want to build a deck and know what it'll cost.

CardCore does all of that. One platform, one login (Discord), and everything a TCG player needs:

  • Card catalog with real-time market pricing and trend data
  • Collection management with set completion tracking
  • Deck builder with format validation
  • P2P trading with trade binders and wishlists
  • Store inventory browsing with online ordering
  • Tournament companion with live brackets and standings
  • Repack system for randomized card packs

It's built specifically for Star Wars: Unlimited right now, but the architecture supports any trading card game.

Why build in public?

Three reasons.

First, accountability. When you're a solo founder, there's no standup, no sprint review, no one asking what you shipped this week. Writing about it forces me to reflect on what I'm actually building and why.

Second, transparency. If you're a store owner evaluating whether to partner with CardCore, you should be able to see how the platform is built, how fast it moves, and what the priorities are. This blog is part of that.

Third, other builders. There aren't many resources on building TCG platforms. The intersection of card game data, pricing APIs, inventory management, and community features is niche. If someone else is building in this space, maybe these posts save them some time.

What to expect

I'll be writing about:

  • Feature deep-dives - how specific features work under the hood
  • Architecture decisions - why Next.js, why PostgreSQL, why not an ORM
  • Lessons from production - bugs, scaling issues, and how I fixed them
  • The business side - store partnerships, event hosting, and growing a community
  • Weekly updates - what shipped, what's next, and what I learned

Posts will be technical but readable. I'm writing for people who build things, whether you're a developer, a store owner exploring tech, or a player curious about how the sausage gets made.

The stack, briefly

CardCore is a Next.js 14 application with TypeScript, Tailwind CSS, and shadcn/ui components. The database is PostgreSQL (no ORM - just raw SQL with parameterized queries). Authentication is through Discord OAuth via Auth.js v5. Card pricing data comes from TCGPlayer's market data. The whole thing runs on a couple of Windows boxes with NSSM managing the Node.js processes.

It's not a microservices architecture. It's not containerized (yet). It's a monolith that ships fast and handles real traffic. There are over 200 API routes, 400+ automated tests, and a deployment pipeline that pushes to production in under a minute.

More on all of this in future posts.

The card data pipeline

Behind the scenes, the card data pipeline has been a massive ongoing effort. Star Wars Unlimited has multiple sets:

  • Set 1 - Spark of Rebellion (SOR)
  • Set 2 - Shadows of the Galaxy (SHD)
  • Set 3 - Twilight of the Republic (TWI)
  • Set 4 - Jump to Lightspeed (JTL)
  • Set 5 - Legends of the Forces (LOF)
  • Set 6 - Secrets of Power (SEC)
  • Set 7 - A Lawless Time (LAW) - just released!

Each set has hundreds of cards across multiple variants - Standard, Hyperspace, Foil, Showcase. Every card needs images, pricing data, attributes, subtypes, and set metadata. Getting all of that ingested, normalized, and kept up to date with daily price refreshes is one of the less glamorous but most critical parts of the platform.

Where things stand today

As of March 2026:

  • The platform is live at store.cardcore.gg
  • One store is actively using it with real inventory and real customers
  • The complete Star Wars: Unlimited card catalog is searchable with daily price updates
  • P2P trading, collection management, and deck building are all live
  • We're running our first major in-store event on April 12th
  • I just hired a QA team to do a full mobile testing pass before that event
  • Today we shipped SEO foundations - sitemaps, structured data, proper meta tags on every page
  • This blog is part of the push to make CardCore findable on search engines
  • Google Search Console is set up and indexing has begun

There's a lot to write about. Let's get started.