Problem
Dimmer currently supports UserNote attached to a song (IList) mainly for personal annotations and search reverse-lookup.
There is no unified, cross-platform way to:
Expose public comments
React to comments
Attach clickable timestamps that trigger playback/sample events
Keep UI parity across Android & WinUI 3
This limits social/emotional interaction during listening, which is a core engagement driver.
Proposed Solution
Extend the existing UserNote concept into a first-class Song Comment system, backed by Parse Server and shared UI logic across platforms.
Data Model (Parse)
Song
{
"objectId": "...",
"title": "...",
"artist": "...",
"userNotes": [Pointer]
}
UserNote (extended)
{
"objectId": "...",
"song": Pointer,
"author": Pointer<_User>,
"text": "string",
"timestampMs": 92340, // nullable
"isPublic": true,
"reactions": {
"like": 12,
"fire": 3,
"sad": 1
},
"createdAt": "Date"
}
Notes:
timestampMs == null → general comment
Public notes act as song comments
Private notes remain personal/search-only
Functional Requirements
CRUD
Create / edit / delete own notes
Toggle isPublic
Fetch:
All public notes for a song
User’s private notes
Timestamp Interaction
Timestamp rendered as clickable UI
On click:
Seek playback to timestampMs
Fire OnSongSampleRequested(timestampMs)
Reactions
Lightweight reaction system (no separate class initially)
Atomic increment via Parse Cloud Code
UI / UX Parity (Android & WinUI 3)
Now Playing – Comments Section
Scrollable list
Timestamp badge (if present)
Reaction buttons
Live highlight when playback crosses timestamp
Fragments / Views
Android: Fragment / Compose
WinUI 3: Page / UserControl
Shared ViewModel logic (MVVM)
Parse Considerations
CLP:
Public read if isPublic == true
Write restricted to author
Index on:
song
isPublic
timestampMs
Benefits
Enables real-time emotional sharing
No third-party ToS risk (YouTube/SoundCloud)
Reuses existing UserNote system
Scales naturally with Parse
Out of Scope (for now)
Threaded replies (but to be very heavily considered)
Live typing indicators
Moderation tooling
Problem
Dimmer currently supports UserNote attached to a song (IList) mainly for personal annotations and search reverse-lookup.
There is no unified, cross-platform way to:
Expose public comments
React to comments
Attach clickable timestamps that trigger playback/sample events
Keep UI parity across Android & WinUI 3
This limits social/emotional interaction during listening, which is a core engagement driver.
Proposed Solution
Extend the existing UserNote concept into a first-class Song Comment system, backed by Parse Server and shared UI logic across platforms.
Data Model (Parse)
Song
{
"objectId": "...",
"title": "...",
"artist": "...",
"userNotes": [Pointer]
}
UserNote (extended)
{
"objectId": "...",
"song": Pointer,
"author": Pointer<_User>,
"text": "string",
"timestampMs": 92340, // nullable
"isPublic": true,
"reactions": {
"like": 12,
"fire": 3,
"sad": 1
},
"createdAt": "Date"
}
Notes:
timestampMs == null → general comment
Public notes act as song comments
Private notes remain personal/search-only
Functional Requirements
CRUD
Create / edit / delete own notes
Toggle isPublic
Fetch:
All public notes for a song
User’s private notes
Timestamp Interaction
Timestamp rendered as clickable UI
On click:
Seek playback to timestampMs
Fire OnSongSampleRequested(timestampMs)
Reactions
Lightweight reaction system (no separate class initially)
Atomic increment via Parse Cloud Code
UI / UX Parity (Android & WinUI 3)
Now Playing – Comments Section
Scrollable list
Timestamp badge (if present)
Reaction buttons
Live highlight when playback crosses timestamp
Fragments / Views
Android: Fragment / Compose
WinUI 3: Page / UserControl
Shared ViewModel logic (MVVM)
Parse Considerations
CLP:
Public read if isPublic == true
Write restricted to author
Index on:
song
isPublic
timestampMs
Benefits
Enables real-time emotional sharing
No third-party ToS risk (YouTube/SoundCloud)
Reuses existing UserNote system
Scales naturally with Parse
Out of Scope (for now)
Threaded replies (but to be very heavily considered)
Live typing indicators
Moderation tooling