Eyewear CMS
Admin CMS for FYE, an eyewear e-commerce brand. Internal staff use it to manage products, orders, customers, coupons, content pages, media, and admin roles. Replaces a manual or fragmented workflow with a centralized ope…
This project is a legit production system — the UI is internal/confidential so screenshots aren't available.
Enterprise
18 technologies
Admin CMS for FYE, an eyewear e-commerce brand. Internal staff use it to manage products, orders, customers, coupons, content pages, media, and admin roles. Replaces a manual or fragmented workflow with a centralized operations dashboard.
Problem
Eyewear products have complex attributes (lens width, bridge, temple, PD) requiring structured data management across inventory, pricing, and variants
Admin team needed role-based access control with granular CRUD permissions per module
Approach
Built on Crema Ant Design template, customized entirely for eyewear operations with 10 feature modules (Inventory, Order Management, Coupons, Customers, Pages, Media Library, User Roles, Activity Logs)
Dynamic route generation with permission-based guards — sidebar menus and routes auto-filter based on the logged-in user's role permissions
Custom AppDataTable component abstracts server-side pagination, sorting, 700ms debounced search, filter sidebar, and permission-aware action columns into a reusable pattern used across all modules
Context + useReducer state management with 5 providers (theme, locale, layout, sidebar, global notifications) — no external state library
JWT auth with AES-256-CBC password encryption, rate-limit throttling (60s lockout on 429), and interceptors for token injection and 401 redirect
Impact
Single unified panel replacing manual product/order management across the eyewear supply chain
Granular role-based security enables delegating access without risk
Consistent UX across 10+ CRUD modules via reusable data table and permission guard components
Stack
- React 18
- Vite 5
- Ant Design 5
- styled-components 6
- Tailwind CSS 3
- react-router-dom 6
- react-intl 6
- Context API + useReducer
- axios
- recharts
- Jodit WYSIWYG
- FileStack
- crypto-js
- dayjs
- ESLint
- Prettier
- Husky
- commitlint