Router Setup
The application uses React Router v6 withHashRouter for GitHub Pages compatibility.
Main App Component
src/App.jsx
File Location
File Location
src/App.jsxRoute Configuration
Available Routes
Home Page - Product catalog with filters and search
- Component:
Inicio - File:
src/pages/Home/Inicio.jsx - Features: Product grid, search, filters, hero section
Contact Page - Contact form and business information
- Component:
Contacto - File:
src/pages/Contact/Contacto.jsx - Features: Contact form, location info
Shopping Cart - View and manage cart items
- Component:
Carrito - File:
src/pages/Cart/Carrito.jsx - Features: Item list, quantity controls, order summary
Authentication - Login and registration
- Component:
Login - File:
src/pages/Login/Login.jsx - Features: Login form, register form, decorative panel
Admin Panel - Product management interface
- Component:
AdminPanel - File:
src/pages/Admin/AdminPanel.jsx - Features: CRUD operations, no header/footer
Router Provider
The router is initialized in the application entry point:src/main.jsx
Navigation Components
Header Navigation
TheHeader component uses React Router’s Link component for client-side navigation:
src/components/Header.jsx
Navigation Items
Inicio
Home page with product catalog
Contacto
Contact form and information
Carrito
Shopping cart with checkout
Iniciar Sesión
Login and registration (accent style)
Conditional Layout Rendering
The application conditionally renders the Header and Footer based on the current route:The Admin Panel (
/admin) is rendered without the standard Header and Footer to provide a focused management interface.Route Hooks
useLocation
Track the current route location:useNavigate
Programmatic navigation (not currently used in the app, but available):URL Structure
Development URLs
Production URLs (GitHub Pages)
Notice the
# in the URLs - this is a characteristic of HashRouter and allows the app to work without server-side routing configuration.Page Components
Home Page (Inicio)
Location:src/pages/Home/Inicio.jsx
Features:
- Hero section with search
- Product grid
- Filter sidebar
- Sorting options
Cart Page (Carrito)
Location:src/pages/Cart/Carrito.jsx
Features:
- Cart items list
- Quantity controls
- Order summary
- Empty cart state
Contact Page (Contacto)
Location:src/pages/Contact/Contacto.jsx
Features:
- Contact form
- Business information
- Location details
Login Page
Location:src/pages/Login/Login.jsx
Features:
- Login form
- Registration form
- Tab switching
Admin Panel
Location:src/pages/Admin/AdminPanel.jsx
Features:
- Product CRUD operations
- No header/footer
- Admin-specific layout
Router Configuration
Why HashRouter?
GitHub Pages Compatibility
GitHub Pages Compatibility
GitHub Pages serves static files and doesn’t support server-side routing.
HashRouter uses URL hashes to simulate routing without requiring server configuration.No Server Configuration Required
No Server Configuration Required
Unlike
BrowserRouter, HashRouter doesn’t require server rewrites or redirects to handle deep links.Instant Deployment
Instant Deployment
Deploy directly to GitHub Pages without additional configuration files or build steps.
Alternative: BrowserRouter
If deploying to a server with routing support:Navigation Best Practices
Use Link for navigation
Always use React Router’s
Link component instead of <a> tags for internal navigation to prevent full page reloads.Next Steps
Components
Learn about page components
Cart System
Explore the cart implementation