farkle

Farkle — Functional Spec

A warm, tactile, ad-free iOS app for keeping score in physical Farkle games. Phone tracks scores; dice stay on the table.

1. Product principles

  1. Score tracker, not a game. The app never rolls dice or decides outcomes. It records what humans rolled.
  2. Whose turn is unmissable. A player must never wonder who is currently rolling or whether a score has been submitted.
  3. Everything is reversible. Every score change can be undone, including after a “winner” is declared.
  4. Warm and unhurried. Aesthetic: paper, walnut, bone — game-night vibes, no neon, no ads, ever.
  5. Free and ad-free. No advertising, no paid tiers in v1.

2. In scope for v1

2.2 Live scoreboard (Multipeer)

2.1 Explicitly out of scope for v1

3. Players, games, and scoring

3.1 Players

3.2 Game setup

3.3 Turn order

Final round (when the target is hit)

3.4 Scoring actions

A turn is a sequence of one or more rolls. Each roll has a delta (positive integer). The user enters the turn total via:

At any time during a turn the player can:

3.5 “Must open with 500” rule

3.6 Game end

4. Screens

Numbering matches the design canvas labels for traceability.

4.1 (01) Onboarding

4.2 (02) Home

4.3 (03) New Game Setup

4.4 (04) Active Game

The heart of the app. Layout (top to bottom):

  1. Top bar: back button (with “leave game” confirm), round/target label, persistent Undo button.
  2. “Now Rolling” banner — high-contrast, includes:
    • Active player’s avatar (highlighted ring), name in italic display serif.
    • Animated “ROLLING” pulse dot.
    • Player’s currently banked total on the right.
  3. Pending-turn card — visually distinct (dashed border, “not banked yet” label):
    • Large pending total.
    • Roll count for the turn.
    • Quick-add chip row (§3.4).
    • ”+ Custom” opens keypad sheet.
    • “Score helper” link opens §4.6.
    • “Clear” link resets pending turn to 0 without ending the turn.
  4. Standings ladder — players ranked by banked score; current player marked with “ROLLING” pill; mini progress bar toward target.
  5. Recent actions log — last 5 banks/busts; each row shows player, action, amount, and time-ago. Tapping a row opens an Edit/Undo sheet:
    • Edit: for bank actions, the user can change the amount via keypad (fixes a mistyped score without losing turn order).
    • Undo: removes the action (and everything after it) and replays state.
    • Cancel: no change.
  6. Bottom action bar:
    • Farkle (secondary, crimson) — confirms then sets turn to 0 and passes.
    • Bank (primary, walnut) — shows “+450 → 4,700” preview math; opens §4.5.

Theme: Paper (cream) is the v1 default. Felt theme is deferred.

4.5 (04d) Bank Confirmation modal

4.6 (05) Score Helper (scoresheet)

4.7 (06) Game Over (winner)

4.8 (07) Game History

4.9 (08) Player Stats

4.10 (09) Settings

4.11 (10) Rules reference

5. Behavioral requirements

5.1 Undo

5.2 Pass-and-play guard

5.3 Hot Dice and Farkle events

5.4 Persistence

5.5 Error and edge cases

6. Visual identity

7. Non-functional requirements

8. Open questions

None at spec time. Will be added here as they arise.


Change log