Nice Gadgets is a responsive Single Page Application for browsing phones, tablets, and accessories.
The project is built with React, TypeScript, Redux Toolkit, React Router, and SCSS Modules. It provides a complete e-commerce catalog experience with product details, cart, favorites, search, sorting, pagination, localization, theme switching, and responsive navigation.
- Responsive design for mobile, tablet, and desktop
- Product catalog for phones, tablets, and accessories
- Product search with URL query parameters
- Sorting and pagination
- Product details pages with:
- Image gallery
- Color selection
- Capacity selection
- Product specifications
- About section
- Suggested products slider
- Shopping cart with:
- Add and remove products
- Quantity controls
- Total price calculation
- LocalStorage persistence
- Favorites with:
- Add and remove products
- Dedicated favorites page
- Search in favorites
- LocalStorage persistence
- Breadcrumb navigation
- Responsive banner slider
- Product sliders
- English and Ukrainian localization
- Light and dark themes
- Saved theme and language preferences
- Skeleton loaders and loading states
- Empty states and error states
- Mobile navigation menu
- Automatic scroll to top after route changes
- Client-side routing with React Router
- React
- TypeScript
- Redux Toolkit
- React Redux
- React Router DOM
- SCSS Modules
- Vite
- HTML5
- LocalStorage
- Git
- GitHub Pages
Clone the repository:
git clone https://github.com/AntonyShaga/nice-gadgets-store.gitNavigate to the project directory:
cd nice-gadgets-storeInstall dependencies:
npm installRun the project locally:
npm start/
/phones
/tablets
/accessories
/phones/:itemId
/tablets/:itemId
/accessories/:itemId
/favorites
/cartRedux Toolkit is used for global application state.
The application stores:
- Shopping cart
- Favorites
- Selected language
- Selected theme
Cart, favorites, language, and theme preferences are persisted in localStorage.
Catalog pages are reused for phones, tablets, and accessories.
Users can:
- Search products
- Sort products
- Change the number of products per page
- Navigate through pages with pagination
- Open detailed product pages
Catalog state is synchronized with URL query parameters where applicable.
Each product page includes:
- Product image gallery
- Available colors
- Available capacities
- Pricing information
- Add to cart action
- Add to favorites action
- Short specifications
- Detailed technical specifications
- Product description
- Suggested products
The application supports:
- Light theme
- Dark theme
- System theme detection
- English localization
- Ukrainian localization
User preferences are saved in localStorage.
The application includes:
- Breadcrumbs
- Responsive header
- Mobile menu
- Banner slider
- Product sliders
- Skeleton loaders
- Loading states
- Empty states
- Error states
- Automatic scroll restoration between routes
The interface is based on the Mate Academy Product Catalog design and extended with responsive layouts, dark/light themes, localization, additional UI states, and application functionality.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Anton Shaga
GitHub: AntonyShaga