LifeRPG_v2.0/docs/DEPLOYMENT_GUIDE.md
TLimoges33 2b961611fd
🚀 Major Enhancement: Complete AI-Powered LifeRPG Platform with Git LFS
 New Features:
- AI-powered habit creation with natural language processing
- HuggingFace transformers integration for sentiment analysis (tracked via Git LFS)
- Advanced predictive analytics and behavioral insights
- Voice & image input capabilities for hands-free habit tracking
- Real-time notifications and community features
- Plugin system with extensible architecture

🔧 Technical Improvements:
- Comprehensive FastAPI backend with 30+ endpoints
- React frontend with PWA capabilities
- Advanced authentication with 2FA support
- RBAC authorization system
- Comprehensive security features (CSRF, rate limiting, audit logging)
- Database migrations and health monitoring
- Docker containerization support
- Git LFS configured for large AI model files (2+ GB)

📚 Documentation & DevOps:
- Complete deployment guides for multiple platforms
- Professional README with feature highlights
- GitHub Actions CI/CD workflows
- Comprehensive API documentation
- Security audit roadmap and compliance framework
- Setup scripts for development environment

🧪 Testing & Quality:
- Comprehensive test suite with 20+ test modules
- Setup verification scripts
- Working development environment with both backend and frontend
- Health checks and monitoring systems

🌟 Ready for:
- Portfolio showcasing
- Community contributions
- Production deployment
- Professional presentation
2025-09-28 21:29:19 +00:00

542 lines
11 KiB
Markdown

# LifeRPG Production Deployment Guide
This comprehensive guide covers deploying LifeRPG to production environments with security, scalability, and cost optimization in mind.
## 🎯 Deployment Options Overview
### Free Tier Options (Perfect for Students)
1. **Frontend**: Vercel/Netlify (Free tier)
2. **Backend**: Railway/Render (Free tier with limitations)
3. **Database**: SQLite (file-based, included)
4. **Monitoring**: Built-in health checks
### Low-Cost Options ($5-15/month)
1. **VPS**: DigitalOcean Droplet, Linode, Vultr
2. **Platform**: Railway Pro, Render Pro
3. **Container**: Docker on cloud VPS
### Production-Ready Options ($20-50/month)
1. **Cloud**: AWS/GCP/Azure with proper scaling
2. **Database**: Managed PostgreSQL
3. **CDN**: CloudFlare Pro
4. **Monitoring**: External monitoring services
---
## 🚀 Quick Start: Free Deployment
### Option 1: Vercel + Railway (Recommended for Students)
#### Step 1: Prepare Repository
```bash
# Ensure all code is committed and pushed
git add .
git commit -m "Production deployment preparation"
git push origin master
```
#### Step 2: Deploy Frontend to Vercel
1. Go to [vercel.com](https://vercel.com)
2. Connect your GitHub repository
3. Configure build settings:
```
Framework: Create React App
Root Directory: modern/frontend
Build Command: npm run build
Output Directory: build
```
4. Add environment variables:
```
REACT_APP_API_URL=https://your-backend.railway.app
REACT_APP_ENVIRONMENT=production
```
#### Step 3: Deploy Backend to Railway
1. Go to [railway.app](https://railway.app)
2. Create new project from GitHub
3. Configure:
```
Root Directory: modern/backend
Start Command: uvicorn app:app --host 0.0.0.0 --port $PORT
```
4. Add environment variables:
```
ENVIRONMENT=production
SECRET_KEY=your-secure-secret-key
DATABASE_URL=sqlite:///production.db
CORS_ORIGINS=["https://your-app.vercel.app"]
```
### Option 2: Netlify + Render
#### Frontend (Netlify)
1. Go to [netlify.com](https://netlify.com)
2. Connect GitHub repository
3. Build settings:
```
Publish directory: modern/frontend/build
Build command: cd modern/frontend && npm install && npm run build
```
#### Backend (Render)
1. Go to [render.com](https://render.com)
2. Create Web Service
3. Settings:
```
Root Directory: modern/backend
Build Command: pip install -r requirements.txt
Start Command: uvicorn app:app --host 0.0.0.0 --port $PORT
```
---
## 🐳 Docker Deployment
### Complete Docker Setup
#### 1. Production Dockerfile (Backend)
```dockerfile
# modern/backend/Dockerfile.prod
FROM python:3.12-slim
WORKDIR /app
# Install system dependencies
RUN apt-get update && apt-get install -y \
gcc \
&& rm -rf /var/lib/apt/lists/*
# Copy requirements first for better caching
COPY requirements.txt requirements_ai.txt ./
RUN pip install --no-cache-dir -r requirements_ai.txt
# Copy application code
COPY . .
# Create non-root user
RUN useradd -m -r appuser && chown appuser:appuser /app
USER appuser
# Health check
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8000/api/v1/health/ || exit 1
EXPOSE 8000
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]
```
#### 2. Production docker-compose.yml
```yaml
version: "3.8"
services:
backend:
build:
context: ./modern/backend
dockerfile: Dockerfile.prod
ports:
- "8000:8000"
environment:
- ENVIRONMENT=production
- DATABASE_URL=sqlite:///data/production.db
- SECRET_KEY=${SECRET_KEY}
volumes:
- ./data:/app/data
- ./ai_models:/app/ai_models
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/api/v1/health/"]
interval: 30s
timeout: 10s
retries: 3
frontend:
build:
context: ./modern/frontend
dockerfile: Dockerfile
ports:
- "3000:3000"
environment:
- REACT_APP_API_URL=http://localhost:8000
depends_on:
- backend
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- frontend
- backend
restart: unless-stopped
```
#### 3. Nginx Configuration
```nginx
# nginx.conf
events {
worker_connections 1024;
}
http {
upstream backend {
server backend:8000;
}
upstream frontend {
server frontend:3000;
}
server {
listen 80;
server_name your-domain.com;
# Redirect to HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/key.pem;
# Frontend
location / {
proxy_pass http://frontend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# Backend API
location /api {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
# Health checks
location /health {
proxy_pass http://backend;
}
}
}
```
---
## ☁️ VPS Deployment (DigitalOcean/Linode)
### 1. Server Setup
```bash
# Create and connect to VPS
ssh root@your-server-ip
# Update system
apt update && apt upgrade -y
# Install Docker
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl start docker
systemctl enable docker
# Install Docker Compose
pip3 install docker-compose
# Install other tools
apt install -y git nginx certbot python3-certbot-nginx
```
### 2. Deploy Application
```bash
# Clone repository
git clone https://github.com/yourusername/LifeRPG.git
cd LifeRPG
# Create environment file
cat > .env << EOF
SECRET_KEY=$(openssl rand -hex 32)
ENVIRONMENT=production
DATABASE_URL=sqlite:///data/production.db
REACT_APP_API_URL=https://your-domain.com
EOF
# Create data directory
mkdir -p data ai_models
# Start services
docker-compose -f docker-compose.prod.yml up -d
```
### 3. SSL Setup with Let's Encrypt
```bash
# Get SSL certificate
certbot --nginx -d your-domain.com
# Auto-renewal
crontab -e
# Add: 0 12 * * * /usr/bin/certbot renew --quiet
```
---
## 📊 Monitoring and Maintenance
### Health Monitoring Script
```bash
#!/bin/bash
# monitoring/health-check.sh
BACKEND_URL="https://your-domain.com"
SLACK_WEBHOOK="your-slack-webhook-url"
# Check backend health
if ! curl -f "$BACKEND_URL/api/v1/health/" > /dev/null 2>&1; then
echo "Backend health check failed"
curl -X POST -H 'Content-type: application/json' \
--data '{"text":"🚨 LifeRPG Backend is down!"}' \
$SLACK_WEBHOOK
fi
# Check disk space
DISK_USAGE=$(df / | grep -vE '^Filesystem' | awk '{print $5}' | sed 's/%//g')
if [ $DISK_USAGE -gt 80 ]; then
echo "High disk usage: ${DISK_USAGE}%"
fi
```
### Backup Script
```bash
#!/bin/bash
# scripts/backup.sh
BACKUP_DIR="/backups"
DB_FILE="data/production.db"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Backup database
cp $DB_FILE "$BACKUP_DIR/liferpg_db_$DATE.db"
# Backup user uploads (if any)
tar -czf "$BACKUP_DIR/uploads_$DATE.tar.gz" uploads/
# Keep only last 30 days of backups
find $BACKUP_DIR -name "*.db" -mtime +30 -delete
find $BACKUP_DIR -name "*.tar.gz" -mtime +30 -delete
echo "Backup completed: $DATE"
```
---
## 🔒 Security Checklist
### Essential Security Measures
#### 1. Environment Security
- [ ] Strong SECRET_KEY in production
- [ ] Environment variables for all secrets
- [ ] No hardcoded credentials in code
- [ ] HTTPS enabled with valid certificates
- [ ] CORS properly configured
#### 2. Application Security
- [ ] Input validation on all endpoints
- [ ] Rate limiting implemented
- [ ] Authentication required for sensitive operations
- [ ] SQL injection prevention (using parameterized queries)
- [ ] XSS prevention in frontend
#### 3. Server Security
- [ ] Firewall configured (only necessary ports open)
- [ ] SSH key authentication (disable password auth)
- [ ] Regular system updates
- [ ] Non-root user for application
- [ ] Log monitoring set up
#### 4. Database Security
- [ ] Database file permissions restricted
- [ ] Regular backups
- [ ] Backup encryption for sensitive data
---
## 📈 Performance Optimization
### Backend Optimization
1. **Enable Compression**
```python
from fastapi.middleware.gzip import GZipMiddleware
app.add_middleware(GZipMiddleware, minimum_size=1000)
```
2. **Response Caching**
```python
from fastapi_cache import FastAPICache
from fastapi_cache.backends.redis import RedisBackend
```
3. **AI Model Optimization**
- Pre-load models on startup
- Implement model caching
- Use quantized models for lower memory usage
### Frontend Optimization
1. **Code Splitting**
```javascript
const LazyComponent = React.lazy(() => import("./Component"));
```
2. **Service Worker for Caching**
3. **Image Optimization**
4. **Bundle Analysis**
---
## 💰 Cost Optimization
### Free Tier Maximization
- **Vercel**: 100GB bandwidth, unlimited sites
- **Railway**: 500 hours/month, $5 credit
- **Render**: 750 hours/month
- **GitHub**: Free hosting for static sites
### Budget Planning ($10-20/month)
- Domain: $12/year
- VPS: $5-10/month
- SSL: Free (Let's Encrypt)
- CDN: Free (CloudFlare)
### Scaling Strategy
1. **Start Free**: Use free tiers
2. **Grow Smart**: Upgrade one service at a time
3. **Monitor Usage**: Use built-in analytics
4. **Optimize First**: Before upgrading resources
---
## 🚨 Troubleshooting
### Common Issues
#### Build Failures
```bash
# Clear caches
npm cache clean --force
pip cache purge
# Rebuild containers
docker-compose down
docker-compose build --no-cache
```
#### Memory Issues
```bash
# Check memory usage
free -h
docker stats
# Restart services
docker-compose restart
```
#### SSL Certificate Issues
```bash
# Renew certificates
certbot renew --dry-run
certbot renew
# Check certificate status
certbot certificates
```
---
## 📞 Support and Maintenance
### Regular Maintenance Tasks
- [ ] Weekly: Check application logs
- [ ] Weekly: Verify backups
- [ ] Monthly: Update dependencies
- [ ] Monthly: Review security logs
- [ ] Quarterly: Performance review
- [ ] Quarterly: Cost optimization review
### Emergency Response Plan
1. **Monitor alerts** (health checks, error rates)
2. **Incident response** (restart services, check logs)
3. **Communication** (user notifications if needed)
4. **Post-incident** (root cause analysis, prevention)
---
## 🎓 Student-Specific Tips
### Academic Projects
- Use `.edu` domain for free services
- GitHub Student Pack benefits
- AWS/GCP/Azure education credits
- Free SSL certificates through GitHub Pages
### Portfolio Enhancement
- Custom domain for professionalism
- Performance metrics documentation
- User feedback and testimonials
- Technical blog posts about the project
### Learning Opportunities
- Infrastructure as Code (Terraform)
- CI/CD pipeline improvements
- Monitoring and observability
- Security best practices implementation
---
This deployment guide provides multiple pathways from free student hosting to production-ready infrastructure. Choose the approach that matches your current needs and budget, with clear upgrade paths as your project grows.