Pokedex app built with Vue 3, TypeScript, Pinia, and Vue Router.
It demonstrates modern frontend architecture practices: stores, composables, HTTP services, lazy loading, controlled concurrency, and separation of concerns.
Dark mode:
--
Light mode:
- Node.js v24.x+
- npm (comes with Node)
- Git to clone the project
- (Optional) Developer extensions:
- Vue Devtools
- Pinia Devtools
git clone https://github.com/luchoweb/pokedex-vue
cd pokedex-vue
npm installnpm run devOpen in your browser:
npm run dev # development server
npm run build # production build
npm run preview # preview production build
npm run lint # run ESLint analysis
npm run format # format code with Prettier
npm run test # run testssrc/
├─ assets/ # images and static resources
├─ components/ # reusable UI components
├─ pages/ # router views (Pokedex, About, Pokemon)
├─ stores/ # global state with Pinia
├─ composables/ # reactive logic (useXxx)
├─ services/ # HTTP functions and non-reactive logic
├─ utils/ # pure helpers and utilities
├─ router/ # route configuration
├─ App.vue
└─ main.tsConventions:
- stores/ → global state
- composables/ → reactive logic (Composition API)
- services/ → HTTP / non-Vue logic
- lazy routes except for the initial view
- Composition API +
<script setup>→ cleaner and more declarative code - Pinia → global and persistent state
- Composables (useXxx.ts) → reusable and testable logic
- HTTP services → clean requests without hooks
- Lazy loading in the router: const About = () => import("@/pages/About.vue");
- Concurrency limiter → controls request loading
- Request cancellation → avoids race conditions
- main.ts mounts Vue, Pinia, and Router
- Pokedex.vue initializes theme and types
- usePokedex() manages filters, API, cache, and concurrency
- The UI updates reactively
- Suggested framework: Vitest
- Recommended test cases:
- Pagination and incremental loading
- Filter bar component
- Theme store
npm run build npm run preview
The generated content in dist/ can be deployed to Vercel, Netlify, or any static server.
Live version: https://pokedex-glass.netlify.app
MIT — free for educational or personal use.
Developed as a modern Vue architecture exercise.
API: https://pokeapi.co/