Skip to content
HomeAboutWorkProjectsResourcesBlogServicesContact
Live

Riftbound Deck Manager

A deck-building workspace with a safe public demo path.

Next.jsPython API (Uvicorn)SQL DatabaseDocker Containers

Overview

Riftbound Deck Manager is a dual-mode web app: public demo routes for browsing cards and trying inventory/deck previews, plus a private workspace for live collection and deck operations. The public side is safe to share while admin-authenticated workflows stay private.

I deployed Riftbound Deck Manager at https://benjaminhyde.com.au/riftbound so people can explore it publicly without exposing private collection operations.

Public visitors can use demo-safe paths under the same route family, including /riftbound/cards, /riftbound/decks, and /riftbound/inventory. These are designed for walkthroughs, not persistent account editing.

The hardest engineering problem was deck verification. A rules check is only useful if it reflects cards already committed to other decks.

Cross-deck availability tracking solved that gap by showing remaining usable copies after existing allocations, which keeps legality feedback honest during deck tuning.

FEATURES.

Public Demo Layer

Dedicated demo routes for cards, decks, and inventory previews so visitors can explore without touching private data.

Private Workspace Mode

Admin-authenticated mode for live collection management, deck editing, import/export, and full studio workflows.

Card Library at Scale

Searchable card library with filtering by domain, set, energy, print variants, and display mode.

Inventory + Variant Tracking

Tracks normal, foil, and promo counts with ownership/completion indicators and per-card deck allocation visibility.

Deck Verification Rules

Competition-oriented validation checks aimed at reducing invalid lists during deck tuning.

Cross-Deck Availability Awareness

Uses in-deck allocations to show remaining usable copies across all lists, not just raw collection totals.

Tech Stack

Next.js

Frontend app and routing layer for the demo and workspace UI.

Python API (Uvicorn)

Backend API layer serving cards, preview datasets, auth/session, and deck/inventory workflows.

SQL Database

Persistent store for card metadata, inventory quantities, and deck compositions.

Docker Containers

Separate frontend/backend services behind reverse-proxy rewrites.

Architecture

benjaminhyde.com.au acts as an edge Next.js site that rewrites /riftbound traffic to dedicated internal frontend and backend services.

The backend API serves cards, inventory, deck, auth, and admin surfaces, with demo-safe reads supporting public exploration.

Authenticated users transition from demo mode into private workspace actions for persistent deck and inventory operations.

Card records and inventory links support filtering, preview views, and cross-deck legality checks in the deck builder.

Data Model

  • Card entities with set codes, collector numbers, domains, card types, power/energy, images, accessibility text, and source payload
  • Inventory records per card with quantity by print variant (normal, foil, promo) and tracking flags
  • Deck entities with status (e.g., competition/active/planned), notes, guides, timestamps, and zoned deck-card assignments
  • Deck-card bridge records that capture per-zone quantities and enable cross-deck allocation calculations

Challenges

  • Enforcing competition-ready validation rules while keeping deck building workflow responsive
  • Reconciling availability against cards already allocated to other decks instead of showing misleading raw totals
  • Designing a public demo that feels real but does not persist changes or leak private operations
  • Keeping filtered card exploration fast and legible across large card pools and multiple print treatments

Outcomes

  • Live public demo at /riftbound with cards, inventory sandbox, and curated deck previews
  • Clear separation between demo-safe browsing and private operational workflows
  • More reliable legality checks through deck verification plus cross-deck availability awareness
  • Reusable pattern for hosting a product demo within the main portfolio domain

Interested in this project?