Skip to content

feat: Export & Backup — collection data portability #98

@SimplicityGuy

Description

@SimplicityGuy

Summary

Enable users to export their collection, wantlist, and gap analysis results in portable formats (CSV, JSON, PDF) for offline use, sharing, and backup. Optionally support importing collections from other platforms.

Motivation

Currently all user data lives inside the platform with no way to extract it. Data portability is both a user trust feature and a practical need — users may want to:

  • Share gap analysis results with friends or record stores
  • Back up their collection data
  • Migrate from other platforms (MusicBrainz, Rate Your Music, Discogs CSV exports)
  • Use collection data in spreadsheets or other tools

Proposed Endpoints

GET /api/export/collection?format=csv|json
GET /api/export/wantlist?format=csv|json
GET /api/export/gaps/{type}/{id}?format=csv|json
POST /api/import/collection  (multipart file upload)

Export Formats

Format Use Case
CSV Spreadsheets, record store shopping lists
JSON Developer integrations, backup/restore
PDF Printable gap analysis reports (stretch goal)

Implementation Notes

  • Leverage existing /api/user/collection, /api/user/wantlist, and /api/collection/gaps/* query infrastructure
  • Stream large exports to avoid memory pressure
  • Rate limit exports (e.g., 5/hour) to prevent abuse
  • For imports: parse Discogs CSV export format, match release IDs, create COLLECTED relationships

Complements

Acceptance Criteria

  • Collection and wantlist exportable as CSV and JSON
  • Gap analysis results exportable as CSV and JSON
  • Exports include release metadata (title, artist, year, formats, label)
  • Streaming response for large collections
  • Rate limiting on export endpoints
  • Import endpoint accepts Discogs CSV export format (stretch)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions