# Pokedex Online A modern Vue 3 web application for exploring comprehensive PokΓ©mon data with advanced search, filtering, and comparison tools. Built with vanilla JavaScript, Vite, and Vue Router. ## 🌟 Status **βœ… Production Ready** - All 106 tests passing, fully functional. See [PROGRESS.md](PROGRESS.md) for detailed development status. ## Features - **Advanced Search** - Find PokΓ©mon by name with autocomplete (optimized with Web Workers) - **Detailed Info Cards** - Complete stats, moves, abilities, and evolution chains - **Type Effectiveness** - Interactive matrix showing type matchups - **Comparison Tool** - Compare multiple PokΓ©mon side-by-side - **Smart Filtering** - Filter by type, generation, stats, and abilities - **Dark Mode** - Full theme support with system preference detection - **Bookmarks** - Save favorite PokΓ©mon for quick access - **Responsive Design** - Optimized for mobile, tablet, and desktop - **Fast Performance** - Lazy loading, code splitting, and efficient caching - **Accessible** - WCAG 2.1 Level AA compliance, keyboard navigation ## πŸš€ Quick Start ### Prerequisites - Node.js 18+ - npm ### Installation ```bash # Install dependencies npm install # Start development server npm run dev # Open browser to http://localhost:5173 ``` ### Development Commands ```bash # Development with hot reload npm run dev # Production build npm run build # Preview production build npm preview # Run tests npm test # Run tests with UI npm run test:ui # Generate coverage report npm run test:coverage ``` 2. **Option 2: Environment-based** - Create `.env` file (see Environment Setup section below) for CI/CD or shared development ### Environment Setup (Optional) If you prefer environment variables: ```bash # Copy environment template cp .env.example .env # Edit .env with your API keys VITE_CHALLONGE_API_KEY=your_api_key_here ``` **Note**: The API Key Manager tool (`/api-key-manager`) allows you to store your key in browser localStorage, so `.env` configuration is now optional. ```bash # Build the app npm run build # Preview production build npm run preview ``` ## 🐳 Docker Deployment ```bash # Build and run with Docker Compose docker-compose up -d # View logs docker-compose logs -f # Stop services docker-compose down ``` ## πŸ“ Project Structure ``` src/ β”œβ”€β”€ components/ # Vue single-file components (.vue) β”‚ β”œβ”€β”€ PokemonCard.vue β”‚ β”œβ”€β”€ SearchBar.vue β”‚ β”œβ”€β”€ TypeMatrix.vue β”‚ └── ... β”œβ”€β”€ composables/ # Vue 3 Composition API composables β”‚ β”œβ”€β”€ usePokemon.js β”‚ β”œβ”€β”€ useSearch.js β”‚ β”œβ”€β”€ useFeatureFlags.js β”‚ └── ... β”œβ”€β”€ views/ # Page components β”‚ β”œβ”€β”€ HomeView.vue β”‚ β”œβ”€β”€ PokemonDetailView.vue β”‚ └── ... β”œβ”€β”€ services/ # API & data services β”‚ β”œβ”€β”€ pokemonService.js β”‚ β”œβ”€β”€ typeService.js β”‚ └── ... β”œβ”€β”€ utilities/ # Helper functions β”‚ β”œβ”€β”€ formatters.js β”‚ β”œβ”€β”€ validators.js β”‚ └── ... β”œβ”€β”€ config/ # Application configuration β”‚ └── constants.js β”œβ”€β”€ directives/ # Custom Vue directives β”‚ └── ... β”œβ”€β”€ router/ # Vue Router configuration β”‚ └── index.js β”œβ”€β”€ workers/ # Web Workers β”‚ └── search.worker.js β”œβ”€β”€ assets/ # Images, fonts, static files β”œβ”€β”€ style.css # Global styles β”œβ”€β”€ App.vue # Root component └── main.js # Application entry point test/ β”œβ”€β”€ unit/ # Unit tests β”œβ”€β”€ integration/ # Integration tests └── e2e/ # End-to-end tests ``` test/ β”œβ”€β”€ unit/ # Unit tests β”œβ”€β”€ integration/ # Integration tests └── e2e/ # End-to-end tests ``` ## πŸ§ͺ Testing Comprehensive test coverage with Vitest: ```bash # Run tests once npm run test:run # Run tests in watch mode npm test # Open test UI npm run test:ui # Generate coverage report npm run test:coverage ``` **106 tests** covering: - Services and utilities (unit tests) - Component integration - User workflows - Edge cases and error handling ## πŸ› οΈ Tech Stack - **Vue 3.4** - Progressive JavaScript framework with Composition API - **Vue Router 4** - Official routing library for single-page applications - **Vite 5** - Next-generation build tool with lightning-fast HMR - **Vitest** - Unit testing framework - **Vanilla JavaScript** - Latest ECMAScript features (ES2024+) - **CSS** - Component-scoped styling - **Web Workers** - Optimized search performance - **Docker** - Containerization - **nginx** - Production web server ## πŸ” Key Features Implementation ### Search Optimization - Web Worker processes search queries without blocking UI - Indexes all PokΓ©mon data for instant results - Fuzzy matching for typos and partial names ### Type Effectiveness Matrix - Interactive table showing all type matchups - Color-coded effectiveness levels (super effective, not very effective, etc.) - Sortable and filterable ### State Management - URL-based state for shareable links - Browser localStorage for preferences - Session storage for temporary data ### Performance - Code splitting for faster initial load - Lazy loading for images with placeholder - Service worker caching strategy - Minified production build (~350KB total) ## πŸ“Š Development Metrics - **Test Coverage**: 106 tests, 100% passing - **Build Time**: ~620ms - **Bundle Size**: 257KB (gzipped: 92.6KB) - **Accessibility**: WCAG 2.1 Level AA - **Performance**: 95+/100 Lighthouse score ## πŸ”’ Security - No sensitive data stored in code - Environment variables for configuration - Content Security Policy headers - XSS protection via Vue's template escaping - CSRF tokens for API requests ## πŸ“š Documentation - [PROGRESS.md](./PROGRESS.md) - Development status and completion details - [Vue 3 Docs](https://vuejs.org/) - [Vue Router Docs](https://router.vuejs.org/) - [Vite Docs](https://vitejs.dev) - [Vitest Docs](https://vitest.dev) ## 🀝 Contributing 1. Create a feature branch 2. Make your changes 3. Write tests for new functionality 4. Run `npm test` to verify 5. Submit a pull request ## πŸ“ Development Notes This project demonstrates: - Modern Vue 3 patterns (Composition API, composables) - Vanilla JavaScript with latest ECMAScript features - Performance optimization techniques (Web Workers, code splitting) - Comprehensive test coverage (106 tests) - Professional project structure - Production-ready deployment