Portfolio
Cosmic Blazar Store · 2026

Cosmic Blazar: an online TCG card shop

Multi-game Laravel + Vue ecommerce

An online TCG card shop built from scratch on Laravel 12 + Inertia/Vue: a multi-game catalogue with graded condition, a ledger-based inventory, four payment gateways, typo-tolerant search and a decklist-to-cart tool. Live in production at cosmicblazar.store.

My role Full design and implementation (full-stack)

  • Laravel 12
  • PHP 8.4
  • Vue 3 + Inertia (TypeScript)
  • Tailwind CSS + shadcn-vue
  • PostgreSQL 18
  • Meilisearch (Scout)
  • Stripe / PayPal / Bizum
  • Docker
Cosmic Blazar: an online TCG card shop
1.172
Catalogue products
9
Card games (TCG)
4
Payment gateways
176
Pest tests

Screenshots

Problem

Selling TCG cards seriously means far more than a catalogue: every card exists in dozens of variants (language, edition, finish and Cardmarket-style graded condition), stock changes with each sale, and competitive buyers don't shop for single cards but for a whole deck. Building that on a generic ecommerce forces you to fight a data model that doesn't fit, a search that can't tolerate typos and a back office that doesn't reflect how a card shop actually operates.

Solution

I designed and built Cosmic Blazar from scratch: a complete ecommerce platform on Laravel 12 + Inertia/Vue 3 (TypeScript) over PostgreSQL, Redis and Meilisearch, all in Docker. The catalogue is flexible and multi-game: products (singles, sealed, accessories) with variants whose SKU combines condition (7 CM grades), language, finish and first edition, plus typed per-game dynamic attributes. Inventory moves over an immutable ledger with reservations and row locks, and orders follow a state machine with their own numbering and transactional emails. I integrated four payment routes (Stripe with a signed webhook, PayPal, Bizum and bank transfer), a typo-tolerant faceted search with instant suggestions, and the differentiator: decklist to cart —upload a .ydk/.txt/.csv, I cross every line against stock and let you request the missing cards with no commitment. I added an ERP-style admin panel with inline editing, bulk imports and exports, Google OAuth, roles, 2FA, full ES/EN i18n, WCAG 2.1 AA accessibility and SEO (dynamic sitemap, JSON-LD, OG).

Result

The shop is in production at cosmicblazar.store, open to the public and charging through all four gateways. I imported the real catalogue from Cardmarket —1,172 products with their variants— and resolved each card's image from YGOPRODeck (100% coverage). The platform gathers 49 Vue pages, is backed by 176 Pest tests against real PostgreSQL and Meilisearch, plus a visual audit with Playwright (desktop and mobile) and axe with zero violations, and wears a bespoke cosmic identity derived from the logo (a stellar dragon). It is end-to-end proof of how I approach a real product: clean architecture, a well-modelled domain and an operation ready to sell.