Skip to content

Repository files navigation

Dexter

CI Release

A Pokémon GO pokédex — browse every Pokémon, compare moves, and check type match-ups, entirely offline.

Dexter is a modernization of Dexr by disklosr, a UWP Pokédex for Pokémon GO that shipped on the Microsoft Store for Windows 10. The original's data set, domain model and overall information architecture are carried forward here; the app around them has been rebuilt on Uno Platform and .NET 10 so the same code base runs on Windows, macOS, Linux, iOS, Android and the web.

All credit for the original app and its curated game data goes to disklosr — see Credits.

Screenshots

Skia desktop head on macOS, dark theme. The shell is styled after the classic Kanto Pokédex.

Pokédex — master / detail

Pokédex list with the Bulbasaur detail pane

Pokémon detail — base stats, evolution line, move set

Charizard detail showing base stats, evolutions, quick and charge moves

Movedex — moves and the Pokémon that learn them

Move list with the Acid detail pane and its used-by list

Type chart Global search
Type effectiveness cards Search results mixing Pokémon and moves

Phone width — bottom tab bar, list pushes a full detail page

Pokédex list at phone width with the bottom tab bar Bulbasaur detail page with a back button

Features

Pokédex

  • All 251 Pokémon in the bundled data set, listed with dex number, max CP and type badges. Artwork ships for #1–151; later entries fall back to a placeholder.
  • Sort by dex number, name, type or max CP, each reversible from the toolbar.
  • Search by name or dex number, filtering as you type.
  • Incremental loading — the list pages in as you scroll rather than materializing hundreds of rows up front.
  • Master / detail through a TwoPaneView: on wide windows selecting a Pokémon fills a side pane, on narrow ones the same selection pushes a full detail page, and on a dual-screen device the list and detail sit one per screen with the hinge between them.

Pokémon detail

  • Max CP, flee rate, catch rate and candy-to-evolve.
  • Base stats (attack, defence, stamina) drawn as gauges scaled against the highest value in the dex.
  • Evolution line rendered as a chain, with the current stage highlighted; tap any stage to jump to it.
  • Quick and charge move sets, each tappable through to the move's own detail.
  • Previous / next arrows to walk the dex without going back to the list.

Movedex

  • 58 quick moves and 118 charge moves, split across two tabs.
  • Damage, DPS, cooldown and energy for each move, colour-coded by type.
  • Search and reversible sort, with the same incremental loading as the Pokédex.
  • "Used by" — every Pokémon that can learn the move. Common moves have well over a hundred users, so this list pages in as the detail view is scrolled.

Type chart

  • All 18 types, each as a card listing what it is super effective (×1.25) and not very effective (×0.8) against.

Search

  • One query across both Pokémon and moves, results interleaved and each routed to the right detail page.

Shell

  • Responsive navigation — one shell with three breakpoints: an expanded NavigationView pane at ≥1200px, an icons-only rail from 700px, and a bottom TabBar below that. All three drive the same navigation regions.
  • Foldable and dual-screen awareUno.WinUI.Foldable feeds the fold or hinge bounds to the master/detail TwoPaneView, so a foldable — flat or half-opened — or a spanned Surface Duo puts the list and the detail one per screen with the seam on the crease, and re-lays out live as the posture changes; everything else uses size-based breakpoints. The Android head carries a small shim around the package (see AGENTS.md).
  • Styled as a Pokédex — the Material 3 palette is generated by Uno Themes' seed-colour engine from three colours sampled from the classic Kanto Pokédex (the red body, the blue lens, the green button), and the shell wears the hardware: the notched top plate with the lens and three indicator lights, a red navigation pane and tab bar, the hinge, and on tablet/desktop widths a grey display bezel with its two dots and speaker grille around the dark screen. Stat gauges use the indicator-light colours. Light and dark variants follow the system theme.
  • Fully offline — all data is embedded in the app; there is no network call anywhere.
  • Custom animated Pokéball loading indicator, used for the extended splash screen and every async load.

