project-standalo-sonic-cloud/.workflow/versions/v001/contexts/page_artist_profile.yml

208 lines
4.9 KiB
YAML

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