Responsive web first. Native-ready later.

Build a modern arena for strategy nights, quick matches, and private rooms.

This baseline pairs a branded Next.js front end with a shared TypeScript rules engine and a server-authoritative multiplayer plan. It is meant to grow into the real product, not get replaced by it.

4Seats in the shared engine model
19Hex tiles in the baseline board layout
8Setup placements in the rules engine
Board PreviewEngine-backed
wool4
grain10
wool9
lumber9
brick12
wool8
lumber3
grain10
lumber5
ore6
grain5
desertRRobber
brick6
lumber4
brick11
ore8
ore3
grain11
wool2

What this slice proves

One domain model feeds multiple product surfaces.

The landing page, lobby, match screen, API shell, and future mobile clients can all draw from the same match state and public/private projection helpers.

Why this stack

Web, server, contracts, and engine are separate on purpose.

The repo is structured around reuse and correctness first: web for UX, server for authority, contracts for safety, and engine for deterministic rules.

Private lobbies

Friend-led tables with ready states, invite links, and host controls.

Practice vs AI

Low-pressure sessions that use the same match UI and core state model.

Reconnect-safe matches

Server-authoritative projections keep hidden information private while restoring state cleanly.