A responsive web app using Svelte, HTML, CSS, and JavaScript. Integrated REST APIs for live Pokémon data, implemented search, filtering, and animations, and designed an engaging user interface with interactive elements. Showcased frontend development, UI/UX design, and modern web architecture skills.
+page.svelte (Main Controller)
fetchList() and fetchDetails()PokedexList.svelte
GenSelect.svelte
PokemonDetails.svelte
PokemonImageBox.svelte
TypeBadge.svelte
PokedexEntry.svelte
\n to <br/>)Global (app.css): Fonts, body styles, container layout, shared button/list styles, type colors, animations, responsive breakpoints. These were ported from Part A and apply across multiple components.
Local: Component-specific tweaks (pokeball animation, minor positioning). Prevents style leakage and maintains encapsulation.
Justification: This structure maintains consistency with Part A while embracing Svelte's component-scoped styling where appropriate.
Pokemon List - Fetched in +page.svelte:
Pokemon Details - Fetched in +page.svelte:
Why top-level fetching?
<GenSelect> dropdown dispatches changegen event+page.svelte updates gen, clears selection, calls fetchList(gen)/api/pokedex?gen={number}Benefit: Reduces data transfer, demonstrates proper API query parameters
<audio> element bound to audioEl in PokemonDetailsplayCry() resets audio, plays cry, stops animation at click positionCreative touches: Interactive pokeball "lands" where clicked, disabled state when no pokemon selected
Model: Claude Sonnet 4.5 (via GitHub Copilot)
Most Helpful For:
Challenges:
:has() selector needed fallback)Key Takeaway: GenAI dramatically boosted productivity for boilerplate and syntax, but human judgment was essential for architecture, testing, and polish. Best used as a "pair programming" assistant rather than autonomous developer.