Rocks/ ├── frontend/ │ ├── node_modules/ │ ├── src/ │ │ ├── pages/ │ │ │ ├── Admin/ │ │ │ │ ├── OrdersPage.jsx │ │ │ │ ├── SettingsPage.jsx │ │ │ │ ├── CustomersPage.jsx │ │ │ │ ├── ProductEditPage.jsx │ │ │ │ ├── DashboardPage.jsx │ │ │ │ ├── CategoriesPage.jsx │ │ │ │ └── ProductsPage.jsx │ │ │ ├── PaymentSuccessPage.jsx │ │ │ ├── CheckoutPage.jsx │ │ │ ├── UserOrdersPage.jsx │ │ │ ├── PaymentCancelPage.jsx │ │ │ ├── ProductDetailPage.jsx │ │ │ ├── CartPage.jsx │ │ │ ├── ProductsPage.jsx │ │ │ ├── HomePage.jsx │ │ │ ├── VerifyPage.jsx │ │ │ ├── RegisterPage.jsx │ │ │ ├── NotFoundPage.jsx │ │ │ └── LoginPage.jsx │ │ ├── components/ │ │ │ ├── OrderStatusDialog.jsx │ │ │ ├── StripePaymentForm.jsx │ │ │ ├── EmailDialog.jsx │ │ │ ├── Footer.jsx │ │ │ ├── ImageUploader.jsx │ │ │ ├── ProductImage.jsx │ │ │ ├── ProtectedRoute.jsx │ │ │ └── Notifications.jsx │ │ ├── context/ │ │ │ └── StripeContext.jsx │ │ ├── hooks/ │ │ │ ├── apiHooks.js │ │ │ ├── adminHooks.js │ │ │ ├── reduxHooks.js │ │ │ ├── settingsAdminHooks.js │ │ │ └── categoryAdminHooks.js │ │ ├── services/ │ │ │ ├── adminService.js │ │ │ ├── authService.js │ │ │ ├── settingsAdminService.js │ │ │ ├── cartService.js │ │ │ ├── categoryAdminService.js │ │ │ ├── imageService.js │ │ │ ├── productService.js │ │ │ └── api.js │ │ ├── utils/ │ │ │ └── imageUtils.js │ │ ├── layouts/ │ │ │ ├── MainLayout.jsx │ │ │ ├── AdminLayout.jsx │ │ │ └── AuthLayout.jsx │ │ ├── theme/ │ │ │ ├── index.js │ │ │ └── ThemeProvider.jsx │ │ ├── features/ │ │ │ ├── ui/ │ │ │ │ └── uiSlice.js │ │ │ ├── cart/ │ │ │ │ └── cartSlice.js │ │ │ ├── auth/ │ │ │ │ └── authSlice.js │ │ │ └── store/ │ │ │ └── index.js │ │ ├── assets/ │ │ ├── App.jsx │ │ ├── config.js │ │ └── main.jsx │ └── public/ │ ├── favicon.svg │ ├── package-lock.json │ ├── package.json │ ├── vite.config.js │ ├── Dockerfile │ ├── nginx.conf │ ├── index.html │ ├── README.md │ ├── .env │ └── setup-frontend.sh ├── backend/ │ ├── src/ │ │ ├── routes/ │ │ │ ├── userOrders.js │ │ │ ├── orderAdmin.js │ │ │ ├── stripePayment.js │ │ │ ├── cart.js │ │ │ ├── auth.js │ │ │ ├── userAdmin.js │ │ │ ├── settingsAdmin.js │ │ │ ├── products.js │ │ │ ├── categoryAdmin.js │ │ │ ├── productAdminImages.js │ │ │ ├── images.js │ │ │ └── productAdmin.js │ │ ├── models/ │ │ │ └── SystemSettings.js │ │ ├── middleware/ │ │ │ ├── upload.js │ │ │ ├── auth.js │ │ │ └── adminAuth.js │ │ ├── db/ │ │ │ └── index.js │ │ ├── index.js │ │ └── config.js │ ├── public/ │ │ └── uploads/ │ │ └── products/ │ ├── node_modules/ │ ├── .env │ ├── package.json │ ├── Dockerfile │ ├── README.md │ └── .gitignore ├── db/ │ ├── init/ │ │ ├── 01-schema.sql │ │ ├── 02-seed.sql │ │ ├── 03-api-key.sql │ │ ├── 04-product-images.sql │ │ ├── 05-admin-role.sql │ │ ├── 06-product-categories.sql │ │ ├── 07-user-keys.sql │ │ ├── 08-create-email.sql │ │ ├── 09-system-settings.sql │ │ ├── 10-payment.sql │ │ └── 11-notifications.sql │ └── .gitignore ├── test/ ├── fileStructure.txt ├── docker-compose.yml └── .gitignore