A professional React + Vite product filtering interface focused on a footwear catalog. The application demonstrates a clean client-side filtering experience with searchable products, sidebar filters, recommended brand shortcuts, and reusable UI components.
This project presents a product listing page where users can browse shoes and narrow results instantly using multiple filter controls. It is a good starter project for learning React state management, component composition, and data-driven UI rendering.
- Real-time search by product name
- Filter products by category
- Filter products by price range
- Filter products by color
- Quick brand selection through recommended buttons
- Reusable card, input, and button components
- Lightweight frontend setup with Vite
- React 19
- Vite 7
- React Icons
- ESLint
- Feature-based plain CSS organization
Filtering/
|-- public/
|-- src/
| |-- assets/
| |-- components/
| |-- db/
| |-- Navigation/
| |-- Products/
| |-- Recommended/
| |-- Sidebar/
| |-- App.jsx
| |-- index.css
| |-- main.js
| |-- main.jsx
|-- index.html
|-- package.json
|-- vite.config.js
- Node.js 18 or later
- npm 9 or later
npm installnpm run devOpen the local URL shown in the terminal, typically http://localhost:5173.
npm run devStarts the development server with hot module replacement.
npm run buildCreates an optimized production build.
npm run previewServes the production build locally for preview.
npm run lintRuns ESLint checks across the project.
- The search bar filters products by title in real time.
- Sidebar radio groups filter by category, price, and color.
- Recommended buttons provide quick filtering by brand.
- Product cards are rendered dynamically from the dataset in
src/db/data.jsx.
- React practice project for component-based UI design
- Demo app for client-side filtering logic
- Starter template for an e-commerce catalog interface
- Add multi-select filtering
- Normalize product data types for stronger filtering logic
- Replace mock data with an API or backend service
- Add routing, pagination, and product details pages
- Improve accessibility and keyboard navigation
The current dataset is local and static, which makes the project simple to run and easy to extend. Most application behavior is managed from src/App.jsx, while filter controls are grouped under the src/Sidebar/ directory for maintainability.