UNPKG

ajinkya-mhetre-mern

Version:

A MERN starter with frontend and backend folders

56 lines (49 loc) 2.42 kB
// Alternative App.jsx - Cleaner Structure import React from 'react' import { Routes, Route, Navigate } from 'react-router-dom' import AuthGuard from './components/common/AuthGuard' import RoleGuard from './components/common/RoleGuard' import Layout from './components/layout/Layout' import Login from './pages/auth/Login' import Register from './pages/auth/Register' import Home from './pages/Home' import NotFound from './pages/NotFound' // Role-based page imports import AdminFramers from './pages/Admin/Framers' import AdminUser from './pages/Admin/Users' import AddminAddFramers from './pages/Admin/AddFramers' // Farmer-specific page imports import FramersMyProduct from './pages/Framers/FramersMyProduct' import FramersMyOrders from './pages/Framers/FramersMyOrders' // Customer-specific page imports import UserOrder from './pages/customer/UserOrder' function App() { return ( <Routes> {/* Auth Routes - No Layout */} <Route path="/login" element={<Login />} /> <Route path="/register" element={<Register />} /> {/* All other routes use unified Layout */} <Route path="/" element={<Layout />}> {/* Public Home Route */} <Route path="home" element={<Home />} /> <Route index element={<Navigate to="/home" replace />} /> {/* Protected Dashboard Routes */} <Route path="dashboard" element={<AuthGuard />}> {/* Admin Routes */} <Route path="admin/users" element={<RoleGuard allowedRoles={['admin']}><AdminUser /></RoleGuard>} /> <Route path="admin/farmers" element={<RoleGuard allowedRoles={['admin']}><AdminFramers /></RoleGuard>} /> <Route path="admin/addframer" element={<RoleGuard allowedRoles={['admin']}><AddminAddFramers /></RoleGuard>} /> {/* Farmer Routes */} <Route path="farmer/my-products" element={<RoleGuard allowedRoles={['farmer']}><FramersMyProduct /></RoleGuard>} /> <Route path="farmer/my-orders" element={<RoleGuard allowedRoles={['farmer']}><FramersMyOrders /></RoleGuard>} /> {/* Customer Routes */} <Route path="customer/order" element={<RoleGuard allowedRoles={['customer']}><UserOrder /></RoleGuard>} /> </Route> {/* Catch all other routes - 404 Page */} <Route path="*" element={<NotFound />} /> </Route> </Routes> ) } export default App