Skip to content

Implement CDN for Media Files with S3/R2 Integration #48

Description

@Techhackontime999

Description

Move user uploads (avatars, cover photos, post attachments, resumes) from local storage to a cloud CDN (AWS S3 or Cloudflare R2) for better performance, reliability, and scalability.

Requirements

  • Configure Django storages for S3/R2 backend
  • Migrate existing local media files to cloud storage
  • Signed URLs for private files (resumes, chat attachments)
  • Public URLs for avatars and post images
  • Image optimization on upload (resize avatars to 400x400, compress post images)
  • CDN caching headers (Cache-Control)
  • Fallback to local storage if CDN is unavailable
  • Management command to migrate existing files
  • Environment variable configuration for bucket/keys

Files to Create/Modify

  • linkup/professional_network/settings/base.py - Django storages S3 configuration
  • linkup/core/media_storage.py - Custom storage backend with CDN support
  • linkup/core/validators.py - Update file validators for cloud storage
  • linkup/scripts/migrate_media_to_s3.py - Migration script

equirements.txt - Add django-storages, �oto3

  • .env.example - Add S3 configuration variables

Acceptance Criteria

  • Files upload to cloud storage
  • Avatars and images served from CDN
  • Private files use signed URLs with expiration
  • Existing files are migrated
  • Local fallback works if CDN is down

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    advancedAdvanced levelbackendBackend/API workenhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions