Feature: Privacy Consent Center and Portable Data Export
#30 opened on May 24, 2026
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?