What the modernization changed

Dexr / legacy DexUno Dexter
Platforms Windows 10 only (UWP) Windows, macOS, Linux, iOS, Android, WebAssembly
Framework UWP, later Uno 3.x Uno Platform 7 (Uno.Sdk), single project
Runtime .NET Native / netstandard2.0 .NET 10
Project shape Shared project (.shproj) + 8 platform heads One csproj, multiplatform TargetFrameworks
Presentation MVVM, ViewModelBase, INotifyPropertyChanged MVUX — immutable records, IFeed/IState, generated view models
Async UI Manual IsLoading flags per view model FeedView renders loading / error / empty / data states declaratively
Navigation NavigationService singleton + hard-coded page map + naming-convention VM lookup Uno.Extensions route- and region-based navigation, DI-resolved models
Composition root Static Startup.ServiceProvider service locator IHost with constructor injection throughout
Lists ListView loading whole collections ItemsRepeater with paginated feeds and incremental loading
JSON Newtonsoft.Json, read from StorageFile at runtime System.Text.Json source generation over embedded resources
Theming Hand-rolled brushes and styles, user-picked accent colour Material 3 theme generated from three Pokédex seed colours
Dual screen TwoPaneView + Uno.UI.DualScreen spike on the Android head only TwoPaneView + Uno.WinUI.Foldable in the single project: hinge-aware on dual-screen Android, size-driven on every other platform

Deliberately not carried over: the accent-colour and picture-source settings page (the app now follows the system theme), and the Windows-only composition animations. The original's separate global search page became a first-class section of the shell.

Repository layout

Path
Dexter/ The current app. Uno Platform single project, .NET 10, MVUX.
Dexter/Dexter.Core/ Domain library — entities, repositories, CP calculator, type service. No UI dependencies.
Dexter/Dexter/ The Uno app — pages, models, converters, styles, embedded data and artwork.
DexUno.sln, DexUno/, DexUno.Core/ The legacy 2020-era Uno 3.x port, kept for reference. Does not build on current tooling.
AGENTS.md Architecture and conventions, the source of truth for contributors and coding agents.

Building and running

Requires the .NET 10 SDK. The Uno.Sdk version is pinned in Dexter/global.json.

From Dexter/Dexter/:

dotnet build -f net10.0-desktop          # Skia desktop (macOS/Linux/Windows) — the fast inner loop
dotnet run   -f net10.0-desktop          # launch it
dotnet build -f net10.0-browserwasm      # WebAssembly
dotnet build -f net10.0-ios              # needs the iOS workload
dotnet build -f net10.0-android          # needs the Android workload

Windows is served by the same Skia desktop head as macOS and Linux; there is no WinAppSDK target. The first restore of a -dev Uno.Sdk version can take several minutes.

Use -p:TargetFrameworkOverride=<android|ios|wasm|desktop> (or a local crosstargeting_override.props, see the .sample next to the solution) to keep restore off the platforms you are not building.

See AGENTS.md for the architecture in detail.

Releases

  • Web: the WebAssembly build is deployed to GitHub Pages at https://kazo0.github.io/DexUno/ with every release.
  • Android / iOS: published to Google Play and the App Store from the release pipeline; every merge to master also ships to the Play internal track and TestFlight.
  • Desktop: self-contained zips for Windows (x64), Linux (x64) and macOS (Apple silicon) are attached to each GitHub release. They are unsigned, so Gatekeeper / SmartScreen will warn.

Versions come from Nerdbank.GitVersioning (version.json); release branches are cut with nbgv prepare-release. The pipeline and its one-time setup are described in docs/RELEASE-SETUP.md. The app collects no data — see the privacy policy.

Credits

This app is not associated with Nintendo or Niantic in any way. Pokémon and Pokémon character names are trademarks of Nintendo.

About

Uno port of disklosr/Dexr

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages