Este README também está disponível em Português.
A digital game store built with React and TypeScript that integrates with my custom API maintained and run by me using RTK Query. It provides a complete shopping and checkout experience, featuring responsive design, form validation, input masking, and accessibility best practices. The API now supports fetching a random featured game and retrieving game details by ID.
The StartSelect Store allows users to browse and purchase digital games. Key features include:
- Dynamic game listing fetched from my custom API using RTK Query;
- Random featured game returned on every reload (IDs 2, 5, 12, 14);
- Game details accessible via
jogos/{id}endpoint for IDs 1–19; - Detailed product pages with descriptions and images;
- Shopping cart management with add/remove functionality;
- Multi-step checkout with form validation using Formik and Yup;
- Masked inputs for CPF and credit card formatting;
- Loading states using react-spinners;
- Mobile-first and responsive design;
- Accessible and semantic HTML structure.
All data is fetched from my custom StartSelect API:
https://start-select-api.vercel.app/- React
- TypeScript
- Styled Components
- React Router DOM
- RTK Query
- Formik + Yup
- React Input Mask
- React Spinners
- Clone the repository:
git clone https://github.com/AsrielDreemurrGM/StartSelect_Store.git - Install dependencies:
or
npm installyarn install - Start the development server:
or
npm run devyarn dev
You can access the deployed version of the project here:
https://start-select-store.vercel.app
src/
├── components/ # Reusable UI components
├── pages/ # Page components for routing
├── services/ # RTK Query API slices
├── styles/ # Global styles and theme
├── utils/ # Helper functions and masks
├── types/ # TypeScript type definitions
└── App.tsx # Main application structure
- The checkout page does not process real payments, it's a mock simulation;
- API calls now rely on my custom REST endpoint with static JSON files and dynamic featured/random game logic.
- Checkout Page – Added validation, input masks, and dynamic rendering of cart summary;
- Cart Management – Implemented add/remove logic and quantity state handling;
- Product Listing – Integrated RTK Query to fetch and display products from my custom API;
- Loading & Feedback – Added loading indicators and error fallback UI.