agile-gaming is a gaming app for people who want to play adventure games — one or several — entirely offline. The product's intent is a personal shelf of self-contained adventure worlds: a player opens the app, picks an adventure, and plays it with no network connection, with progress kept on the device so a later session resumes where the last one stopped.
The audience is the Player: someone on a train, a plane, or in a cabin with no signal who wants a small, self-contained world they can keep in their pocket and return to. The app is not a storefront, not an esports product, and not an online service; its core promise is that the adventures always work, signal or no signal.
agile-gaming is delivered as a React frontend application backed by a shared FastAPI backend process and a MariaDB database, provisioned through docker-compose. The frontend presents three first-party surfaces — Landing, Games, and Play — all reachable without any account or sign-in. The backend and database support the application's own operation; the offline-play promise is carried by the client, which retains the games and the player's progress locally on the device so that browsing, starting, playing, and resuming all work without a connection.
The single active human actor is the Player. The Player browses the available adventure games, sees retained progress, starts or resumes an adventure, and plays it offline. Progress is stored locally so the Player can leave and return to the same point later.
Current scope is deliberately narrow: a gaming app, adventure games (one or multiple), playable offline, with locally retained progress. There is no account system, no online multiplayer, no storefront or purchase flow, and no social or leaderboard feature in the current delivery.
Removed from scope
The product is a client-first gaming app. Its defining behavior — playing adventure games offline — happens on the device, and the app's own local storage is the authoritative home of the player's games and progress. The shared backend and MariaDB database are provisioned infrastructure that support the application; they do not gate the core play experience, which must remain usable with no connection.
All three surfaces are openly reachable: there is no sign-in, no account creation, and no protected destination. The Player's continuity comes from local device storage, not from an application identity. Nothing in the current scope requires the Player to establish an account, and no account-management capability is part of this delivery.
Future ideas are kept out of the current pages and acceptance criteria and are listed only in the future section of this document.
FR-1 — Gaming app delivery (explicit) As a Player, I should open a gaming app that presents adventure games, so that I have a single place to play them.
FR-2 — Adventure games, one or multiple (explicit) As a Player, I should see the available adventure game or games, so that I can choose which one to play.
FR-3 — Play offline (explicit; hard constraint) As a Player, I should play an adventure game with no network connection, so that I can play on a train, a plane, or anywhere without signal.
FR-4 — Locally retained progress and resume (required_inference) As a Player, I should have my progress kept on the device and resume from it later, so that leaving the app does not lose my place.
The visual direction is "Playable worlds after Bruno Simon": discovery and toy-box delight, a personal shelf of adventures that always work.
Colour tokens (light mode)
| Role | Hex | Use |
|---|---|---|
| Background | #F4EBDD | Warm cream paper ground, ~65% of the page |
| Surface | #FFF9EF | Cards and panels, ~20% |
| Text | #1F1B16 | All body and display text |
| Primary | #FF6B4A | Coral — primary CTAs, "Continue" pill, active game tag, ~10% |
| Accent | #3FB8A6 | Teal — progress rings, offline badges, hover states |
| Muted | #8A7F70 | Metadata such as "4.2 hrs played" |
| Sticker | #F2C14E | Lemon — only inside the 3D hero scene and as a tiny sticker accent |
Typography
clamp(40px, 7vw, 96px); h2 clamp(28px, 3.4vw, 44px); h3 22px; body 17px; caption 13px uppercase Nunito Bold with 0.12em tracking for labels like "OFFLINE READY" and "SAVED LOCALLY".Shape language
0 6px 0 rgba(31,27,22,0.12) so surfaces feel like physical toy pieces.Layout
Imagery
The public entry is a split hero on a cream ground that reads as a poster of a world you can pick up. The left seven columns carry an oversized three-line Fredoka headline — "Adventures that / work without / a signal." — with "signal" set in coral and a small hand-drawn underline. Beneath it sit a single coral pill CTA "Pick an adventure" and a teal-outlined secondary "Resume last save" showing the last-played game name in ink. The right five columns hold a full-height low-poly island diorama on a soft cream pedestal, slowly rotating and tilting toward the cursor, with a tiny lemon flag and a teal "OFFLINE" sticker pinned to its corner. Below the hero, game tiles sit as slightly rotated sticker cards with soft offset shadows and teal progress rings, snapping back to 0° on hover. The composition is deliberately not a centred headline with a gradient blob and a blue button; it is a drawn map of a shelf of adventures.
Interaction Model: Animated Motion Tempo: expressive Hero Dimensionality: webgl
Landing Hero Motion Brief
Landing Hero 3D Scene Brief — DIRECTION-DERIVED
One crafted real-time low-poly island: flat-shaded triangles in the toy palette (cream ground, coral and teal accents, a lemon flag), a soft cream pedestal, and a teal "OFFLINE" sticker. The island rotates slowly on its own and tilts toward the pointer with damped easing. It shows the product's defining state — a self-contained world you can pick up and play offline — and never covers readable text or controls.
prefers-reduced-motion, provide a usable static arrangement — the island holds still, tiles appear without spring, and the shelf row becomes a normal horizontally scrollable row.#1F1B16 on cream #F4EBDD and on surface #FFF9EF; coral #FF6B4A used for CTAs with ink or surface text as appropriate to remain readable.
Offline ready
A pocket shelf of self-contained adventure worlds for the train, the plane, or a cabin with no bars. Progress stays on this device.
Saved locally
Progress is kept on your device, so you can close the app on the train and pick up exactly where you stopped when you come back.
Pick an adventure
Offline ready
A pocket shelf of self-contained adventure worlds for the train, the plane, or a cabin with no bars. Progress stays on this device.
Saved locally
Progress is kept on your device, so you can close the app on the train and pick up exactly where you stopped when you come back.
Pick an adventure
No comments yet. Be the first!