Skip to content

Conversation

tomsmith8
Copy link
Collaborator

Implements custom workspace image upload with secure S3 storage and pre-signed URLs.

Features:

  • Database: Added imageS3Key field to Workspace model
  • S3 Service: Enhanced with delete, path generation, and image validation methods
  • API Endpoints:
    • POST /upload-url - Generate pre-signed upload URL (ADMIN/OWNER)
    • POST /confirm - Confirm upload and save S3 key (ADMIN/OWNER)
    • GET /image - Get pre-signed download URL (all members)
    • DELETE /image - Delete workspace image (ADMIN/OWNER)
  • Frontend:
    • WorkspaceImageUpload component with file validation and preview
    • WorkspaceAvatar component for consistent image display
    • Updated WorkspaceSwitcher to show workspace images
    • Added image upload to Settings page
  • Testing: 24 comprehensive integration tests covering auth, validation, and workflows
  • Security: Pre-signed URLs (15 min upload, 1 hour download), private S3 bucket, role-based access

Files changed:

  • prisma/schema.prisma: Added imageS3Key field
  • prisma/migrations/: New migration for workspace image support
  • src/services/s3.ts: Added deleteObject and image validation methods
  • src/app/api/workspaces/[slug]/image/: New API endpoints
  • src/components/workspace/WorkspaceImageUpload/: New upload component
  • src/components/WorkspaceSwitcher.tsx: Display workspace images
  • src/app/w/[slug]/settings/page.tsx: Integrated image upload
  • src/tests/integration/api/workspace-image.test.ts: Integration tests

Implements custom workspace image upload with secure S3 storage and pre-signed URLs.

Features:
- Database: Added imageS3Key field to Workspace model
- S3 Service: Enhanced with delete, path generation, and image validation methods
- API Endpoints:
  - POST /upload-url - Generate pre-signed upload URL (ADMIN/OWNER)
  - POST /confirm - Confirm upload and save S3 key (ADMIN/OWNER)
  - GET /image - Get pre-signed download URL (all members)
  - DELETE /image - Delete workspace image (ADMIN/OWNER)
- Frontend:
  - WorkspaceImageUpload component with file validation and preview
  - WorkspaceAvatar component for consistent image display
  - Updated WorkspaceSwitcher to show workspace images
  - Added image upload to Settings page
- Testing: 24 comprehensive integration tests covering auth, validation, and workflows
- Security: Pre-signed URLs (15 min upload, 1 hour download), private S3 bucket, role-based access

Files changed:
- prisma/schema.prisma: Added imageS3Key field
- prisma/migrations/: New migration for workspace image support
- src/services/s3.ts: Added deleteObject and image validation methods
- src/app/api/workspaces/[slug]/image/: New API endpoints
- src/components/workspace/WorkspaceImageUpload/: New upload component
- src/components/WorkspaceSwitcher.tsx: Display workspace images
- src/app/w/[slug]/settings/page.tsx: Integrated image upload
- src/__tests__/integration/api/workspace-image.test.ts: Integration tests
Copy link

vercel bot commented Oct 15, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Preview Comments Updated (UTC)
hive Ignored Ignored Oct 15, 2025 11:21am

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant