project-standalo-sonic-cloud/.workflow/versions/v001/implementation_checklist.md

4.9 KiB

Implementation Checklist

Generated: 2025-12-18T15:56:52

Components

  • [] AudioPlayer (component_audio_player)
    • [] prop: currentSong: Song
    • [] prop: queue: array[Song]
    • [] prop: autoplay: boolean
    • [⚠️] event: onPlay
    • [⚠️] event: onPause
    • [⚠️] event: onSeek
    • [⚠️] event: onVolumeChange
    • [⚠️] event: onNext
    • [⚠️] event: onPrevious
    • [⚠️] event: onShuffle
    • [⚠️] event: onRepeat
  • [] PlayerControls (component_player_controls)
    • [] prop: isPlaying: boolean
    • [] prop: currentTime: number
    • [] prop: duration: number
    • [⚠️] event: onPlay
    • [⚠️] event: onPause
    • [⚠️] event: onSeek
  • [] SongCard (component_song_card)
    • [] prop: song: Song
    • [] prop: showArtist: boolean
    • [] prop: showAlbum: boolean
    • [] event: onPlay
    • [⚠️] event: onAddToPlaylist
  • [] AlbumCard (component_album_card)
    • [] prop: album: Album
    • [] prop: showArtist: boolean
    • [] event: onClick
  • [] ArtistCard (component_artist_card)
    • [] prop: artist: Artist
    • [] event: onClick
  • [] PlaylistCard (component_playlist_card)
    • [] prop: playlist: Playlist
    • [] event: onClick
  • [] UploadForm (component_upload_form)
    • [] prop: albums: array[Album]
    • [] prop: genres: array[Genre]
    • [⚠️] event: onUpload
    • [⚠️] event: onCancel
  • [] WaveformDisplay (component_waveform_display)
    • [] prop: audioUrl: string
    • [] prop: waveformData: array[number]
    • [] prop: currentTime: number
    • [] event: onSeek
  • [] GenreBadge (component_genre_badge)
    • [] prop: genre: Genre
    • [] prop: clickable: boolean
    • [] event: onClick
  • [] TrackList (component_track_list)
    • [] prop: songs: array[Song]
    • [] prop: showTrackNumber: boolean
    • [] prop: reorderable: boolean
    • [⚠️] event: onPlay
    • [⚠️] event: onReorder
  • [] ArtistHeader (component_artist_header)
    • [] prop: artist: Artist
  • [] AlbumHeader (component_album_header)
    • [] prop: album: Album
    • [] prop: artist: Artist
    • [] event: onPlayAll
  • [] PlaylistHeader (component_playlist_header)
    • [] prop: playlist: Playlist
    • [] prop: isOwner: boolean
    • [] event: onPlayAll
    • [] event: onEdit
    • [] event: onDelete
  • [] SocialLinks (component_social_links)
    • [] prop: links: object
  • [] AuthForm (component_auth_form)
    • [] prop: mode: enum[login, register, forgot]
    • [] event: onSubmit
  • [] SearchBar (component_search_bar)
    • [] prop: placeholder: string
    • [] event: onSearch
  • [] SearchResults (component_search_results)
    • [] prop: results: object
  • [⚠️] CreatePlaylistModal (component_create_playlist_modal)
    • [] prop: isOpen: boolean
    • [⚠️] event: onCreate
    • [] event: onClose
  • [] ProfileForm (component_profile_form)
    • [] prop: user: User
    • [⚠️] event: onSave
  • [] AvatarUpload (component_avatar_upload)
    • [] prop: currentAvatarUrl: string
    • [] event: onUpload
  • [] SectionHeader (component_section_header)
    • [] prop: title: string
    • [] prop: actionLabel: string
    • [⚠️] event: onActionClick
  • [] GenreHeader (component_genre_header)
    • [] prop: genre: Genre

API Endpoints

  • [] POST /api/auth/register
  • [] POST /api/auth/login
  • [] POST /api/auth/forgot-password
  • [] POST /api/auth/reset-password
  • [] GET /api/users/me
  • [] PUT /api/users/me
  • [] POST /api/artists
  • [] GET /api/artists/:id
  • [] PUT /api/artists/:id
  • [] GET /api/artists/:id/songs
  • [] GET /api/artists/:id/albums
  • [] POST /api/songs/upload
  • [] GET /api/songs/:id
  • [] PUT /api/songs/:id
  • [] DELETE /api/songs/:id
  • [] POST /api/songs/:id/play
  • [] POST /api/albums
  • [] GET /api/albums/:id
  • [] PUT /api/albums/:id
  • [] DELETE /api/albums/:id
  • [] POST /api/playlists
  • [] GET /api/playlists
  • [] GET /api/playlists/:id
  • [] PUT /api/playlists/:id
  • [] DELETE /api/playlists/:id
  • [] POST /api/playlists/:id/songs
  • [⚠️] DELETE /api/playlists/:playlistId/songs/:songId
  • [] PUT /api/playlists/:id/reorder
  • [] GET /api/discover/trending
  • [] GET /api/discover/new-releases
  • [] GET /api/discover/genres
  • [] GET /api/discover/genres/:slug
  • [] GET /api/search
  • [] POST /api/labels
  • [] GET /api/labels/:id/artists

Data Models

  • [⚠️] User (model_user)
  • [⚠️] Artist (model_artist)
  • [⚠️] Label (model_label)
  • [⚠️] Genre (model_genre)
  • [⚠️] Album (model_album)
  • [⚠️] Song (model_song)
  • [⚠️] SongGenre (model_song_genre)
  • [⚠️] Playlist (model_playlist)
  • [⚠️] PlaylistSong (model_playlist_song)