Spaces:
Sleeping
Sleeping
# Demo Mode Instructions | |
This document provides instructions for using the demo mode feature that bypasses customer authentication for demonstration purposes. | |
## Overview | |
Demo mode allows seamless access to the customer interface without requiring phone authentication. When enabled, accessing `/customer` will automatically redirect to the menu page with pre-configured demo credentials. | |
## Features | |
- **Automatic Redirect**: Visiting `/customer` automatically redirects to the menu with demo credentials | |
- **Demo Customer**: Uses hardcoded customer ID (999999) with username "Demo Customer" | |
- **Demo Indicator**: Shows "🎭 DEMO MODE ACTIVE" badge in the menu header | |
- **Preserved Functionality**: All menu features work normally (ordering, cart, etc.) | |
- **Easy Toggle**: Simple configuration flag to enable/disable | |
## How to Enable Demo Mode | |
### 1. Frontend Configuration | |
Edit `frontend/src/config/demoConfig.js`: | |
```javascript | |
export const DEMO_CONFIG = { | |
ENABLED: true, // Set to true to enable demo mode | |
// ... rest of config | |
}; | |
``` | |
### 2. Backend Configuration | |
Edit `app/routers/customer.py`: | |
```python | |
DEMO_MODE_ENABLED = True # Set to True to enable demo mode | |
``` | |
## How to Disable Demo Mode | |
### 1. Frontend Configuration | |
Edit `frontend/src/config/demoConfig.js`: | |
```javascript | |
export const DEMO_CONFIG = { | |
ENABLED: false, // Set to false to disable demo mode | |
// ... rest of config | |
}; | |
``` | |
### 2. Backend Configuration | |
Edit `app/routers/customer.py`: | |
```python | |
DEMO_MODE_ENABLED = False # Set to False to disable demo mode | |
``` | |
## Demo Credentials | |
When demo mode is active, the following credentials are used: | |
- **Customer ID**: 999999 | |
- **Username**: Demo Customer | |
- **Phone**: +91-DEMO-USER | |
- **Table Number**: 1 | |
- **Unique ID**: DEMO-SESSION-ID | |
- **Visit Count**: 5 (shows as returning customer) | |
## Usage Instructions | |
### For Demos | |
1. **Enable demo mode** using the configuration above | |
2. **Start the application** (both frontend and backend) | |
3. **Navigate to** `http://localhost:3000/customer` | |
4. **Automatic redirect** to menu page with demo credentials | |
5. **Demo indicator** will be visible in the header | |
6. **Use normally** - all features work as expected | |
### After Demo | |
1. **Disable demo mode** using the configuration above | |
2. **Restart the application** to apply changes | |
3. **Normal authentication** will be required again | |
## Technical Details | |
### Files Modified | |
- `frontend/src/config/demoConfig.js` - Demo configuration | |
- `frontend/src/pages/customer/Login.js` - Auto-redirect logic | |
- `frontend/src/pages/customer/components/HeroBanner.js` - Demo indicator | |
- `frontend/src/services/api.js` - Demo login API | |
- `app/routers/customer.py` - Demo login endpoint | |
### API Endpoint | |
- **POST** `/customer/api/demo-login` | |
- Creates or returns demo customer with ID 999999 | |
- Only works when `DEMO_MODE_ENABLED = True` | |
### Security Notes | |
- Demo mode should **NEVER** be enabled in production | |
- Demo customer ID (999999) is designed to avoid conflicts | |
- All demo data is clearly marked and identifiable | |
- Easy to clean up demo data if needed | |
## Troubleshooting | |
### Demo Mode Not Working | |
1. Check both frontend and backend configuration flags | |
2. Restart both frontend and backend servers | |
3. Clear browser cache and localStorage | |
4. Check browser console for errors | |
### Demo Customer Not Created | |
1. Ensure backend demo mode is enabled | |
2. Check database connectivity | |
3. Verify hotel/database selection is working | |
4. Check backend logs for errors | |
### Normal Authentication Still Required | |
1. Verify frontend demo mode is enabled | |
2. Check that `isDemoModeEnabled()` returns true | |
3. Restart frontend development server | |
4. Clear browser cache | |
## Reverting Changes | |
To completely remove demo mode functionality: | |
1. Delete `frontend/src/config/demoConfig.js` | |
2. Remove demo imports from Login.js and HeroBanner.js | |
3. Remove demo login endpoint from customer.py | |
4. Remove demo login method from api.js | |
5. Restart both servers | |
This ensures a clean codebase without any demo-related code. | |