Project Highlights
- Built a Vue 3 application using the Composition API with TypeScript throughout, structuring logic into reusable composables (useGames, useGenres, usePlatforms) for clean separation of concerns.
- Integrated the RAWG Video Games API via a generic typed APIClient<T> class wrapping Axios, enabling consistent and type-safe REST data fetching across the app.
- Implemented TanStack Vue Query for server-state management, providing automatic caching, background refetching, and infinite scroll pagination for the game grid.
- Added Apollo Client with GraphQL and @vue/apollo-composable as a secondary data source, demonstrating multi-protocol API integration within a single frontend project.
- Managed global UI state — including active genre, platform, and sort filters — using Pinia stores, keeping filter state consistent across route changes.
- Built component-based UI with GameCard, GameGrid, GenreList, and NavBar components, all wired to Vue Router v5 for client-side navigation.
- Configured Vite v8 as the build tool and vue-tsc for TypeScript checking, keeping dev server startup fast and type errors caught at build time.
