Update README and documentation; refactor frontend components for improved structure and resilience
This commit is contained in:
85
frontend/RESILIENCE.md
Normal file
85
frontend/RESILIENCE.md
Normal file
@@ -0,0 +1,85 @@
|
||||
# Frontend Resilience Features
|
||||
|
||||
The LabFusion frontend is designed to work gracefully even when backend services are unavailable.
|
||||
|
||||
## Features
|
||||
|
||||
### 1. Service Status Monitoring
|
||||
- **Real-time Health Checks**: Monitors all backend services every 30 seconds
|
||||
- **Service Status Banner**: Shows current service availability status
|
||||
- **Automatic Retry**: Attempts to reconnect when services come back online
|
||||
|
||||
### 2. Graceful Degradation
|
||||
- **Fallback Data**: Uses sample data when services are unavailable
|
||||
- **Error Handling**: Displays helpful error messages instead of crashes
|
||||
- **Loading States**: Shows loading indicators during data fetching
|
||||
|
||||
### 3. Offline Mode
|
||||
- **Offline Banner**: Clear indication when all services are down
|
||||
- **Instructions**: Step-by-step guide to start backend services
|
||||
- **Retry Button**: Easy way to attempt reconnection
|
||||
|
||||
### 4. Error Recovery
|
||||
- **Timeout Handling**: 5-second timeout for all API calls
|
||||
- **Connection Error Detection**: Distinguishes between different error types
|
||||
- **User-Friendly Messages**: Clear explanations of what's happening
|
||||
|
||||
## Service Status States
|
||||
|
||||
### Online
|
||||
- All services are running normally
|
||||
- No status banner shown
|
||||
- Full functionality available
|
||||
|
||||
### Partial
|
||||
- Some services are unavailable
|
||||
- Warning banner with service details
|
||||
- Limited functionality with fallback data
|
||||
|
||||
### Offline
|
||||
- All backend services are down
|
||||
- Offline mode banner with instructions
|
||||
- Frontend runs with sample data only
|
||||
|
||||
## API Configuration
|
||||
|
||||
The frontend automatically detects service availability:
|
||||
|
||||
```javascript
|
||||
// Service URLs (configurable via environment variables)
|
||||
API_GATEWAY_URL=http://localhost:8080
|
||||
SERVICE_ADAPTERS_URL=http://localhost:8000
|
||||
API_DOCS_URL=http://localhost:8083
|
||||
```
|
||||
|
||||
## Development
|
||||
|
||||
### Running Frontend Only
|
||||
```bash
|
||||
cd frontend
|
||||
npm install
|
||||
npm start
|
||||
```
|
||||
|
||||
The frontend will start and show offline mode until backend services are started.
|
||||
|
||||
### Testing Resilience
|
||||
1. Start frontend: `npm start`
|
||||
2. Observe offline mode banner
|
||||
3. Start backend: `docker-compose up -d`
|
||||
4. Watch automatic reconnection
|
||||
5. Stop backend services to test fallback
|
||||
|
||||
## Error Messages
|
||||
|
||||
- **Connection Timeout**: "Request timeout - service may be unavailable"
|
||||
- **Service Error**: "Service error: [HTTP status]"
|
||||
- **Service Unavailable**: "Service unavailable - check if backend is running"
|
||||
- **Unknown Error**: "Unknown error occurred"
|
||||
|
||||
## Benefits
|
||||
|
||||
- **Developer Experience**: Frontend can be developed independently
|
||||
- **User Experience**: Clear feedback about service status
|
||||
- **Debugging**: Easy to identify which services are having issues
|
||||
- **Reliability**: App doesn't crash when services are down
|
||||
Reference in New Issue
Block a user