DeckForge

A deck-building and collection tool built around one decision: a single domain layer serving both a human UI and programmatic/AI-agent callers with no shared context.

DjangoPostgreSQLCelery
DeckForge landing page

One domain layer, two very different callers

DeckForge tracks a card collection, builds decks against it, and evaluates deck strength and collection overlap before a match. The real design problem wasn't the CRUD — it was making the same deck-evaluation and collection-overlap logic work identically whether it's called from a web UI or from an external caller (including AI agents via MCP) that shares no session state or UI context with a human user.

That constraint drove an API-first design: card search, deck evaluation, and collection-overlap all live behind a structured contract the UI itself consumes — not a special internal path. Anything the UI can do, an external caller can do identically.

Live site