feat: add Sentry, Cloudflare R2, and CloudFlare CDN integrations
Production quick wins for improved observability and scalability: Sentry Error Tracking: - Add sentry-sdk[fastapi] dependency - Initialize Sentry in main.py with FastAPI/SQLAlchemy integrations - Add Celery integration for background task error tracking - Feature-flagged via SENTRY_DSN (disabled when empty) Cloudflare R2 Storage: - Add boto3 dependency for S3-compatible API - Create storage_service.py with StorageBackend abstraction - LocalStorageBackend for development (default) - R2StorageBackend for production cloud storage - Feature-flagged via STORAGE_BACKEND setting CloudFlare CDN/Proxy: - Create middleware/cloudflare.py for CF header handling - Extract real client IP from CF-Connecting-IP - Support CF-IPCountry for geo features - Feature-flagged via CLOUDFLARE_ENABLED setting Documentation: - Add docs/deployment/cloudflare.md setup guide - Update infrastructure.md with dev vs prod requirements - Add enterprise upgrade checklist for scaling beyond 1000 users - Update installation.md with new environment variables All features are optional and disabled by default for development. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -236,6 +236,31 @@ pytest -m integration
|
||||
| `FLOWER_URL` | Flower dashboard URL | `http://localhost:5555` | ❌ |
|
||||
| `FLOWER_PASSWORD` | Flower authentication password | `changeme` | ❌ |
|
||||
|
||||
### Sentry Error Tracking
|
||||
|
||||
| Variable | Description | Default | Required |
|
||||
|----------|-------------|---------|----------|
|
||||
| `SENTRY_DSN` | Sentry DSN (leave empty to disable) | - | ❌ |
|
||||
| `SENTRY_ENVIRONMENT` | Environment name | `development` | ❌ |
|
||||
| `SENTRY_TRACES_SAMPLE_RATE` | Performance tracing rate (0.0-1.0) | `0.1` | ❌ |
|
||||
|
||||
### Cloudflare R2 Storage
|
||||
|
||||
| Variable | Description | Default | Required |
|
||||
|----------|-------------|---------|----------|
|
||||
| `STORAGE_BACKEND` | Storage backend (`local` or `r2`) | `local` | ❌ |
|
||||
| `R2_ACCOUNT_ID` | Cloudflare account ID | - | ❌ (if r2) |
|
||||
| `R2_ACCESS_KEY_ID` | R2 access key | - | ❌ (if r2) |
|
||||
| `R2_SECRET_ACCESS_KEY` | R2 secret key | - | ❌ (if r2) |
|
||||
| `R2_BUCKET_NAME` | R2 bucket name | `wizamart-media` | ❌ |
|
||||
| `R2_PUBLIC_URL` | Custom public URL for R2 | - | ❌ |
|
||||
|
||||
### CloudFlare CDN
|
||||
|
||||
| Variable | Description | Default | Required |
|
||||
|----------|-------------|---------|----------|
|
||||
| `CLOUDFLARE_ENABLED` | Enable CloudFlare header handling | `false` | ❌ |
|
||||
|
||||
### Stripe Billing
|
||||
|
||||
| Variable | Description | Default | Required |
|
||||
|
||||
Reference in New Issue
Block a user