Skip to content

Feature Request: Public Song Comments, Reactions & Timestamped Notes (Parse-backed and realm too) #319

Description

@YBTopaz8

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

Metadata

Metadata

Labels

No labels
No labels

Projects

Status
To triage

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions