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

192 lines
4.4 KiB
YAML

task_id: task_create_page_home
entity_id: page_home
generated_at: '2025-12-18T15:16:50.293122'
workflow_version: v001
target:
type: page
definition:
id: page_home
path: /
title: Discover Music
description: Main discovery feed
data_needs:
- api_id: api_get_trending_songs
purpose: Show trending songs
on_load: true
- api_id: api_get_new_releases
purpose: Show new releases
on_load: true
- api_id: api_get_genres
purpose: Genre navigation
on_load: true
components:
- component_song_card
- component_genre_badge
- component_section_header
auth:
required: false
related:
models: []
apis:
- id: api_get_new_releases
definition: &id003
id: api_get_new_releases
method: GET
path: /api/discover/new-releases
description: Get recently released songs
query_params:
limit: integer
offset: integer
responses:
- status: 200
description: List of new releases
schema:
songs:
- id: uuid
title: string
release_date: string
auth:
required: false
depends_on_models:
- model_song
- id: api_get_trending_songs
definition: &id005
id: api_get_trending_songs
method: GET
path: /api/discover/trending
description: Get trending songs
query_params:
limit: integer
offset: integer
responses:
- status: 200
description: List of trending songs
schema:
songs:
- id: uuid
title: string
artist:
stage_name: string
play_count: integer
auth:
required: false
depends_on_models:
- model_song
- model_artist
- id: api_get_genres
definition: &id006
id: api_get_genres
method: GET
path: /api/discover/genres
description: Get all genres
responses:
- status: 200
description: List of genres
schema:
genres:
- id: uuid
name: string
slug: string
auth:
required: false
depends_on_models:
- model_genre
components:
- id: component_genre_badge
definition: &id001
id: component_genre_badge
name: GenreBadge
description: Genre tag display
props:
- name: genre
type: Genre
required: true
- name: clickable
type: boolean
default: true
events:
- name: onClick
payload:
genreSlug: string
uses_apis: []
uses_components: []
- id: component_section_header
definition: &id002
id: component_section_header
name: SectionHeader
description: Section title with optional action
props:
- name: title
type: string
required: true
- name: actionLabel
type: string
required: false
events:
- name: onActionClick
payload: null
uses_apis: []
uses_components: []
- id: component_song_card
definition: &id004
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: []
dependencies:
entity_ids:
- component_genre_badge
- component_section_header
- api_get_new_releases
- component_song_card
- api_get_trending_songs
- api_get_genres
definitions:
- id: component_genre_badge
type: component
definition: *id001
- id: component_section_header
type: component
definition: *id002
- id: api_get_new_releases
type: api
definition: *id003
- id: component_song_card
type: component
definition: *id004
- id: api_get_trending_songs
type: api
definition: *id005
- id: api_get_genres
type: api
definition: *id006
files:
to_create:
- app//page.tsx
reference: []
acceptance:
- criterion: Page renders at /
verification: Navigate to /
- criterion: Data fetching works
verification: Check network tab
- criterion: Components render correctly
verification: Visual inspection