{ "project": { "name": "note-to-app", "version": "0.1.0", "description": "Voice recording app with AI-powered summarization and automatic app generation" }, "state": { "current_phase": "DESIGNING" }, "entities": { "data_models": [ { "id": "model_user", "name": "User", "status": "PENDING", "file_path": "prisma/schema.prisma", "description": "Application user account with email/password authentication" }, { "id": "model_recording", "name": "Recording", "status": "PENDING", "file_path": "prisma/schema.prisma", "description": "Voice recording with transcript and summary" }, { "id": "model_generated_app", "name": "GeneratedApp", "status": "PENDING", "file_path": "prisma/schema.prisma", "description": "AI-generated application from recording content" } ], "api_endpoints": [ { "id": "api_register_user", "method": "POST", "path": "/api/auth/register", "status": "PENDING", "file_path": "app/api/auth/register/route.ts", "description": "Register a new user" }, { "id": "api_login_user", "method": "POST", "path": "/api/auth/login", "status": "PENDING", "file_path": "app/api/auth/login/route.ts", "description": "Login user" }, { "id": "api_logout_user", "method": "POST", "path": "/api/auth/logout", "status": "PENDING", "file_path": "app/api/auth/logout/route.ts", "description": "Logout user" }, { "id": "api_get_current_user", "method": "GET", "path": "/api/auth/me", "status": "PENDING", "file_path": "app/api/auth/me/route.ts", "description": "Get current user" }, { "id": "api_list_recordings", "method": "GET", "path": "/api/recordings", "status": "PENDING", "file_path": "app/api/recordings/route.ts", "description": "List user recordings" }, { "id": "api_create_recording", "method": "POST", "path": "/api/recordings", "status": "PENDING", "file_path": "app/api/recordings/route.ts", "description": "Create new recording" }, { "id": "api_get_recording", "method": "GET", "path": "/api/recordings/[id]", "status": "PENDING", "file_path": "app/api/recordings/[id]/route.ts", "description": "Get single recording" }, { "id": "api_delete_recording", "method": "DELETE", "path": "/api/recordings/[id]", "status": "PENDING", "file_path": "app/api/recordings/[id]/route.ts", "description": "Delete recording" }, { "id": "api_transcribe_recording", "method": "POST", "path": "/api/recordings/[id]/transcribe", "status": "PENDING", "file_path": "app/api/recordings/[id]/transcribe/route.ts", "description": "Transcribe recording" }, { "id": "api_summarize_recording", "method": "POST", "path": "/api/recordings/[id]/summarize", "status": "PENDING", "file_path": "app/api/recordings/[id]/summarize/route.ts", "description": "Summarize recording" }, { "id": "api_list_apps", "method": "GET", "path": "/api/apps", "status": "PENDING", "file_path": "app/api/apps/route.ts", "description": "List generated apps" }, { "id": "api_generate_app", "method": "POST", "path": "/api/apps/generate", "status": "PENDING", "file_path": "app/api/apps/generate/route.ts", "description": "Generate app from recording" }, { "id": "api_get_app", "method": "GET", "path": "/api/apps/[id]", "status": "PENDING", "file_path": "app/api/apps/[id]/route.ts", "description": "Get single generated app" }, { "id": "api_delete_app", "method": "DELETE", "path": "/api/apps/[id]", "status": "PENDING", "file_path": "app/api/apps/[id]/route.ts", "description": "Delete generated app" } ], "components": [ { "id": "component_header", "name": "Header", "status": "PENDING", "file_path": "app/components/Header.tsx", "description": "Navigation header" }, { "id": "component_sidebar", "name": "Sidebar", "status": "PENDING", "file_path": "app/components/Sidebar.tsx", "description": "Navigation sidebar" }, { "id": "component_hero", "name": "Hero", "status": "PENDING", "file_path": "app/components/Hero.tsx", "description": "Hero section for landing page" }, { "id": "component_features", "name": "Features", "status": "PENDING", "file_path": "app/components/Features.tsx", "description": "Features section for landing page" }, { "id": "component_login_form", "name": "LoginForm", "status": "PENDING", "file_path": "app/components/LoginForm.tsx", "description": "Email/password login form" }, { "id": "component_register_form", "name": "RegisterForm", "status": "PENDING", "file_path": "app/components/RegisterForm.tsx", "description": "Registration form" }, { "id": "component_record_button", "name": "RecordButton", "status": "PENDING", "file_path": "app/components/RecordButton.tsx", "description": "Main record/stop button" }, { "id": "component_wake_word_indicator", "name": "WakeWordIndicator", "status": "PENDING", "file_path": "app/components/WakeWordIndicator.tsx", "description": "Shows wake word listening status" }, { "id": "component_recording_list", "name": "RecordingList", "status": "PENDING", "file_path": "app/components/RecordingList.tsx", "description": "List of recordings" }, { "id": "component_recording_card", "name": "RecordingCard", "status": "PENDING", "file_path": "app/components/RecordingCard.tsx", "description": "Single recording preview" }, { "id": "component_audio_player", "name": "AudioPlayer", "status": "PENDING", "file_path": "app/components/AudioPlayer.tsx", "description": "Audio playback controls" }, { "id": "component_transcript_viewer", "name": "TranscriptViewer", "status": "PENDING", "file_path": "app/components/TranscriptViewer.tsx", "description": "Show live/final transcript" }, { "id": "component_summary_display", "name": "SummaryDisplay", "status": "PENDING", "file_path": "app/components/SummaryDisplay.tsx", "description": "Show AI summary" }, { "id": "component_app_gallery", "name": "AppGallery", "status": "PENDING", "file_path": "app/components/AppGallery.tsx", "description": "Grid of generated apps" }, { "id": "component_app_card", "name": "AppCard", "status": "PENDING", "file_path": "app/components/AppCard.tsx", "description": "Single app preview card" }, { "id": "component_app_iframe_viewer", "name": "AppIframeViewer", "status": "PENDING", "file_path": "app/components/AppIframeViewer.tsx", "description": "Iframe to display generated app" } ], "pages": [ { "id": "page_home", "name": "Home", "status": "PENDING", "file_path": "app/page.tsx", "description": "Landing page for non-authenticated users" }, { "id": "page_login", "name": "Login", "status": "PENDING", "file_path": "app/login/page.tsx", "description": "Login page" }, { "id": "page_register", "name": "Register", "status": "PENDING", "file_path": "app/register/page.tsx", "description": "Registration page" }, { "id": "page_dashboard", "name": "Dashboard", "status": "PENDING", "file_path": "app/dashboard/page.tsx", "description": "Main dashboard with recording controls" }, { "id": "page_recordings", "name": "Recordings", "status": "PENDING", "file_path": "app/recordings/page.tsx", "description": "Recordings list" }, { "id": "page_recording_detail", "name": "Recording Detail", "status": "PENDING", "file_path": "app/recordings/[id]/page.tsx", "description": "Recording detail with transcript/summary" }, { "id": "page_apps", "name": "Generated Apps", "status": "PENDING", "file_path": "app/apps/page.tsx", "description": "Generated apps gallery" }, { "id": "page_app_detail", "name": "App Preview", "status": "PENDING", "file_path": "app/apps/[id]/page.tsx", "description": "App preview in iframe" } ] } }