Skip to content

Story 2: Project screenshot upload via Cloudinary #1231

Description

@jeromehardaway

Epic: #1155
Story Points: 2
Priority: High
Dependencies: Story 1

User Story

As a veteran adding a project
I want to upload a screenshot
So that my project card is visual and recruiter-ready

Acceptance Criteria

  • Reuse the existing signed-upload flow (src/pages/api/upload/signature.ts + src/pages/api/upload/image.ts) — do not add a new upload mechanism
  • Upload to a dedicated Cloudinary folder (e.g. portfolio-projects/)
  • Validate file type (image only) and size before upload
  • Persist the returned secure URL to Project.imageUrl
  • Graceful error + retry on failure (no hung spinner)

Technical Notes

  • Use src/lib/cloudinary*.ts helpers for URL handling
  • Request a signature from the API, then upload direct-to-Cloudinary

Definition of Done

  • Image uploads and renders on the project card
  • Upload failure surfaces a clear message
  • typecheck / lint / test pass; reviewed and merged

Metadata

Metadata

Assignees

No one assigned

    Labels

    FeatureenhancementintermediateRequires moderate codebase familiarity; multi-file or design judgment

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions