project-standalo-note-to-app/.workflow/versions/v001/relations.yml

1176 lines
25 KiB
YAML

version: '1.0'
generated_at: '2025-12-19T06:08:20.694285'
source: .workflow/versions/v001/design/design_document.yml
entities:
database:
- id: model_user
type: database
name: User
file_path: prisma/schema.prisma
layer: 1
depends_on: []
used_by:
- model_recording
- model_generated_app
- api_register_user
- api_login_user
- api_get_current_user
status: pending
- id: model_recording
type: database
name: Recording
file_path: prisma/schema.prisma
layer: 1
depends_on:
- model_user
used_by:
- model_generated_app
- api_list_recordings
- api_create_recording
- api_get_recording
- api_delete_recording
- api_transcribe_recording
- api_summarize_recording
- api_generate_app
status: pending
- id: model_generated_app
type: database
name: GeneratedApp
file_path: prisma/schema.prisma
layer: 1
depends_on:
- model_user
- model_recording
used_by:
- api_list_apps
- api_generate_app
- api_get_app
- api_delete_app
status: pending
api:
- id: api_register_user
type: api
name: Register a new user
file_path: app/api/auth/register/route.ts
layer: 2
depends_on:
- model_user
used_by:
- component_register_form
status: pending
- id: api_login_user
type: api
name: Login user
file_path: app/api/auth/login/route.ts
layer: 2
depends_on:
- model_user
used_by:
- component_login_form
status: pending
- id: api_logout_user
type: api
name: Logout user
file_path: app/api/auth/logout/route.ts
layer: 2
depends_on: []
used_by: []
status: pending
- id: api_get_current_user
type: api
name: Get current user
file_path: app/api/auth/me/route.ts
layer: 2
depends_on:
- model_user
used_by:
- page_dashboard
status: pending
- id: api_list_recordings
type: api
name: List user recordings
file_path: app/api/recordings/route.ts
layer: 2
depends_on:
- model_recording
used_by:
- page_dashboard
- page_recordings
status: pending
- id: api_create_recording
type: api
name: Create new recording
file_path: app/api/recordings/route.ts
layer: 2
depends_on:
- model_recording
used_by: []
status: pending
- id: api_get_recording
type: api
name: Get single recording
file_path: app/api/recordings/[id]/route.ts
layer: 2
depends_on:
- model_recording
used_by:
- page_recording_detail
status: pending
- id: api_delete_recording
type: api
name: Delete recording
file_path: app/api/recordings/[id]/route.ts
layer: 2
depends_on:
- model_recording
used_by: []
status: pending
- id: api_transcribe_recording
type: api
name: Transcribe recording
file_path: app/api/recordings/[id]/transcribe/route.ts
layer: 2
depends_on:
- model_recording
used_by:
- api_summarize_recording
status: pending
- id: api_summarize_recording
type: api
name: Summarize recording
file_path: app/api/recordings/[id]/summarize/route.ts
layer: 2
depends_on:
- model_recording
- api_transcribe_recording
used_by:
- api_generate_app
status: pending
- id: api_list_apps
type: api
name: List generated apps
file_path: app/api/apps/route.ts
layer: 2
depends_on:
- model_generated_app
used_by:
- page_apps
status: pending
- id: api_generate_app
type: api
name: Generate app from recording
file_path: app/api/apps/generate/route.ts
layer: 2
depends_on:
- model_generated_app
- model_recording
- api_summarize_recording
used_by: []
status: pending
- id: api_get_app
type: api
name: Get single generated app
file_path: app/api/apps/[id]/route.ts
layer: 2
depends_on:
- model_generated_app
used_by:
- page_app_detail
status: pending
- id: api_delete_app
type: api
name: Delete generated app
file_path: app/api/apps/[id]/route.ts
layer: 2
depends_on:
- model_generated_app
used_by: []
status: pending
component:
- id: component_header
type: component
name: Header
file_path: ''
layer: 3
depends_on: []
used_by:
- page_home
- page_dashboard
- page_recordings
- page_recording_detail
- page_apps
- page_app_detail
status: pending
- id: component_sidebar
type: component
name: Sidebar
file_path: ''
layer: 3
depends_on: []
used_by:
- page_dashboard
- page_recordings
- page_recording_detail
- page_apps
- page_app_detail
status: pending
- id: component_hero
type: component
name: Hero
file_path: ''
layer: 3
depends_on: []
used_by:
- page_home
status: pending
- id: component_features
type: component
name: Features
file_path: ''
layer: 3
depends_on: []
used_by:
- page_home
status: pending
- id: component_login_form
type: component
name: LoginForm
file_path: ''
layer: 3
depends_on:
- api_login_user
used_by:
- page_login
status: pending
- id: component_register_form
type: component
name: RegisterForm
file_path: ''
layer: 3
depends_on:
- api_register_user
used_by:
- page_register
status: pending
- id: component_record_button
type: component
name: RecordButton
file_path: ''
layer: 3
depends_on: []
used_by:
- page_dashboard
status: pending
- id: component_wake_word_indicator
type: component
name: WakeWordIndicator
file_path: ''
layer: 3
depends_on: []
used_by:
- page_dashboard
status: pending
- id: component_recording_list
type: component
name: RecordingList
file_path: ''
layer: 3
depends_on:
- component_recording_card
used_by:
- page_dashboard
- page_recordings
status: pending
- id: component_recording_card
type: component
name: RecordingCard
file_path: ''
layer: 3
depends_on: []
used_by:
- component_recording_list
- page_recordings
status: pending
- id: component_audio_player
type: component
name: AudioPlayer
file_path: ''
layer: 3
depends_on: []
used_by:
- page_recording_detail
status: pending
- id: component_transcript_viewer
type: component
name: TranscriptViewer
file_path: ''
layer: 3
depends_on: []
used_by:
- page_recording_detail
status: pending
- id: component_summary_display
type: component
name: SummaryDisplay
file_path: ''
layer: 3
depends_on: []
used_by:
- page_recording_detail
status: pending
- id: component_app_gallery
type: component
name: AppGallery
file_path: ''
layer: 3
depends_on:
- component_app_card
used_by:
- page_apps
status: pending
- id: component_app_card
type: component
name: AppCard
file_path: ''
layer: 3
depends_on: []
used_by:
- component_app_gallery
- page_apps
status: pending
- id: component_app_iframe_viewer
type: component
name: AppIframeViewer
file_path: ''
layer: 3
depends_on: []
used_by:
- page_app_detail
status: pending
page:
- id: page_home
type: page
name: Home
file_path: app//page.tsx
layer: 4
depends_on:
- component_header
- component_hero
- component_features
used_by: []
status: pending
- id: page_login
type: page
name: Login
file_path: app/login/page.tsx
layer: 4
depends_on:
- component_login_form
used_by: []
status: pending
- id: page_register
type: page
name: Register
file_path: app/register/page.tsx
layer: 4
depends_on:
- component_register_form
used_by: []
status: pending
- id: page_dashboard
type: page
name: Dashboard
file_path: app/dashboard/page.tsx
layer: 4
depends_on:
- api_get_current_user
- api_list_recordings
- component_header
- component_sidebar
- component_record_button
- component_wake_word_indicator
- component_recording_list
used_by: []
status: pending
- id: page_recordings
type: page
name: Recordings
file_path: app/recordings/page.tsx
layer: 4
depends_on:
- api_list_recordings
- component_header
- component_sidebar
- component_recording_list
- component_recording_card
used_by: []
status: pending
- id: page_recording_detail
type: page
name: Recording Detail
file_path: app/recordings/[id]/page.tsx
layer: 4
depends_on:
- api_get_recording
- component_header
- component_sidebar
- component_audio_player
- component_transcript_viewer
- component_summary_display
used_by: []
status: pending
- id: page_apps
type: page
name: Generated Apps
file_path: app/apps/page.tsx
layer: 4
depends_on:
- api_list_apps
- component_header
- component_sidebar
- component_app_gallery
- component_app_card
used_by: []
status: pending
- id: page_app_detail
type: page
name: App Preview
file_path: app/apps/[id]/page.tsx
layer: 4
depends_on:
- api_get_app
- component_header
- component_sidebar
- component_app_iframe_viewer
used_by: []
status: pending
relations:
- source: model_recording
target: model_user
type: references
- source: model_generated_app
target: model_user
type: references
- source: model_generated_app
target: model_recording
type: references
- source: api_register_user
target: model_user
type: queries
- source: api_login_user
target: model_user
type: queries
- source: api_get_current_user
target: model_user
type: queries
- source: api_list_recordings
target: model_recording
type: queries
- source: api_create_recording
target: model_recording
type: queries
- source: api_get_recording
target: model_recording
type: queries
- source: api_delete_recording
target: model_recording
type: queries
- source: api_transcribe_recording
target: model_recording
type: queries
- source: api_summarize_recording
target: model_recording
type: queries
- source: api_summarize_recording
target: api_transcribe_recording
type: calls
- source: api_list_apps
target: model_generated_app
type: queries
- source: api_generate_app
target: model_generated_app
type: queries
- source: api_generate_app
target: model_recording
type: queries
- source: api_generate_app
target: api_summarize_recording
type: calls
- source: api_get_app
target: model_generated_app
type: queries
- source: api_delete_app
target: model_generated_app
type: queries
- source: component_login_form
target: api_login_user
type: calls
- source: component_register_form
target: api_register_user
type: calls
- source: component_recording_list
target: component_recording_card
type: imports
- source: component_app_gallery
target: component_app_card
type: imports
- source: page_home
target: component_header
type: renders
- source: page_home
target: component_hero
type: renders
- source: page_home
target: component_features
type: renders
- source: page_login
target: component_login_form
type: renders
- source: page_register
target: component_register_form
type: renders
- source: page_dashboard
target: api_get_current_user
type: calls
- source: page_dashboard
target: api_list_recordings
type: calls
- source: page_dashboard
target: component_header
type: renders
- source: page_dashboard
target: component_sidebar
type: renders
- source: page_dashboard
target: component_record_button
type: renders
- source: page_dashboard
target: component_wake_word_indicator
type: renders
- source: page_dashboard
target: component_recording_list
type: renders
- source: page_recordings
target: api_list_recordings
type: calls
- source: page_recordings
target: component_header
type: renders
- source: page_recordings
target: component_sidebar
type: renders
- source: page_recordings
target: component_recording_list
type: renders
- source: page_recordings
target: component_recording_card
type: renders
- source: page_recording_detail
target: api_get_recording
type: calls
- source: page_recording_detail
target: component_header
type: renders
- source: page_recording_detail
target: component_sidebar
type: renders
- source: page_recording_detail
target: component_audio_player
type: renders
- source: page_recording_detail
target: component_transcript_viewer
type: renders
- source: page_recording_detail
target: component_summary_display
type: renders
- source: page_apps
target: api_list_apps
type: calls
- source: page_apps
target: component_header
type: renders
- source: page_apps
target: component_sidebar
type: renders
- source: page_apps
target: component_app_gallery
type: renders
- source: page_apps
target: component_app_card
type: renders
- source: page_app_detail
target: api_get_app
type: calls
- source: page_app_detail
target: component_header
type: renders
- source: page_app_detail
target: component_sidebar
type: renders
- source: page_app_detail
target: component_app_iframe_viewer
type: renders
- source: model_recording
target: model_user
type: references
- source: model_generated_app
target: model_user
type: references
- source: model_generated_app
target: model_recording
type: references
- source: api_register_user
target: model_user
type: queries
- source: api_login_user
target: model_user
type: queries
- source: api_get_current_user
target: model_user
type: queries
- source: api_list_recordings
target: model_recording
type: queries
- source: api_create_recording
target: model_recording
type: queries
- source: api_get_recording
target: model_recording
type: queries
- source: api_delete_recording
target: model_recording
type: queries
- source: api_transcribe_recording
target: model_recording
type: queries
- source: api_summarize_recording
target: model_recording
type: queries
- source: api_summarize_recording
target: api_transcribe_recording
type: calls
- source: api_list_apps
target: model_generated_app
type: queries
- source: api_generate_app
target: model_generated_app
type: queries
- source: api_generate_app
target: model_recording
type: queries
- source: api_generate_app
target: api_summarize_recording
type: calls
- source: api_get_app
target: model_generated_app
type: queries
- source: api_delete_app
target: model_generated_app
type: queries
- source: component_login_form
target: api_login_user
type: calls
- source: component_register_form
target: api_register_user
type: calls
- source: component_recording_list
target: component_recording_card
type: imports
- source: component_app_gallery
target: component_app_card
type: imports
- source: page_home
target: component_header
type: renders
- source: page_home
target: component_hero
type: renders
- source: page_home
target: component_features
type: renders
- source: page_login
target: component_login_form
type: renders
- source: page_register
target: component_register_form
type: renders
- source: page_dashboard
target: api_get_current_user
type: calls
- source: page_dashboard
target: api_list_recordings
type: calls
- source: page_dashboard
target: component_header
type: renders
- source: page_dashboard
target: component_sidebar
type: renders
- source: page_dashboard
target: component_record_button
type: renders
- source: page_dashboard
target: component_wake_word_indicator
type: renders
- source: page_dashboard
target: component_recording_list
type: renders
- source: page_recordings
target: api_list_recordings
type: calls
- source: page_recordings
target: component_header
type: renders
- source: page_recordings
target: component_sidebar
type: renders
- source: page_recordings
target: component_recording_list
type: renders
- source: page_recordings
target: component_recording_card
type: renders
- source: page_recording_detail
target: api_get_recording
type: calls
- source: page_recording_detail
target: component_header
type: renders
- source: page_recording_detail
target: component_sidebar
type: renders
- source: page_recording_detail
target: component_audio_player
type: renders
- source: page_recording_detail
target: component_transcript_viewer
type: renders
- source: page_recording_detail
target: component_summary_display
type: renders
- source: page_apps
target: api_list_apps
type: calls
- source: page_apps
target: component_header
type: renders
- source: page_apps
target: component_sidebar
type: renders
- source: page_apps
target: component_app_gallery
type: renders
- source: page_apps
target: component_app_card
type: renders
- source: page_app_detail
target: api_get_app
type: calls
- source: page_app_detail
target: component_header
type: renders
- source: page_app_detail
target: component_sidebar
type: renders
- source: page_app_detail
target: component_app_iframe_viewer
type: renders
dependency_chains:
model_user: []
model_recording:
- model_user
model_generated_app:
- model_user
- model_recording
api_register_user:
- model_user
api_login_user:
- model_user
api_logout_user: []
api_get_current_user:
- model_user
api_list_recordings:
- model_user
- model_recording
api_create_recording:
- model_user
- model_recording
api_get_recording:
- model_user
- model_recording
api_delete_recording:
- model_user
- model_recording
api_transcribe_recording:
- model_user
- model_recording
api_summarize_recording:
- model_user
- model_recording
- api_transcribe_recording
api_list_apps:
- model_user
- model_recording
- model_generated_app
api_generate_app:
- model_user
- model_recording
- model_generated_app
- api_transcribe_recording
- api_summarize_recording
api_get_app:
- model_user
- model_recording
- model_generated_app
api_delete_app:
- model_user
- model_recording
- model_generated_app
component_header: []
component_sidebar: []
component_hero: []
component_features: []
component_login_form:
- model_user
- api_login_user
component_register_form:
- model_user
- api_register_user
component_record_button: []
component_wake_word_indicator: []
component_recording_list:
- component_recording_card
component_recording_card: []
component_audio_player: []
component_transcript_viewer: []
component_summary_display: []
component_app_gallery:
- component_app_card
component_app_card: []
component_app_iframe_viewer: []
page_home:
- component_header
- component_hero
- component_features
page_login:
- model_user
- api_login_user
- component_login_form
page_register:
- model_user
- api_register_user
- component_register_form
page_dashboard:
- model_user
- api_get_current_user
- model_recording
- api_list_recordings
- component_header
- component_sidebar
- component_record_button
- component_wake_word_indicator
- component_recording_card
- component_recording_list
page_recordings:
- model_user
- model_recording
- api_list_recordings
- component_header
- component_sidebar
- component_recording_card
- component_recording_list
page_recording_detail:
- model_user
- model_recording
- api_get_recording
- component_header
- component_sidebar
- component_audio_player
- component_transcript_viewer
- component_summary_display
page_apps:
- model_user
- model_recording
- model_generated_app
- api_list_apps
- component_header
- component_sidebar
- component_app_card
- component_app_gallery
page_app_detail:
- model_user
- model_recording
- model_generated_app
- api_get_app
- component_header
- component_sidebar
- component_app_iframe_viewer
impact_chains:
model_user:
- model_recording
- model_generated_app
- api_list_apps
- page_apps
- api_generate_app
- api_get_app
- page_app_detail
- api_delete_app
- api_list_recordings
- page_dashboard
- page_recordings
- api_create_recording
- api_get_recording
- page_recording_detail
- api_delete_recording
- api_transcribe_recording
- api_summarize_recording
- api_register_user
- component_register_form
- page_register
- api_login_user
- component_login_form
- page_login
- api_get_current_user
model_recording:
- model_generated_app
- api_list_apps
- page_apps
- api_generate_app
- api_get_app
- page_app_detail
- api_delete_app
- api_list_recordings
- page_dashboard
- page_recordings
- api_create_recording
- api_get_recording
- page_recording_detail
- api_delete_recording
- api_transcribe_recording
- api_summarize_recording
model_generated_app:
- api_list_apps
- page_apps
- api_generate_app
- api_get_app
- page_app_detail
- api_delete_app
api_register_user:
- component_register_form
- page_register
api_login_user:
- component_login_form
- page_login
api_logout_user: []
api_get_current_user:
- page_dashboard
api_list_recordings:
- page_dashboard
- page_recordings
api_create_recording: []
api_get_recording:
- page_recording_detail
api_delete_recording: []
api_transcribe_recording:
- api_summarize_recording
- api_generate_app
api_summarize_recording:
- api_generate_app
api_list_apps:
- page_apps
api_generate_app: []
api_get_app:
- page_app_detail
api_delete_app: []
component_header:
- page_home
- page_dashboard
- page_recordings
- page_recording_detail
- page_apps
- page_app_detail
component_sidebar:
- page_dashboard
- page_recordings
- page_recording_detail
- page_apps
- page_app_detail
component_hero:
- page_home
component_features:
- page_home
component_login_form:
- page_login
component_register_form:
- page_register
component_record_button:
- page_dashboard
component_wake_word_indicator:
- page_dashboard
component_recording_list:
- page_dashboard
- page_recordings
component_recording_card:
- component_recording_list
- page_dashboard
- page_recordings
component_audio_player:
- page_recording_detail
component_transcript_viewer:
- page_recording_detail
component_summary_display:
- page_recording_detail
component_app_gallery:
- page_apps
component_app_card:
- component_app_gallery
- page_apps
component_app_iframe_viewer:
- page_app_detail
page_home: []
page_login: []
page_register: []
page_dashboard: []
page_recordings: []
page_recording_detail: []
page_apps: []
page_app_detail: []
type_mappings:
model_user:
id: uuid
email: string
name: string
password_hash: string
model_recording:
id: uuid
user_id: uuid
title: string
audio_file_path: string
duration: integer
transcript: text
summary: text
is_transcribing: boolean
model_generated_app:
id: uuid
user_id: uuid
recording_id: uuid
title: string
description: text
html_content: text
prd_content: text
ui_ux_design: text
app_type: string
status: enum
api_register_user:
id: uuid
email: string
name: string
created_at: datetime
api_login_user:
user: object
token: string
api_logout_user:
success: boolean
api_get_current_user:
id: uuid
email: string
name: string
created_at: datetime
api_list_recordings:
recordings: array
total: integer
api_create_recording:
id: uuid
title: string
audio_file_path: string
duration: integer
created_at: datetime
api_get_recording:
id: uuid
title: string
audio_file_path: string
duration: integer
transcript: string
summary: string
is_transcribing: boolean
created_at: datetime
api_delete_recording:
success: boolean
api_transcribe_recording:
recording_id: uuid
is_transcribing: boolean
api_summarize_recording:
recording_id: uuid
summary: string
api_list_apps:
apps: array
total: integer
api_generate_app:
id: uuid
recording_id: uuid
status: string
api_get_app:
id: uuid
recording_id: uuid
title: string
description: string
html_content: string
app_type: string
status: string
created_at: datetime
api_delete_app:
success: boolean
component_header:
user: User | null
component_sidebar:
activePath: string
component_hero: {}
component_features: {}
component_login_form: {}
component_register_form: {}
component_record_button:
isRecording: boolean
isTranscribing: boolean
component_wake_word_indicator:
isListening: boolean
wakeWord: string
component_recording_list:
recordings: Recording[]
isLoading: boolean
component_recording_card:
recording: Recording
showActions: boolean
component_audio_player:
audioUrl: string
duration: integer
component_transcript_viewer:
transcript: string
isLive: boolean
component_summary_display:
summary: string
isLoading: boolean
component_app_gallery:
apps: GeneratedApp[]
isLoading: boolean
component_app_card:
app: GeneratedApp
showActions: boolean
component_app_iframe_viewer:
htmlContent: string
title: string
issues:
circular_dependencies: []
statistics:
total_entities: 41
total_relations: 110
by_type:
database: 3
api: 14
component: 16
page: 8
by_layer:
1_database: 3
2_api: 14
3_component: 16
4_page: 8