task_id: task_create_page_artist_profile entity_id: page_artist_profile generated_at: '2025-12-18T15:16:50.295445' workflow_version: v001 target: type: page definition: id: page_artist_profile path: /artist/:id title: Artist Profile description: Artist profile with songs and albums data_needs: - api_id: api_get_artist purpose: Artist details on_load: true - api_id: api_get_artist_songs purpose: Artist songs on_load: true - api_id: api_get_artist_albums purpose: Artist albums on_load: true components: - component_artist_header - component_song_card - component_album_card - component_social_links auth: required: false related: models: [] apis: - id: api_get_artist_albums definition: &id001 id: api_get_artist_albums method: GET path: /api/artists/:id/albums description: Get all albums by artist responses: - status: 200 description: List of albums schema: albums: - id: uuid title: string cover_art_url: string release_date: string album_type: string auth: required: false depends_on_models: - model_artist - model_album - id: api_get_artist_songs definition: &id004 id: api_get_artist_songs method: GET path: /api/artists/:id/songs description: Get all songs by artist responses: - status: 200 description: List of songs schema: songs: - id: uuid title: string duration: integer cover_art_url: string play_count: integer auth: required: false depends_on_models: - model_artist - model_song - id: api_get_artist definition: &id005 id: api_get_artist method: GET path: /api/artists/:id description: Get artist profile by ID responses: - status: 200 description: Artist profile schema: id: uuid stage_name: string bio: string cover_image_url: string social_links: object verified: boolean - status: 404 description: Artist not found schema: error: string auth: required: false depends_on_models: - model_artist components: - id: component_artist_header definition: &id002 id: component_artist_header name: ArtistHeader description: Artist profile header with cover image props: - name: artist type: Artist required: true events: [] uses_apis: [] uses_components: - component_social_links - id: component_album_card definition: &id003 id: component_album_card name: AlbumCard description: Album display card props: - name: album type: Album required: true - name: showArtist type: boolean default: true events: - name: onClick payload: albumId: string uses_apis: [] uses_components: [] - id: component_song_card definition: &id006 id: component_song_card name: SongCard description: Song display card with play button props: - name: song type: Song required: true - name: showArtist type: boolean default: true - name: showAlbum type: boolean default: false events: - name: onPlay payload: songId: string - name: onAddToPlaylist payload: songId: string uses_apis: [] uses_components: [] - id: component_social_links definition: &id007 id: component_social_links name: SocialLinks description: Social media links display props: - name: links type: object required: true events: [] uses_apis: [] uses_components: [] dependencies: entity_ids: - api_get_artist_albums - component_artist_header - component_album_card - api_get_artist_songs - api_get_artist - component_song_card - component_social_links definitions: - id: api_get_artist_albums type: api definition: *id001 - id: component_artist_header type: component definition: *id002 - id: component_album_card type: component definition: *id003 - id: api_get_artist_songs type: api definition: *id004 - id: api_get_artist type: api definition: *id005 - id: component_song_card type: component definition: *id006 - id: component_social_links type: component definition: *id007 files: to_create: - app/artist/:id/page.tsx reference: [] acceptance: - criterion: Page renders at /artist/:id verification: Navigate to /artist/:id - criterion: Data fetching works verification: Check network tab - criterion: Components render correctly verification: Visual inspection