task_id: task_create_page_app_detail entity_id: page_app_detail generated_at: '2025-12-19T06:08:12.185761' workflow_version: v001 target: type: page definition: id: page_app_detail name: App Preview path: /apps/[id] layout: layout_app data_needs: - api_id: api_get_app purpose: Display app in iframe on_load: true components: - component_header - component_sidebar - component_app_iframe_viewer seo: title: App Preview - NoteToApp description: View generated application auth: required: true roles: [] redirect: /login state: local: - isLoading global: - user related: models: [] apis: - id: api_get_app definition: &id003 id: api_get_app method: GET path: /api/apps/[id] summary: Get single generated app description: Get app details including HTML content for iframe rendering tags: - apps path_params: - name: id type: uuid description: App ID query_params: [] request_body: content_type: application/json schema: type: object properties: [] responses: - status: 200 description: App details schema: type: object properties: - name: id type: uuid - name: recording_id type: uuid - name: title type: string - name: description type: string - name: html_content type: string - name: app_type type: string - name: status type: string - name: created_at type: datetime - status: 404 description: App not found schema: type: object properties: - name: error type: string example: error: App not found depends_on_models: - model_generated_app depends_on_apis: [] auth: required: true roles: [] external: false components: - id: component_header definition: &id001 id: component_header name: Header props: - name: user type: User | null required: false default: null description: Current user for displaying name/avatar events: [] uses_apis: [] uses_components: [] internal_state: [] variants: - default external: false - id: component_app_iframe_viewer definition: &id002 id: component_app_iframe_viewer name: AppIframeViewer props: - name: htmlContent type: string required: true description: HTML content to render in iframe - name: title type: string required: true description: App title for accessibility events: - name: onLoadComplete payload: void description: Fired when iframe finishes loading uses_apis: [] uses_components: [] internal_state: - isLoading - iframeRef variants: - default - fullscreen external: false - id: component_sidebar definition: &id004 id: component_sidebar name: Sidebar props: - name: activePath type: string required: true description: Current route path for highlighting events: - name: onNavigate payload: string description: Fired when navigation item clicked uses_apis: [] uses_components: [] internal_state: - isCollapsed variants: - default external: false dependencies: entity_ids: - component_header - component_app_iframe_viewer - api_get_app - component_sidebar definitions: - id: component_header type: component definition: *id001 external: false - id: component_app_iframe_viewer type: component definition: *id002 external: false - id: api_get_app type: api definition: *id003 external: false - id: component_sidebar type: component definition: *id004 external: false files: to_create: - app/apps/[id]/page.tsx reference: [] acceptance: - criterion: Page renders at /apps/[id] verification: Navigate to /apps/[id] - criterion: Data fetching works verification: Check network tab - criterion: Components render correctly verification: Visual inspection