- Add direct.rfiles.online A record (DNS only, not proxied through CF)
- Add TLS-enabled Traefik router with Let's Encrypt for direct subdomain
- Add DirectUploadAPIView that accepts space slug as form field
- All uploads now go to https://direct.rfiles.online/api/upload/
- CORS allows *.rfiles.online origins
- Middleware treats 'direct' as reserved (not a shared space)
- Removes chunked upload complexity (no longer needed)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Django 5.x requires a 'default' key in STORAGES for FileField uploads.
Only 'staticfiles' was defined, causing InvalidStorageError on upload.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Django upload limit raised to 10GB
- SharedSpace max_file_size_mb default changed to 0 (unlimited)
- Server-side and client-side checks skip when limit is 0
- Upload UI shows "No file size limit"
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extracted from PKMN (personal-knowledge-management-network) into its own
repo with separate database, file storage, and Docker stack.
- files app: SharedSpace, MediaFile, PublicShare, FileAccessLog models
- portal app: Landing page, upload, file management, shared space views
- Host-based URL routing for subdomain shared spaces (*.rfiles.online)
- PWA with service worker and share target support
- Celery tasks for expired share cleanup and file processing
- Docker Compose for dev and production (Traefik + PostgreSQL + Redis)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>