cosmic-tic is a single-page tic tac toe game. A visitor opens the page and immediately plays a complete round of tic tac toe on a 3×3 grid: two players alternate placing marks, the app shows whose turn it is, prevents play on occupied cells, and detects and displays a win or a draw. The entire product is that one page — there is no navigation, no account, and no second screen.
The audience is anyone who wants a 60-second mental duel: a casual, anonymous player who expects something instantly playable that also feels like a small cosmic launch rather than a utility form. The product's register is dark, glowing, motion-first and HUD-like, while the grid itself stays dead simple to read and tap.
cosmic-tic is delivered as a single public page, Tic Tac Toe, reachable anonymously with no sign-in. The page hosts the whole game: the oversized COSMIC-TIC wordmark, the 3×3 board, the turn/status HUD strip, and the win/draw announcement. A single active human persona, the Player, plays both marks in turn on the same device.
The game logic — turn alternation, occupied-cell prevention, win detection across rows, columns and diagonals, and draw detection when all nine cells are filled without a winner — runs in the application. The provisioned scaffold consists of a React frontend serving the page, a shared FastAPI backend for application APIs and domain modules, and a MariaDB database for application-owned persistent data. Because the accepted product has no accounts, no saved history, and no cross-session state, the database is provisioned infrastructure only; it does not by itself justify domain entities, authentication, or persistence requirements.
Removed from scope
The requester asked for a single-page tic tac toe app, and that is the whole current delivery: one first-party page that is both the entry point and the game. Access is anonymous and public — no identity is established, because no accepted behavior requires durable actor-specific state, a commitment bound to a participant, or resumption across sessions. Both marks are played by people at the same device in alternating turns.
Everything the game needs to be usable lives on that page: the board, the turn indicator, the occupied-cell rule, the win/draw outcome, and a way to start a new round. Nothing beyond the single page is current. Future ideas (for example an AI opponent or score history) are not part of this delivery and are not represented in the page.
Information and state
Primary actions
Supporting actions and controls
Domain entities
Component responsibilities
States
FR-1 — Single-page delivery (explicit) As a Player, I should reach the entire tic tac toe game on one page, so that I can start playing without navigating anywhere.
FR-2 — Alternating marks on a 3×3 grid (explicit) As a Player, I should place X and O alternately on a 3×3 grid, so that two players can take turns in a standard game.
FR-3 — Occupied-cell prevention (required_inference) As a Player, I should be unable to place a mark on a cell that already holds one, so that the board state stays valid.
FR-4 — Win detection and display (explicit) As a Player, I should see when a player has won, so that the round has a clear outcome.
FR-5 — Draw detection and display (explicit) As a Player, I should see when the round ends in a draw, so that a full board without a winner is clearly resolved.
FR-6 — New round (required_inference) As a Player, I should be able to start a fresh round at any time, so that I can replay after a win, a draw, or mid-game.
FR-7 — Turn and status visibility (required_inference) As a Player, I should always see whose turn it is and the current status, so that I know when to act.
Product context. The Player is a casual visitor who opens cosmic-tic for a short, self-contained mental duel. They arrive anonymously on the single Tic Tac Toe page with no account, no history, and no expectation of anything beyond one round at a time. The same person typically plays both marks in alternating turns on one device.
Primary goal. Play a complete round of tic tac toe quickly — place marks, always know whose turn it is, and reach a clear win or draw — then start another round if they want.
Distinct accepted responsibilities.
Relevant inputs and decisions. Which empty cell to select; when to start a new round. The Player makes no configuration choices — there are no settings, names, or modes.
Interactions with other accepted participants. The only other participant is the second mark played by the same person at the same device; there is no remote opponent, no system opponent, and no other persona. The app itself acts as referee: it alternates turns, blocks occupied cells, and declares the outcome.
Observable success. The board reflects each placement with a glowing mark, the turn indicator flips correctly, occupied cells reject input, and a win or draw is announced clearly with the winning line drawn or the draw status shown.
Muse and headline. Gleb Kuznetsov — a luminous 3×3 constellation played in the void. Cinematic future-tech: dark, glowing, motion-first, HUD-like, with the grid kept dead simple to read and tap.
Mode. Dark mode only.
Colour tokens (exact hex by role)
#05060E (covers ~70% of the frame)#0D1126#EAF2FF#34E4FF#FF3DCB#7C89B8#34E4FF at 18% opacity, 1pxThe two hot accents are the only saturated colour, used at mark scale and as thin luminous strokes. No violet-on-white or blue-on-white ground.
Typography
clamp(48px, 9vw, 128px); headings and UI 40/28/20/16/14; 13px uppercase micro-labels at +0.18em; 12px mono for coordinates and move count.Shape language. Full-bleed void with floating glass panels: 20px radii, 1px luminous borders, thin radial glow behind the board, concentric orbit rings as hairline strokes. Marks are volumetric: X built from two beveled cyan strokes, O a glowing magenta torus. Hard-edged HUD tick marks and corner brackets frame the board like an instrument display.
Layout. Single page, one centred board column on desktop (board ~min(78vw, 520px)) with the title block stacked above and a HUD strip below showing turn/status in mono. On mobile the wordmark stacks to two lines above the board, the board fills width minus 24px gutters, and the HUD strip becomes a single row of two chips. No nav bar — a fixed top-left COSMIC-TIC micro-mark and a top-right NEW ROUND ghost button are the only chrome.
Imagery style. No photography. The imagery is the interface itself: a generative starfield of ~120 faint particles behind the board at 20% opacity, concentric orbital rings, a soft volumetric glow under the board, and glowing 3D-ish marks rendered in CSS with layered gradients and box-shadows (not WebGL).
Readability rule. Headlines, wordmarks, labels, numbers and controls stay entirely inside the viewport and their container at 375px, 768px and 1280px, wrapping or scaling to fit; decoration and motion may bleed or overlap but never cover readable text or controls.
The first screen is a dark cosmic stage, not a SaaS hero. The oversized COSMIC-TIC wordmark spans nearly the full viewport width in the upper third at clamp(48px, 9vw, 128px), its hyphen replaced by a glowing cyan rule that pulses on game start. Beneath it, offset slightly left, the 3×3 board floats as a 520px glass instrument panel lit from below by a cyan-to-magenta radial glow, ringed by two hairline orbit circles that slowly rotate. There is no subtitle paragraph, no solid CTA button, and no gradient blob — the board is the hero, and the only call to action is the small ghost NEW ROUND chip pinned top-right.
Signature moves, all recomposing accepted content only:
prefers-reduced-motion.Interaction Model: Animated Motion Tempo: cinematic Hero Dimensionality: layered_2d
Landing Hero Motion Brief
#05060E; wordmark spanning the upper third with its glowing cyan hyphen; board centred and offset slightly left as a #0D1126 glass panel with 1px #34E4FF-at-18% borders and corner brackets; two hairline orbit rings mid-rotation; starfield at 20% opacity; HUD strip below showing X to move and move count 0; ghost NEW ROUND chip top-right.prefers-reduced-motion, all ambient and placement motion is disabled and state changes are instant, with a fully usable static arrangement.frontend, backend, and database services; the frontend depends on the backend gateway, and the backend depends on the database.
CosmicTic
Player X to move · 00
Player X to move. 0 moves played.
CosmicTic
Player X to move · 00
Player X to move. 0 moves played.
No comments yet. Be the first!