Spaces:
Sleeping
Sleeping
# π€ Hugging Face Dataset Setup Guide | |
## Overview | |
This server now uses **Hugging Face Dataset** for persistent storage of device tokens instead of local files. This ensures that device data is preserved across Space restarts and provides better data management. | |
## π Quick Setup | |
### 1. Generate Hugging Face Token | |
1. Go to [Hugging Face Settings](https://huggingface.co/settings/tokens) | |
2. Click "Create new token" | |
3. Name: `houzou-notification-server` | |
4. Type: **Write** (required for dataset operations) | |
5. Copy the token | |
### 2. Configure Space Secrets | |
1. Go to your Space Settings β **Secrets and variables** | |
2. Add these secrets: | |
``` | |
HF_TOKEN = hf_your_token_here | |
HF_DATASET_ID = Detomo/houzou-devices (optional, defaults to this) | |
``` | |
### 3. Required Secrets Summary | |
Your Space needs these secrets: | |
``` | |
FIREBASE_SERVICE_ACCOUNT = {your firebase config JSON} | |
HF_TOKEN = hf_your_write_token_here | |
HF_DATASET_ID = Detomo/houzou-devices (optional) | |
``` | |
## π Dataset Structure | |
The dataset will be automatically created with: | |
``` | |
datasets/Detomo/houzou-devices/ | |
βββ README.md # Dataset documentation | |
βββ devices.json # Device tokens and metadata | |
``` | |
### devices.json Format: | |
```json | |
[ | |
[ | |
"device-id-1", | |
{ | |
"token": "fcm_token_here", | |
"lastUpdated": "2024-01-01T00:00:00.000Z", | |
"platform": "iOS", | |
"appVersion": "1.0.0", | |
"registered": true | |
} | |
] | |
] | |
``` | |
## π§ Features | |
### β Automatic Dataset Management | |
- Creates dataset if it doesn't exist | |
- Handles permissions automatically | |
- Provides fallback to in-memory storage | |
### β Persistent Storage | |
- Device tokens survive Space restarts | |
- Automatic backup to HF dataset | |
- Version control for device data | |
### β Error Handling | |
- Graceful fallback if HF API is unavailable | |
- Detailed logging for troubleshooting | |
- Continues operation even if dataset access fails | |
## π Verification | |
### Check Dataset Status | |
```bash | |
curl https://your-space-url.hf.space/ | |
``` | |
Response includes: | |
```json | |
{ | |
"message": "Houzou Medical Notification Server", | |
"status": "running", | |
"hfDataset": { | |
"enabled": true, | |
"datasetId": "Detomo/houzou-devices", | |
"hasToken": true | |
}, | |
"deviceCount": 5 | |
} | |
``` | |
### View Dataset | |
1. Go to: https://huggingface.co/datasets/Detomo/houzou-devices | |
2. Check `devices.json` for your device data | |
## π Troubleshooting | |
### Dataset Not Created | |
- Verify `HF_TOKEN` has **Write** permissions | |
- Check Space logs for error messages | |
- Ensure token is valid and not expired | |
### Data Not Saving | |
- Check if HF API is responding | |
- Verify dataset permissions | |
- Server will continue with in-memory storage as fallback | |
### Common Errors | |
**403 Forbidden** | |
- Token doesn't have write permissions | |
- Token is expired or invalid | |
**404 Not Found** | |
- Dataset doesn't exist (will be auto-created) | |
- Wrong dataset ID | |
**Rate Limiting** | |
- HF API has rate limits | |
- Server will retry automatically | |
## π Migration from File Storage | |
If you're migrating from file-based storage: | |
1. **Backup existing data**: Download your current `devices.json` | |
2. **Set up HF dataset**: Follow steps above | |
3. **Deploy updated server**: The server will automatically use HF dataset | |
4. **Verify**: Check that devices are loaded correctly | |
## π Environment Variables | |
```bash | |
# Required | |
HF_TOKEN=hf_your_write_token_here | |
FIREBASE_SERVICE_ACCOUNT={"type":"service_account",...} | |
# Optional | |
HF_DATASET_ID=Detomo/houzou-devices | |
PORT=7860 | |
NODE_ENV=production | |
``` | |
## π― Benefits | |
- **β Persistent**: Data survives Space restarts | |
- **β Reliable**: Automatic fallback mechanisms | |
- **β Scalable**: No file permission issues | |
- **β Traceable**: Version history in dataset | |
- **β Secure**: Tokens stored in HF infrastructure | |
## π Links | |
- [Hugging Face Hub API](https://huggingface.co/docs/hub/api) | |
- [Dataset Management](https://huggingface.co/docs/datasets/) | |
- [Access Tokens](https://huggingface.co/settings/tokens) | |
--- | |
**Ready to deploy!** Your notification server will now use HF Dataset for persistent storage. π |