hoangsonww/Moodify-Emotion-Music-App

Feature: Privacy Consent Center and Portable Data Export

Open

#30 opened on May 24, 2026

View on GitHub
 (0 comments) (0 reactions) (1 assignee)JavaScript (23 forks)auto 404
bugdocumentationenhancementgood first issuehelp wantedquestion

Repository metrics

Stars
 (80 stars)
PR merge metrics
 (PR metrics pending)

Description

Summary

Add a privacy and data portability center where users can review what Moodify stores, control consent for optional history-based personalization, and export their account data in a portable format.

Problem / Opportunity

Moodify stores mood history, listening history, and saved recommendations for authenticated users. The app already includes profile deletion and list-clearing controls, but users do not have a single privacy surface that explains stored data, separates optional personalization consent from required account data, or lets them export their own data.

Because Moodify works with sensitive emotional signals, a transparent consent and export workflow is a substantial product capability, not a cosmetic settings change.

Proposed Feature

Build a privacy center for web and mobile that includes:

  • A data inventory explaining account fields, mood history, listening history, saved recommendations, and recommendation feedback if implemented later.
  • Per-user consent toggles for optional personalization inputs, such as using mood history in recommendation requests or storing listening-history events.
  • A data export flow that produces a JSON file containing profile metadata, mood history, listening history, saved recommendations, and consent settings.
  • A server-side export endpoint that requires authentication and returns only the current user's data.
  • Clear status states for export generation, errors, and empty histories.
  • Audit-friendly timestamps for consent changes.

Scope

  • Backend consent fields and export serialization.
  • Authenticated API endpoints for reading/updating privacy preferences and downloading/exporting user data.
  • Web Profile/Settings privacy center UI.
  • Mobile Settings privacy center UI.
  • Recommendation request behavior that respects personalization consent.
  • Tests for authorization, export schema, consent persistence, and personalization opt-out behavior.

Acceptance Criteria

  • Authenticated users can view a privacy center that summarizes stored Moodify data categories.
  • Users can opt out of mood-history personalization without deleting existing mood history.
  • Users can opt out of listening-history storage so future track opens are not persisted.
  • Consent changes are persisted with an updated timestamp.
  • Users can export their data as JSON from an authenticated endpoint.
  • The export includes profile metadata, mood history, listening history, saved recommendations, and consent settings.
  • Export endpoints reject unauthenticated requests and never allow exporting another user's data.
  • Web and mobile clients honor opt-out settings when saving history or passing history into recommendations.
  • Tests cover export authorization, export shape, consent updates, and client opt-out behavior.

Non-Goals

  • Legal compliance certification or policy rewriting.
  • Admin access to user exports.
  • Bulk export for all users.
  • Replacing the existing account deletion workflow.

Dependencies / Risks

  • Needs a stable export schema so future clients or tools can consume the data reliably.
  • Consent behavior must be enforced client-side and server-side where possible, not only hidden in UI.
  • Existing users will need default consent values that preserve current behavior until changed.

Open Questions

  • Should export generation be synchronous JSON for the current data size, or an async job for future scalability?
  • Should exported recommendation records include full track metadata or only normalized identifiers and display fields?
  • Should consent defaults differ between new users and existing users?

Contributor guide