ChronoRoyale is a modern full-stack e-commerce platform designed for luxury watch sales. It provides a seamless shopping experience with secure authentication, cart and wishlist system, order management, and a powerful admin dashboard for analytics and inventory control.
- Introduction
- β Tech Stack
- π Features
- π Deployment
- πΈ Preview
- π¦ Quick Start
- π‘ API Documentation
ChronoRoyale is built to deliver a modern e-commerce experience specifically for luxury watches. Users can browse, wishlist, add to cart, and place orders. Admins can manage products, users, and orders with ease.
| Layer | Technologies Used |
|---|---|
| Frontend | HTML, CSS, JavaScript, Handlebars, Bootstrap 5, Chart.js |
| Backend | Node.js, Express.js, MVC Architecture, Multer |
| Database | MongoDB Atlas |
| Authentication | JWT, Session Cookies |
| Deployment | Render, GitHub |
- User Authentication (Login / Signup)
- Product Details Page with Image Gallery
- Add to Cart / Wishlist
- Checkout with Address & Cash On Delivery
- Order Tracking & History
- Profile Management
- Image Zoom on Product Page
- Manage Products (Add / Edit / Delete)
- Order Management & Status Updates
- User Management (View, Block/Unblock)
- Real-Time Analytics & Reports
- Light & Dark Mode
- Soft Delete for Products
The project is hosted on Render.
- User Panel: ChronoRoyale User
- Admin Panel: ChronoRoyale Admin
Admin Credentials:
- Username:
admin - Password:
123
| Home Page | Product Page | Cart | Admin Dashboard |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
git clone https://github.com/shasbinas/ChronoRoyale-Ecommerce-WebApp.git
cd ChronoRoyale-Ecommerce-WebAppnpm installPORT=9002
DATABASE=ChronoRoyale
MONGO_DB_URI="your_mongodb_connection_string"
JWT_SECRET=your_secret_key
ADMIN_EMAIL=admin
ADMIN_PASSWORD=123npm run dev # Development mode
npm start # Production modeVisit β http://localhost:9002
| Method | Endpoint | Description | Body / Params |
|---|---|---|---|
| POST | /auth/register |
Register a new user | { name, email, password } |
| POST | /auth/login |
Login user & return token/session | { email, password } |
| GET | /auth/logout |
Logout user | - |
| GET | /auth/profile (Protected) |
Get logged-in user details | Header: Authorization: Bearer <token> |
| Method | Endpoint | Description | Body / Params |
|---|---|---|---|
| GET | /products |
Get all products | Optional: ?search=&category=&sort= |
| GET | /products/:id |
Get single product details | Path: id |
| POST | /admin/add-product (Admin) |
Create new product | { name, brand, price, description, images[] } |
| PUT | /admin/products/:id (Admin) |
Update product | Same as above |
| DELETE | /admin/products/:id (Admin) |
Delete product | Path: id |
| Method | Endpoint | Description | Body / Params |
|---|---|---|---|
| POST | /add-to-cart |
Add item to cart | { productId, quantity } |
| GET | /cart |
Get user cart | - |
| GET | /cart/clear |
Clear all items in cart | - |
| GET | /cart/remove/:productId |
Remove selected item from cart | Path: productId |
| Method | Endpoint | Description | Body / Params |
|---|---|---|---|
| POST | /add-to-wishlist |
Add item to wishlist | { productId } |
| GET | /wishlist |
Get wishlist items | - |
| POST | /remove-from-wishlist |
Remove from wishlist | { productId } |
| Method | Endpoint | Description | Body / Params |
|---|---|---|---|
| POST | /place-order |
Place new order | { cartItems[], address, paymentMethod } |
| GET | /order-history |
Get logged-in user orders | - |
| GET | /orders/:id |
Get order details | Path: id |
| GET | /order-success |
Order success page | - |
| POST | /create-address |
Add new address | { addressFields } |
| GET | /checkout |
Checkout page | - |
| POST | /update-order-status/:id/:status (Admin) |
Update order status | Path: id, status |
| Method | Endpoint | Description | Body / Params |
|---|---|---|---|
| GET | /admin/dashboard |
Admin dashboard overview | - |
| GET | /admin/users-list |
List all users | - |
| POST | /admin/block-user/:id |
Block/Unblock user | Path: id |
| GET | /admin/products-list |
List all products | - |
| GET | /admin/products/edit/:id |
Edit product page | Path: id |
| POST | /admin/edit-product/:id |
Edit product details | Same as product creation body |
| POST | /admin/add-product |
Add new product | { name, brand, price, description, images[] } |
| POST | /admin/products/delete/:id |
Delete product | Path: id |
| GET | /admin/orders-list |
List all orders | - |
| GET | /admin/orders/:id |
Order details page | Path: id |
| GET | /admin/add-product |
Add product page | - |
Note: Protected routes require authentication headers:
If you like this project, please β star the repo!



