ajinkya-mhetre-mern
Version:
A MERN starter with frontend and backend folders
56 lines (49 loc) • 2.42 kB
JSX
// 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