{ "project": { "name": "sonic-cloud", "version": "0.1.0", "created_at": "2025-12-18T14:32:39.275839", "description": "Music platform for musicians to upload songs" }, "state": { "current_phase": "DESIGN_PHASE", "approval_status": { "manifest_approved": false, "approved_by": null, "approved_at": null }, "revision_history": [ { "action": "PROJECT_INITIALIZED", "timestamp": "2025-12-18T14:32:39.275844", "details": "Project sonic-cloud created" }, { "action": "DESIGN_DOCUMENT_CREATED", "timestamp": "2025-12-18T15:10:00", "details": "Complete design document with 91 entities created" }, { "action": "DESIGN_DOCUMENT_UPDATED", "timestamp": "2025-12-20T22:10:00", "details": "Added Phase 1 critical features: Enhanced authentication, advanced audio playback, file upload system, search implementation" } ] }, "entities": { "database_tables": [ { "id": "model_user", "name": "User", "table_name": "users", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_artist", "name": "Artist", "table_name": "artists", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_label", "name": "Label", "table_name": "labels", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_genre", "name": "Genre", "table_name": "genres", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_album", "name": "Album", "table_name": "albums", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_song", "name": "Song", "table_name": "songs", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_song_genre", "name": "SongGenre", "table_name": "song_genres", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_playlist", "name": "Playlist", "table_name": "playlists", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_playlist_song", "name": "PlaylistSong", "table_name": "playlist_songs", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_share", "name": "Share", "table_name": "shares", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_refresh_token", "name": "RefreshToken", "table_name": "refresh_tokens", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_session", "name": "Session", "table_name": "sessions", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_play_history", "name": "PlayHistory", "table_name": "play_histories", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_queue", "name": "Queue", "table_name": "queues", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_player_state", "name": "PlayerState", "table_name": "player_states", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_audio_file", "name": "AudioFile", "table_name": "audio_files", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_upload_session", "name": "UploadSession", "table_name": "upload_sessions", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_search_index", "name": "SearchIndex", "table_name": "search_indices", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_search_query", "name": "SearchQuery", "table_name": "search_queries", "status": "PENDING", "file_path": "prisma/schema.prisma" }, { "id": "model_search_suggestion", "name": "SearchSuggestion", "table_name": "search_suggestions", "status": "PENDING", "file_path": "prisma/schema.prisma" } ], "api_endpoints": [ { "id": "api_register", "name": "Register User", "path": "/api/auth/register", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/register/route.ts" }, { "id": "api_login", "name": "Login", "path": "/api/auth/login", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/login/route.ts" }, { "id": "api_forgot_password", "name": "Forgot Password", "path": "/api/auth/forgot-password", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/forgot-password/route.ts" }, { "id": "api_reset_password", "name": "Reset Password", "path": "/api/auth/reset-password", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/reset-password/route.ts" }, { "id": "api_get_current_user", "name": "Get Current User", "path": "/api/users/me", "method": "GET", "status": "PENDING", "file_path": "app/api/users/me/route.ts" }, { "id": "api_update_current_user", "name": "Update Current User", "path": "/api/users/me", "method": "PUT", "status": "PENDING", "file_path": "app/api/users/me/route.ts" }, { "id": "api_create_artist_profile", "name": "Create Artist Profile", "path": "/api/artists", "method": "POST", "status": "PENDING", "file_path": "app/api/artists/route.ts" }, { "id": "api_get_artist", "name": "Get Artist", "path": "/api/artists/:id", "method": "GET", "status": "PENDING", "file_path": "app/api/artists/[id]/route.ts" }, { "id": "api_update_artist", "name": "Update Artist", "path": "/api/artists/:id", "method": "PUT", "status": "PENDING", "file_path": "app/api/artists/[id]/route.ts" }, { "id": "api_get_artist_songs", "name": "Get Artist Songs", "path": "/api/artists/:id/songs", "method": "GET", "status": "PENDING", "file_path": "app/api/artists/[id]/songs/route.ts" }, { "id": "api_get_artist_albums", "name": "Get Artist Albums", "path": "/api/artists/:id/albums", "method": "GET", "status": "PENDING", "file_path": "app/api/artists/[id]/albums/route.ts" }, { "id": "api_upload_song", "name": "Upload Song", "path": "/api/songs/upload", "method": "POST", "status": "PENDING", "file_path": "app/api/songs/upload/route.ts" }, { "id": "api_get_song", "name": "Get Song", "path": "/api/songs/:id", "method": "GET", "status": "PENDING", "file_path": "app/api/songs/[id]/route.ts" }, { "id": "api_update_song", "name": "Update Song", "path": "/api/songs/:id", "method": "PUT", "status": "PENDING", "file_path": "app/api/songs/[id]/route.ts" }, { "id": "api_delete_song", "name": "Delete Song", "path": "/api/songs/:id", "method": "DELETE", "status": "PENDING", "file_path": "app/api/songs/[id]/route.ts" }, { "id": "api_increment_play_count", "name": "Increment Play Count", "path": "/api/songs/:id/play", "method": "POST", "status": "PENDING", "file_path": "app/api/songs/[id]/play/route.ts" }, { "id": "api_create_album", "name": "Create Album", "path": "/api/albums", "method": "POST", "status": "PENDING", "file_path": "app/api/albums/route.ts" }, { "id": "api_get_album", "name": "Get Album", "path": "/api/albums/:id", "method": "GET", "status": "PENDING", "file_path": "app/api/albums/[id]/route.ts" }, { "id": "api_update_album", "name": "Update Album", "path": "/api/albums/:id", "method": "PUT", "status": "PENDING", "file_path": "app/api/albums/[id]/route.ts" }, { "id": "api_delete_album", "name": "Delete Album", "path": "/api/albums/:id", "method": "DELETE", "status": "PENDING", "file_path": "app/api/albums/[id]/route.ts" }, { "id": "api_create_playlist", "name": "Create Playlist", "path": "/api/playlists", "method": "POST", "status": "PENDING", "file_path": "app/api/playlists/route.ts" }, { "id": "api_get_user_playlists", "name": "Get User Playlists", "path": "/api/playlists", "method": "GET", "status": "PENDING", "file_path": "app/api/playlists/route.ts" }, { "id": "api_get_playlist", "name": "Get Playlist", "path": "/api/playlists/:id", "method": "GET", "status": "PENDING", "file_path": "app/api/playlists/[id]/route.ts" }, { "id": "api_update_playlist", "name": "Update Playlist", "path": "/api/playlists/:id", "method": "PUT", "status": "PENDING", "file_path": "app/api/playlists/[id]/route.ts" }, { "id": "api_delete_playlist", "name": "Delete Playlist", "path": "/api/playlists/:id", "method": "DELETE", "status": "PENDING", "file_path": "app/api/playlists/[id]/route.ts" }, { "id": "api_add_song_to_playlist", "name": "Add Song to Playlist", "path": "/api/playlists/:id/songs", "method": "POST", "status": "PENDING", "file_path": "app/api/playlists/[id]/songs/route.ts" }, { "id": "api_remove_song_from_playlist", "name": "Remove Song from Playlist", "path": "/api/playlists/:playlistId/songs/:songId", "method": "DELETE", "status": "PENDING", "file_path": "app/api/playlists/[playlistId]/songs/[songId]/route.ts" }, { "id": "api_reorder_playlist_songs", "name": "Reorder Playlist Songs", "path": "/api/playlists/:id/reorder", "method": "PUT", "status": "PENDING", "file_path": "app/api/playlists/[id]/reorder/route.ts" }, { "id": "api_get_trending_songs", "name": "Get Trending Songs", "path": "/api/discover/trending", "method": "GET", "status": "PENDING", "file_path": "app/api/discover/trending/route.ts" }, { "id": "api_get_new_releases", "name": "Get New Releases", "path": "/api/discover/new-releases", "method": "GET", "status": "PENDING", "file_path": "app/api/discover/new-releases/route.ts" }, { "id": "api_get_genres", "name": "Get Genres", "path": "/api/discover/genres", "method": "GET", "status": "PENDING", "file_path": "app/api/discover/genres/route.ts" }, { "id": "api_get_songs_by_genre", "name": "Get Songs by Genre", "path": "/api/discover/genres/:slug", "method": "GET", "status": "PENDING", "file_path": "app/api/discover/genres/[slug]/route.ts" }, { "id": "api_search", "name": "Search", "path": "/api/search", "method": "GET", "status": "PENDING", "file_path": "app/api/search/route.ts" }, { "id": "api_create_label_profile", "name": "Create Label Profile", "path": "/api/labels", "method": "POST", "status": "PENDING", "file_path": "app/api/labels/route.ts" }, { "id": "api_get_label_artists", "name": "Get Label Artists", "path": "/api/labels/:id/artists", "method": "GET", "status": "PENDING", "file_path": "app/api/labels/[id]/artists/route.ts" }, { "id": "api_create_song_share", "name": "Create Song Share", "path": "/api/share/song/:id", "method": "POST", "status": "PENDING", "file_path": "app/api/share/song/[id]/route.ts" }, { "id": "api_create_playlist_share", "name": "Create Playlist Share", "path": "/api/share/playlist/:id", "method": "POST", "status": "PENDING", "file_path": "app/api/share/playlist/[id]/route.ts" }, { "id": "api_create_album_share", "name": "Create Album Share", "path": "/api/share/album/:id", "method": "POST", "status": "PENDING", "file_path": "app/api/share/album/[id]/route.ts" }, { "id": "api_resolve_share", "name": "Resolve Share", "path": "/api/share/:token", "method": "GET", "status": "PENDING", "file_path": "app/api/share/[token]/route.ts" }, { "id": "api_track_share_click", "name": "Track Share Click", "path": "/api/share/:token/click", "method": "POST", "status": "PENDING", "file_path": "app/api/share/[token]/click/route.ts" }, { "id": "api_refresh_token", "name": "Refresh Token", "path": "/api/auth/refresh", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/refresh/route.ts" }, { "id": "api_logout", "name": "Logout", "path": "/api/auth/logout", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/logout/route.ts" }, { "id": "api_get_sessions", "name": "Get Sessions", "path": "/api/auth/sessions", "method": "GET", "status": "PENDING", "file_path": "app/api/auth/sessions/route.ts" }, { "id": "api_revoke_session", "name": "Revoke Session", "path": "/api/auth/sessions/:id", "method": "DELETE", "status": "PENDING", "file_path": "app/api/auth/sessions/[id]/route.ts" }, { "id": "api_verify_email", "name": "Verify Email", "path": "/api/auth/verify-email", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/verify-email/route.ts" }, { "id": "api_confirm_email", "name": "Confirm Email", "path": "/api/auth/confirm-email", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/confirm-email/route.ts" }, { "id": "api_change_password", "name": "Change Password", "path": "/api/auth/change-password", "method": "POST", "status": "PENDING", "file_path": "app/api/auth/change-password/route.ts" }, { "id": "api_get_queue", "name": "Get Queue", "path": "/api/player/queue", "method": "GET", "status": "PENDING", "file_path": "app/api/player/queue/route.ts" }, { "id": "api_update_queue", "name": "Update Queue", "path": "/api/player/queue", "method": "PUT", "status": "PENDING", "file_path": "app/api/player/queue/route.ts" }, { "id": "api_add_to_queue", "name": "Add to Queue", "path": "/api/player/queue/add", "method": "POST", "status": "PENDING", "file_path": "app/api/player/queue/add/route.ts" }, { "id": "api_remove_from_queue", "name": "Remove from Queue", "path": "/api/player/queue/remove", "method": "DELETE", "status": "PENDING", "file_path": "app/api/player/queue/remove/route.ts" }, { "id": "api_reorder_queue", "name": "Reorder Queue", "path": "/api/player/queue/reorder", "method": "PUT", "status": "PENDING", "file_path": "app/api/player/queue/reorder/route.ts" }, { "id": "api_clear_queue", "name": "Clear Queue", "path": "/api/player/queue/clear", "method": "DELETE", "status": "PENDING", "file_path": "app/api/player/queue/clear/route.ts" }, { "id": "api_get_player_state", "name": "Get Player State", "path": "/api/player/state", "method": "GET", "status": "PENDING", "file_path": "app/api/player/state/route.ts" }, { "id": "api_update_player_state", "name": "Update Player State", "path": "/api/player/state", "method": "PUT", "status": "PENDING", "file_path": "app/api/player/state/route.ts" }, { "id": "api_player_play", "name": "Player Play", "path": "/api/player/play", "method": "POST", "status": "PENDING", "file_path": "app/api/player/play/route.ts" }, { "id": "api_player_pause", "name": "Player Pause", "path": "/api/player/pause", "method": "POST", "status": "PENDING", "file_path": "app/api/player/pause/route.ts" }, { "id": "api_player_next", "name": "Player Next", "path": "/api/player/next", "method": "POST", "status": "PENDING", "file_path": "app/api/player/next/route.ts" }, { "id": "api_player_previous", "name": "Player Previous", "path": "/api/player/previous", "method": "POST", "status": "PENDING", "file_path": "app/api/player/previous/route.ts" }, { "id": "api_player_seek", "name": "Player Seek", "path": "/api/player/seek", "method": "POST", "status": "PENDING", "file_path": "app/api/player/seek/route.ts" }, { "id": "api_player_shuffle", "name": "Player Shuffle", "path": "/api/player/shuffle", "method": "POST", "status": "PENDING", "file_path": "app/api/player/shuffle/route.ts" }, { "id": "api_player_repeat", "name": "Player Repeat", "path": "/api/player/repeat", "method": "POST", "status": "PENDING", "file_path": "app/api/player/repeat/route.ts" }, { "id": "api_get_play_history", "name": "Get Play History", "path": "/api/player/history", "method": "GET", "status": "PENDING", "file_path": "app/api/player/history/route.ts" }, { "id": "api_record_play", "name": "Record Play", "path": "/api/player/history", "method": "POST", "status": "PENDING", "file_path": "app/api/player/history/route.ts" }, { "id": "api_analyze_audio", "name": "Analyze Audio", "path": "/api/player/analyze/:songId", "method": "GET", "status": "PENDING", "file_path": "app/api/player/analyze/[songId]/route.ts" }, { "id": "api_initiate_upload", "name": "Initiate Upload", "path": "/api/upload/initiate", "method": "POST", "status": "PENDING", "file_path": "app/api/upload/initiate/route.ts" }, { "id": "api_upload_chunk", "name": "Upload Chunk", "path": "/api/upload/chunk/:sessionId", "method": "POST", "status": "PENDING", "file_path": "app/api/upload/chunk/[sessionId]/route.ts" }, { "id": "api_complete_upload", "name": "Complete Upload", "path": "/api/upload/complete/:sessionId", "method": "POST", "status": "PENDING", "file_path": "app/api/upload/complete/[sessionId]/route.ts" }, { "id": "api_upload_status", "name": "Upload Status", "path": "/api/upload/status/:sessionId", "method": "GET", "status": "PENDING", "file_path": "app/api/upload/status/[sessionId]/route.ts" }, { "id": "api_abort_upload", "name": "Abort Upload", "path": "/api/upload/abort/:sessionId", "method": "DELETE", "status": "PENDING", "file_path": "app/api/upload/abort/[sessionId]/route.ts" }, { "id": "api_process_audio", "name": "Process Audio", "path": "/api/upload/process/:fileId", "method": "POST", "status": "PENDING", "file_path": "app/api/upload/process/[fileId]/route.ts" }, { "id": "api_audio_preview", "name": "Audio Preview", "path": "/api/upload/preview/:fileId", "method": "GET", "status": "PENDING", "file_path": "app/api/upload/preview/[fileId]/route.ts" }, { "id": "api_storage_usage", "name": "Storage Usage", "path": "/api/upload/storage/usage", "method": "GET", "status": "PENDING", "file_path": "app/api/upload/storage/usage/route.ts" }, { "id": "api_list_files", "name": "List Files", "path": "/api/upload/files", "method": "GET", "status": "PENDING", "file_path": "app/api/upload/files/route.ts" }, { "id": "api_delete_file", "name": "Delete File", "path": "/api/upload/files/:fileId", "method": "DELETE", "status": "PENDING", "file_path": "app/api/upload/files/[fileId]/route.ts" }, { "id": "api_search_suggestions", "name": "Search Suggestions", "path": "/api/search/suggestions", "method": "GET", "status": "PENDING", "file_path": "app/api/search/suggestions/route.ts" }, { "id": "api_trending_searches", "name": "Trending Searches", "path": "/api/search/trending", "method": "GET", "status": "PENDING", "file_path": "app/api/search/trending/route.ts" }, { "id": "api_recent_searches", "name": "Recent Searches", "path": "/api/search/recent/:userId", "method": "GET", "status": "PENDING", "file_path": "app/api/search/recent/[userId]/route.ts" }, { "id": "api_save_search", "name": "Save Search", "path": "/api/search/save/:userId", "method": "POST", "status": "PENDING", "file_path": "app/api/search/save/[userId]/route.ts" }, { "id": "api_index_search", "name": "Index Search", "path": "/api/search/index", "method": "POST", "status": "PENDING", "file_path": "app/api/search/index/route.ts" }, { "id": "api_update_search_index", "name": "Update Search Index", "path": "/api/search/index/:entityType/:entityId", "method": "PUT", "status": "PENDING", "file_path": "app/api/search/index/[entityType]/[entityId]/route.ts" }, { "id": "api_remove_search_index", "name": "Remove Search Index", "path": "/api/search/index/:entityType/:entityId", "method": "DELETE", "status": "PENDING", "file_path": "app/api/search/index/[entityType]/[entityId]/route.ts" }, { "id": "api_search_analytics", "name": "Search Analytics", "path": "/api/search/analytics", "method": "GET", "status": "PENDING", "file_path": "app/api/search/analytics/route.ts" } ], "pages": [ { "id": "page_login", "name": "Login", "path": "/login", "status": "PENDING", "file_path": "app/login/page.tsx" }, { "id": "page_register", "name": "Register", "path": "/register", "status": "PENDING", "file_path": "app/register/page.tsx" }, { "id": "page_forgot_password", "name": "Forgot Password", "path": "/forgot-password", "status": "PENDING", "file_path": "app/forgot-password/page.tsx" }, { "id": "page_home", "name": "Discover Music", "path": "/", "status": "PENDING", "file_path": "app/page.tsx" }, { "id": "page_artist_profile", "name": "Artist Profile", "path": "/artist/:id", "status": "PENDING", "file_path": "app/artist/[id]/page.tsx" }, { "id": "page_album_detail", "name": "Album", "path": "/album/:id", "status": "PENDING", "file_path": "app/album/[id]/page.tsx" }, { "id": "page_upload", "name": "Upload Music", "path": "/upload", "status": "PENDING", "file_path": "app/upload/page.tsx" }, { "id": "page_playlists", "name": "My Playlists", "path": "/playlists", "status": "PENDING", "file_path": "app/playlists/page.tsx" }, { "id": "page_playlist_detail", "name": "Playlist", "path": "/playlist/:id", "status": "PENDING", "file_path": "app/playlist/[id]/page.tsx" }, { "id": "page_profile", "name": "Profile Settings", "path": "/profile", "status": "PENDING", "file_path": "app/profile/page.tsx" }, { "id": "page_search", "name": "Search", "path": "/search", "status": "PENDING", "file_path": "app/search/page.tsx" }, { "id": "page_genre_browse", "name": "Browse Genre", "path": "/genre/:slug", "status": "PENDING", "file_path": "app/genre/[slug]/page.tsx" }, { "id": "page_share", "name": "Share", "path": "/s/:token", "status": "PENDING", "file_path": "app/s/[token]/page.tsx" }, { "id": "page_verify_email", "name": "Email Verification", "path": "/auth/verify-email", "status": "PENDING", "file_path": "app/auth/verify-email/page.tsx" }, { "id": "page_security_settings", "name": "Security Settings", "path": "/settings/security", "status": "PENDING", "file_path": "app/settings/security/page.tsx" }, { "id": "page_connected_accounts", "name": "Connected Accounts", "path": "/settings/connected-accounts", "status": "PENDING", "file_path": "app/settings/connected-accounts/page.tsx" } ], "components": [ { "id": "component_audio_player", "name": "AudioPlayer", "status": "PENDING", "file_path": "components/AudioPlayer.tsx" }, { "id": "component_player_controls", "name": "PlayerControls", "status": "PENDING", "file_path": "components/PlayerControls.tsx" }, { "id": "component_song_card", "name": "SongCard", "status": "PENDING", "file_path": "components/SongCard.tsx" }, { "id": "component_album_card", "name": "AlbumCard", "status": "PENDING", "file_path": "components/AlbumCard.tsx" }, { "id": "component_artist_card", "name": "ArtistCard", "status": "PENDING", "file_path": "components/ArtistCard.tsx" }, { "id": "component_playlist_card", "name": "PlaylistCard", "status": "PENDING", "file_path": "components/PlaylistCard.tsx" }, { "id": "component_upload_form", "name": "UploadForm", "status": "PENDING", "file_path": "components/UploadForm.tsx" }, { "id": "component_waveform_display", "name": "WaveformDisplay", "status": "PENDING", "file_path": "components/WaveformDisplay.tsx" }, { "id": "component_genre_badge", "name": "GenreBadge", "status": "PENDING", "file_path": "components/GenreBadge.tsx" }, { "id": "component_track_list", "name": "TrackList", "status": "PENDING", "file_path": "components/TrackList.tsx" }, { "id": "component_artist_header", "name": "ArtistHeader", "status": "PENDING", "file_path": "components/ArtistHeader.tsx" }, { "id": "component_album_header", "name": "AlbumHeader", "status": "PENDING", "file_path": "components/AlbumHeader.tsx" }, { "id": "component_playlist_header", "name": "PlaylistHeader", "status": "PENDING", "file_path": "components/PlaylistHeader.tsx" }, { "id": "component_social_links", "name": "SocialLinks", "status": "PENDING", "file_path": "components/SocialLinks.tsx" }, { "id": "component_auth_form", "name": "AuthForm", "status": "PENDING", "file_path": "components/AuthForm.tsx" }, { "id": "component_search_bar", "name": "SearchBar", "status": "PENDING", "file_path": "components/SearchBar.tsx" }, { "id": "component_search_results", "name": "SearchResults", "status": "PENDING", "file_path": "components/SearchResults.tsx" }, { "id": "component_create_playlist_modal", "name": "CreatePlaylistModal", "status": "PENDING", "file_path": "components/CreatePlaylistModal.tsx" }, { "id": "component_profile_form", "name": "ProfileForm", "status": "PENDING", "file_path": "components/ProfileForm.tsx" }, { "id": "component_avatar_upload", "name": "AvatarUpload", "status": "PENDING", "file_path": "components/AvatarUpload.tsx" }, { "id": "component_section_header", "name": "SectionHeader", "status": "PENDING", "file_path": "components/SectionHeader.tsx" }, { "id": "component_genre_header", "name": "GenreHeader", "status": "PENDING", "file_path": "components/GenreHeader.tsx" }, { "id": "component_header", "name": "Header", "status": "IMPLEMENTED", "file_path": "components/Header.tsx" }, { "id": "component_nav_link", "name": "NavLink", "status": "IMPLEMENTED", "file_path": "components/NavLink.tsx" }, { "id": "component_user_menu", "name": "UserMenu", "status": "IMPLEMENTED", "file_path": "components/UserMenu.tsx" }, { "id": "component_share_button", "name": "ShareButton", "status": "PENDING", "file_path": "components/ShareButton.tsx" }, { "id": "component_share_modal", "name": "ShareModal", "status": "PENDING", "file_path": "components/ShareModal.tsx" }, { "id": "component_social_share_buttons", "name": "SocialShareButtons", "status": "PENDING", "file_path": "components/SocialShareButtons.tsx" }, { "id": "component_share_content_display", "name": "SharedContentDisplay", "status": "PENDING", "file_path": "components/SharedContentDisplay.tsx" }, { "id": "component_advanced_audio_player", "name": "AdvancedAudioPlayer", "status": "PENDING", "file_path": "components/AdvancedAudioPlayer.tsx" }, { "id": "component_queue_manager", "name": "QueueManager", "status": "PENDING", "file_path": "components/QueueManager.tsx" }, { "id": "component_audio_visualizer", "name": "AudioVisualizer", "status": "PENDING", "file_path": "components/AudioVisualizer.tsx" }, { "id": "component_mini_player", "name": "MiniPlayer", "status": "PENDING", "file_path": "components/MiniPlayer.tsx" }, { "id": "component_play_history", "name": "PlayHistory", "status": "PENDING", "file_path": "components/PlayHistory.tsx" }, { "id": "component_advanced_upload_form", "name": "AdvancedUploadForm", "status": "PENDING", "file_path": "components/AdvancedUploadForm.tsx" }, { "id": "component_upload_progress", "name": "UploadProgress", "status": "PENDING", "file_path": "components/UploadProgress.tsx" }, { "id": "component_file_uploader", "name": "FileUploader", "status": "PENDING", "file_path": "components/FileUploader.tsx" }, { "id": "component_audio_preview", "name": "AudioPreview", "status": "PENDING", "file_path": "components/AudioPreview.tsx" }, { "id": "component_advanced_search_bar", "name": "AdvancedSearchBar", "status": "PENDING", "file_path": "components/AdvancedSearchBar.tsx" }, { "id": "component_search_filters", "name": "SearchFilters", "status": "PENDING", "file_path": "components/SearchFilters.tsx" }, { "id": "component_search_analytics", "name": "SearchAnalytics", "status": "PENDING", "file_path": "components/SearchAnalytics.tsx" } ] }, "dependencies": { "component_to_page": { "component_auth_form": [ "page_login", "page_register", "page_forgot_password" ], "component_song_card": [ "page_home", "page_artist_profile", "page_search", "page_genre_browse", "page_album_detail", "page_playlist_detail" ], "component_genre_badge": [ "page_home" ], "component_section_header": [ "page_home" ], "component_artist_header": [ "page_artist_profile" ], "component_album_card": [ "page_artist_profile", "page_search" ], "component_social_links": [ "page_artist_profile" ], "component_album_header": [ "page_album_detail" ], "component_track_list": [ "page_album_detail", "page_playlist_detail" ], "component_upload_form": [ "page_upload" ], "component_waveform_display": [ "page_upload" ], "component_playlist_card": [ "page_playlists" ], "component_create_playlist_modal": [ "page_playlists" ], "component_playlist_header": [ "page_playlist_detail" ], "component_profile_form": [ "page_profile" ], "component_avatar_upload": [ "page_profile" ], "component_search_bar": [ "page_search" ], "component_search_results": [ "page_search" ], "component_artist_card": [ "page_search" ], "component_genre_header": [ "page_genre_browse" ] }, "api_to_component": { "api_login": [ "component_auth_form" ], "api_register": [ "component_auth_form" ], "api_forgot_password": [ "component_auth_form" ], "api_upload_song": [ "component_upload_form" ], "api_increment_play_count": [ "component_audio_player" ], "api_search": [ "component_search_bar" ], "api_create_playlist": [ "component_create_playlist_modal" ], "api_update_current_user": [ "component_profile_form" ] }, "table_to_api": { "model_user": [ "api_register", "api_login", "api_forgot_password", "api_reset_password", "api_get_current_user", "api_update_current_user" ], "model_artist": [ "api_create_artist_profile", "api_get_artist", "api_update_artist", "api_get_artist_songs", "api_get_artist_albums" ], "model_song": [ "api_upload_song", "api_get_song", "api_update_song", "api_delete_song", "api_increment_play_count", "api_get_artist_songs", "api_get_trending_songs", "api_get_new_releases", "api_search" ], "model_album": [ "api_create_album", "api_get_album", "api_update_album", "api_delete_album", "api_get_artist_albums", "api_search" ], "model_playlist": [ "api_create_playlist", "api_get_user_playlists", "api_get_playlist", "api_update_playlist", "api_delete_playlist" ], "model_playlist_song": [ "api_add_song_to_playlist", "api_remove_song_from_playlist", "api_reorder_playlist_songs" ], "model_genre": [ "api_get_genres", "api_get_songs_by_genre" ], "model_label": [ "api_create_label_profile", "api_get_label_artists" ] } } }