Aboudo React is a feature-rich Meat Shop e-commerce web application built as a fully functional React 18 app using Vite and Bootstrap 4. It ships with 20+ page-level components, a filterable meat-cut gallery, a full e-commerce module with cart and checkout, a recipe and blog module, all built with modern functional React and zero class components.
Built for React developers delivering butcher shop and meat market websites and applications. The codebase uses hooks exclusively — useState, useEffect, useContext, useRef, and custom hooks for state management and side effects. Every UI section is an isolated, reusable component. Swap the static JSON data sources for any REST API or headless CMS and the UI layer is immediately production-ready.
Everything in the Package
20+ page-level React components with React Router v6 client-side routing
React 18 with Vite — fast HMR dev server and optimised production build out of the box
React Router v6 — client-side routing with lazy-loaded page components via React.lazy()
Bootstrap 4 — responsive grid and utility classes, no jQuery dependency
React Context and useReducer for global state management (cart, filters, UI state)
React Hook Form — field validation, error messages, and submission state on all forms
Swiper React — touch-friendly carousels via SwiperSlide components
All data sourced from typed JSON files in src/data/ — swap to fetch() or axios for live API
Retina-ready, fully responsive from 320px to 1920px+
ESLint configured — Airbnb ruleset with React Hooks plugin
React Helmet Async — per-route title and meta description for SEO
PropTypes defined on every component for clear prop contracts
Component Architecture
Page components map 1:1 to routes — each in its own file under src/pages/
Shared components: Navbar, Footer, BackToTop, and feature-specific cards and widgets
Custom hooks encapsulate side effects and shared logic — separate from JSX templates
React.lazy() and Suspense applied to secondary page bundles — code-split on route change
CartContext (or FilterContext) wraps the router at root level — state accessible on every route