Roadmap
Phase 1 — MVP
Core dice roller with PWA offline support. See Phase 1 Features for details.
Dice Engine
- Standard dice: d4, d6, d8, d10, d12, d20, d%, d100
- Custom Face Values via explicit sets
d{1,3,5,7}or rangesd[0..5] - Arithmetic modifiers: +N, -N
- Keep Highest and Lowest (advantage, disadvantage, CoC bonus/penalty, Custom Skill System)
- Normal Crit (c) and Perkins Crit (C)
- Percentile Pair (d%) with 00+0=100 rule, distinct from flat d100
- Cryptographically secure RNG
- Engine factored as standalone Ruby module — enables MCP Server and API reuse
User Interface
- Calculator UI — button input for quick tapping
- Text Input — type notation directly for power users
- Both input methods produce/parse the same Notation Spec
- Large result popup showing total and individual die values
- Favorites — save rolls with custom names, single-tap to re-roll
- Roll History — automatic log, tap to re-roll
- Clean, minimal Material-style UI
Platform
- Ruby on Rails, mobile-first responsive
- PWA with service worker for full offline support
- Standard Turbo Drive navigation (Hotwire Native-ready)
Phase 1 Stretch
Flows
- Chained rolls via
->operator (attack → damage) - Conditional expressions using
(trigger?expr)syntax - Natural and Total Triggers (n, t)
- Named Parameters via
<n>ands<n>syntax - Long-press/right-click on favorites shows toggles
- Multi-box modal — each flow segment gets its own box
- Universal conditional results — crits, bonus dice, modifiers, any combination
Human-Readable Explanations
- Live plain-English explanation as the user builds the expression
- Updates in real-time below the notation display
MCP Server (Basic)
rolltool — takes notation string, returns result with individual diceparsetool — takes notation, returns human-readable explanation- Motivates clean engine separation from day one
Phase 2 — Advanced Dice & Templates
Advanced Dice Mechanics
- Exploding Dice (!), compounding (!!), penetrating (!p)
- Reroll Mechanic (R/r on specified values)
- Success and Failure Counting (Shadowrun, World of Darkness)
- Fate Dice
- Favorites grouped by category (per-character, per-game-system)
Discord Bot
- Slash command interface (
/rollnotation or favorite name) - Named Parameters as Discord buttons for conditional damage/modifiers
- Stateless, self-hostable, connects to MCP Server
Template Library
- Pre-built templates that generate parameterized notation
- Wizard-style builder: enter stats, get flow notation
- D&D 5e Weapon Attack, Ability Scores, CoC Skill Check, Custom Skill System check
- Community-contributed templates (stretch)
MCP Server (Full)
roll_flow— execute flows with named parameter selectionsroll_favorite/list_favorites— manage and roll favoritesroll_template/list_templates— template access via MCP- Enables AI-assisted TTRPG play, VTT integration, Discord Bot
Natural Language Input
- Type “roll 4d6 drop the lowest” →
4d6kh3 - On-device LLM strategy (browser WebLLM/WebGPU, iOS/Android native)
- Combined with Human-Readable Explanations creates a learning loop
Phase 3 — Native & Characters
Characters
- Define system (D&D 5e, CoC, Custom), ancestry/race, class features, stats
- Auto-generate all weapon/spell/action rolls with correct notation, modifiers, rerolls, crit rules, Named Parameters
- Character sync to Cloud (likely paired with accounts)
- Discord Bot resolves character shortcuts (
/roll Bramblewood longsword)
Native Shells
- Hotwire Native for iOS (Swift/Xcode) and Android (Kotlin/Android Studio)
- Custom Sound Effects on specified roll results (crit/fumble)
- Text-to-speech for roll results
- Android Auto support (stretch)
- Push notifications / shared rolls (stretch)
- Haptic feedback on native platforms
Explicitly Out of Scope
- 3D dice animations
- Skeuomorphic UI
- Probability calculator (AnyDice handles that)
- User accounts or social features (Phase 1; revisited in Phase 3 for sync)
- Desktop native wrapper (PWA covers desktop)