Legacy prototype
The original Python and Flask experiment proved weighted encounters and a one-in-n shiny outcome. It also revealed the limits of server-rendered actions, coupled session state, unvalidated route totals and a blocking Auto Hunt loop.

ShinySim evolved from a small Flask coding experiment into a typed, data-driven, multi-generation shiny-hunting simulator—combining product framing, interaction design, probability modelling and deliberate data-quality controls.
Visit Site
The original Python and Flask experiment proved weighted encounters and a one-in-n shiny outcome. It also revealed the limits of server-rendered actions, coupled session state, unvalidated route totals and a blocking Auto Hunt loop.

The rebuild began with a pure TypeScript domain layer. Explicit route, result and session types separated probability from React, while injected randomness made boundary conditions deterministic and strict fixed-point validation prevented misleading encounter tables.
The new single-page workspace gives the current encounter priority, then separates direct controls, statistics, history and configuration. Watched Hunt, fast-forward Auto Hunt and manual stopping remain distinct and understandable.

A typed adapter filters version-specific location data by method, excludes unsupported conditions, aggregates duplicate slots and enriches each route with levels and sprite metadata. The interface clearly distinguishes authentic provider data from local edits.

Game selection now resolves through a rules registry rather than one global denominator. Earlier titles use their generation’s base rate, while eligible later games expose Shiny Charm rolls and a transparent effective probability.

A discovery and audit pipeline examined 18,479 candidate contexts and generated 5,306 truthful selections across 26 games. Conditional, incomplete and deterministic acquisition records were documented and excluded rather than normalized into misleading hunt tables.
The released product supports searchable game-to-method navigation, live route loading, editable encounters, bounded history and responsive behavior. Its 116 automated tests cover probability, validation, state transitions, provider reliability, catalog integrity and performance-sensitive hunt behavior.
