This repo is a vanilla HTML/CSS/JS Pokémon “database” that runs entirely in the browser. It pulls most data live from PokéAPI and uses a small local index (generated from PokeDB’s data export) as a fallback for encounter tables that PokéAPI often doesn’t provide.
There is no build step and no server-side code.
Open index.html in your browser.
This usually works with file://, but some browsers are stricter about local file fetches.
From the repo root:
python -m http.serverThen open http://localhost:8000/.
- Pokédex grid (search by name/ID, filter by type)
- A sidebar Pokédex menu (loads different Pokédex lists; some entries in the menu are placeholders)
- Moves tab (
index.html#moves) - Type chart tab (
index.html#type-chart)
-
Pokémon details:
pages/pokemon-detail.html?id=...- Uses PokéAPI
pokemon,pokemon-species, andevolution-chain - Renders multiple varieties/forms for a species (from
pokemon-species.varieties) - Shows a “Where to find …” section built from PokéAPI encounters, with a fallback index for games/regions where PokéAPI is missing tables
- Uses PokéAPI
-
Move detail:
pages/move-detail.html?move=...- Uses PokéAPI move data
- Falls back to GraphQL-Pokemon for some missing move fields
- Note: when the GraphQL fallback is used, “learned by” lists are not available
-
Abilities list + detail:
pages/abilities.htmlpages/ability-detail.html?ability=...- The abilities list filters out entries with no English short effect / no Pokémon
-
Egg groups:
pages/egg-group.html?group=...
-
Locations guide + location detail:
pages/locations.htmlpages/location-detail.html?location=...
- PokéAPI (
https://pokeapi.co/api/v2) — primary live data - GraphQL-Pokemon (
https://graphqlpokemon.favware.tech/v8) — fallback for some missing dex flavor text and move fields - PokeDB Data Export (
https://pokedb.org/data-export) — used to generate a compact local encounters index
The generated encounter index lives in:
data/pokedb-encounters-g8g9.jsondata/pokedb-encounters-g8g9.js(a wrapper that assigns the JSON towindow.__POKEDB_ENCOUNTERS_G8G9__forfile://compatibility)
tools/build_pokedb_encounters.py downloads PokeDB’s export JSON into data/.cache/, then writes the compact index into data/.
python tools/build_pokedb_encounters.pyjs/script.jsis a tiny loader thatdocument.writesjs/script.part1.js…js/script.part4.jsin order.Pokémon Database.htmlis a legacy filename that redirects toindex.html.
The tools/ folder contains small Python scripts used while developing the site:
audit_form_dex_entries.py: heuristic audit for species with many varieties where flavor text may differ per formsummarize_form_dex_audit.py: summary printer for the audit output JSONcheck_where_to_find.py: prints what PokéAPI returns for a Pokémon’s encounter endpoint and what the “evolve from …” fallback would usecheck_alola_evos.py: prints evolution chain details for a small set of Alola-related families
- Offline mode not supported (requires internet for API calls)
- Move tutors and event-exclusive moves may have limited availability info
- Some encounter mechanics are simplified when displayed in tables (e.g., SV probability systems, raids)
- Some older generation form data may be sparse in PokéAPI
- Pokémon: Legends Z-A location/encounter rows are not available yet (placeholder messaging)
- Move tutor database
- Item encyclopedia
- Expand encounter coverage (more regions/versions)
- Battle simulator
- Build planner with competitive move sets
- Offline mode with local caching
- Team builder with compatibility checks
- Dark/Light theme toggle
This is a fan project. Pokémon and Pokémon character names are trademarks of Nintendo / Game Freak / Creatures. If you redistribute this project, make sure you comply with the terms of any upstream data sources (PokéAPI, GraphQL-Pokemon, PokeDB Data Export).
Created as a fan/learning project.