This frontend is integrated with the backend API using:
- Axios (HTTP client)
- TanStack Query (server-state cache, query, mutation)
-
src/lib/apiClient.js- Axios instance setup (
baseURL,withCredentials, JSON headers) - Shared request function with centralized error handling
- Axios instance setup (
-
src/lib/apiService.js- One file for reusable GET/POST/PUT/DELETE methods
- Clear grouped APIs by feature (
authApi,userApi,productApi,adminApi) - Query key map for TanStack Query (
queryKeys)
-
src/lib/queryClient.js- QueryClient defaults (
staleTime, retry strategy)
- QueryClient defaults (
-
src/components/context/AuthContext/AuthProvider.jsx- Reads Better Auth session from
/api/auth/get-session - Exposes
login,register,logout,user,isAuthenticated
- Reads Better Auth session from
-
src/components/authentication/Login.jsx- Uses
authApi.loginmutation - Supports demo account auto-fill
- Uses
-
src/components/authentication/Register.jsx- Uses
authApi.registermutation
- Uses
-
src/components/authentication/RequireAuth.jsx- Protects user-only pages
-
src/components/authentication/RequireAdmin.jsx- Protects admin-only pages
src/components/common/Navbar.jsx- First visit modal shows demo credentials:
- user demo:
user@demo.com / user12345 - admin demo:
admin@demo.com / admin12345
- user demo:
- If logged out: shows login/register options
- If logged in: shows My Account (and Admin Dashboard for admin role)
- Hides login option after successful login/register
- First visit modal shows demo credentials:
-
src/components/users/Userdashboard.jsx- GET
/api/users/me/dashboard
- GET
-
src/components/users/UserOrder.jsx- GET
/api/orders/me - POST
/api/orders/:id/cancel
- GET
-
src/components/users/UserAddress.jsx- GET
/api/users/me/addresses - POST
/api/users/me/addresses - PUT
/api/users/me/addresses/:id - DELETE
/api/users/me/addresses/:id
- GET
-
src/components/users/UserAccount.jsx- GET
/api/users/me - PUT
/api/users/me - POST
/api/users/me/password
- GET
-
src/components/Admin/AdminDashBoard.jsx- GET
/api/admin/dashboard
- GET
-
src/components/Admin/OrderManagement.jsx- GET
/api/admin/orders - PUT
/api/admin/orders/:id/status
- GET
-
src/components/Admin/ProductManagement.jsx- GET
/api/products?includeDrafts=true - POST
/api/products - PUT
/api/products/:id - DELETE
/api/products/:id
- GET
-
src/main.jsx- QueryClientProvider + AuthProvider
-
src/App.jsx- Route protection for
/my-accountand/admin
- Route protection for
Create .env in frontend root:
pnpm install
pnpm dev