This project is a modern, responsive Pokedex application built to demonstrate Frontend Engineering best practices, including Atomic Design architecture, comprehensive testing strategies, and efficient state management.
The application provides a rich interface for exploring Pokemon data, featuring:
- Dashboard: Detailed analytics and visualizations of Pokemon stats.
- Comparison Tool: Compare two Pokemon side-by-side with radar charts.
- Search & Filter: Advanced filtering by type, generation, and name.
- Detail View: Comprehensive Pokemon information including stats, abilities, and evolution chains.
This project follows the Atomic Design methodology to ensure scalability, maintainability, and reusability.
Basic building blocks that cannot be broken down further.
- Examples:
PokemonTypeBadge,ThemeController - Purpose: Provide consistent styling and base functionality.
Groups of atoms functioning together as a unit.
- Examples:
DashboardControls,Filter,SearchablePokemonSelector,SearchableSimpleSelector - Purpose: Create functional UI components (e.g., a search bar with a label).
Complex UI sections composed of groups of molecules and/or atoms.
- Examples:
PokemonCard,PokemonComparison,PokemonDetail,EvolutionChain - Purpose: Form distinct sections of an interface (e.g., a product card, a header).
Page-level objects that place components into a layout.
- Examples:
TechBackground,DreamyBackground - Purpose: Define the underlying content structure.
Specific instances of templates where real content is populated.
- Examples: Dashboard Page, Pokemon Detail Page.
- Next.js 15+ (App Router): For server-side rendering, routing, and optimization.
- React 19: Utilizing the latest features like Server Components and Hooks.
- TypeScript: Ensuring type safety and better developer experience.
- Tailwind CSS v4: Utility-first CSS framework for rapid UI development.
- DaisyUI: Component library for Tailwind CSS.
- Framer Motion: For smooth animations and transitions.
- Lucide React: Consistent icon set.
- Redux Toolkit: Centralized state management for complex application states.
- RTK Query: Efficient data fetching and caching.
- Recharts: Composable charting library for React components.
We employ a multi-layered testing strategy to ensure reliability and maintainability.
- Jest: Test runner and assertion library.
- React Testing Library (RTL): Testing components from the user's perspective.
- Coverage:
- Component rendering and interaction.
- Utility functions and helpers.
- Redux slice logic and reducers.
- Playwright: Robust cross-browser E2E testing.
- Scope:
- Critical user flows (Search, Navigation, Comparison).
- Cross-browser compatibility.
- Performance metrics.
- Component Reusability: Leveraging Atomic Design to maximize code reuse.
- Clean Code: Adhering to SOLID principles and meaningful naming conventions.
- Performance First: Utilizing Next.js optimizations (Image, Link prefetching) and efficient rendering.
- Accessibility (a11y): Semantic HTML and proper ARIA attributes where necessary.
- Responsive Design: Mobile-first approach ensuring usability across all device sizes.
-
Install Dependencies:
npm install
-
Run Development Server:
npm run dev
-
Run Tests:
npm test # Unit Tests npm run test:e2e # E2E Tests
-
Build for Production:
npm run build