Professional React + TypeScript frontend for an e-commerce laptop store, with separate customer and admin experiences.
- React 19 + TypeScript
- Vite 7
- React Router 7
- Ant Design 5
- Tailwind CSS 4 + SCSS
- Axios
- ESLint (TypeScript + React rules)
- Customer storefront with product listing and detail pages
- Product search, filter, sorting, and pagination
- Cart management (add, update quantity, empty cart)
- Checkout flow and order submission
- User authentication (register/login/logout)
- Order history for authenticated users
- Admin user management
- Admin product management (create/delete)
- Protected admin routes
src/
components/
admin/
auth/
client/
context/
modal/
pages/
admin/
auth/
client/
services/
styles/
/- Client home/products- Product listing/products/:id- Product detail/cart- Shopping cart/checkout- Checkout/thanks- Order confirmation/orders- User orders/login- Sign in/register- Sign up/admin- Admin dashboard (protected)/admin/users- Admin users (protected)/admin/products- Admin products (protected)
- Node.js 22+ (CI uses Node 22)
- npm
npm installCreate a .env file in the project root:
VITE_API_BASE_URL=your_api_base_url_herenpm run devThe app will start on Vite's local dev server (typically http://localhost:5173).
npm run dev- Start development servernpm run build- Type-check and create production buildnpm run lint- Run ESLintnpm run preview- Preview production build locally
- Axios instance is configured in
src/services/axios.ts. - Base URL is read from
VITE_API_BASE_URL. - JWT access token is read from
localStorageand attached asAuthorization: Bearer <token>. - API functions are organized in
src/services/api.ts.
GitHub Actions workflow (.github/workflows/ci.yml) runs on pull requests and pushes to main:
- Install dependencies (
npm ci) - Lint (
npm run lint) - Build (
npm run build)
This project is suitable for deployment on Vercel, Netlify, or any static hosting platform that supports Vite builds.
Build command:
npm run buildOutput directory:
dist/