Add websitebuilder app
This commit is contained in:
28
.tmp/tasks/phase2-core-features/subtask_01.json
Normal file
28
.tmp/tasks/phase2-core-features/subtask_01.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": "phase2-core-features-01",
|
||||
"seq": "01",
|
||||
"title": "Create organization CRUD APIs",
|
||||
"status": "completed",
|
||||
"depends_on": [],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/SPECIFICATION.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"POST /api/organizations creates organization with valid data",
|
||||
"GET /api/organizations returns user's organizations",
|
||||
"GET /api/organizations/:id returns single organization",
|
||||
"PATCH /api/organizations/:id updates organization fields",
|
||||
"DELETE /api/organizations/:id soft deletes organization",
|
||||
"All endpoints validate user permissions",
|
||||
"APIs return proper error responses"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/organizations/route.ts",
|
||||
"src/app/api/organizations/[id]/route.ts",
|
||||
"src/services/organization.service.ts",
|
||||
"src/lib/db/schema.ts (organizations table)",
|
||||
"src/middleware.ts (updated for org permissions)"
|
||||
]
|
||||
}
|
||||
27
.tmp/tasks/phase2-core-features/subtask_02.json
Normal file
27
.tmp/tasks/phase2-core-features/subtask_02.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"id": "phase2-core-features-02",
|
||||
"seq": "02",
|
||||
"title": "Create organization member management APIs",
|
||||
"status": "completed",
|
||||
"depends_on": ["01"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/SPECIFICATION.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"POST /api/organizations/:id/members invites new member",
|
||||
"GET /api/organizations/:id/members returns all members",
|
||||
"PATCH /api/organizations/:id/members/:memberId updates member role",
|
||||
"DELETE /api/organizations/:id/members/:memberId removes member",
|
||||
"Only owners/admins can manage members",
|
||||
"Members can view their own organization",
|
||||
"Role-based permissions enforced"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/organizations/[id]/members/route.ts",
|
||||
"src/app/api/organizations/[id]/members/[memberId]/route.ts",
|
||||
"src/services/organization-member.service.ts",
|
||||
"src/lib/db/schema.ts (organization_members table)"
|
||||
]
|
||||
}
|
||||
29
.tmp/tasks/phase2-core-features/subtask_03.json
Normal file
29
.tmp/tasks/phase2-core-features/subtask_03.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"id": "phase2-core-features-03",
|
||||
"seq": "03",
|
||||
"title": "Create organization management UI",
|
||||
"status": "completed",
|
||||
"depends_on": ["01", "02"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Organization creation form validates input",
|
||||
"Organization dashboard displays org details",
|
||||
"Member management page lists all members",
|
||||
"Member role update works correctly",
|
||||
"Member removal requires confirmation",
|
||||
"Organization settings page updates org info",
|
||||
"UI handles loading and error states"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/dashboard/organizations/new/page.tsx",
|
||||
"src/app/dashboard/organizations/[id]/page.tsx",
|
||||
"src/app/dashboard/organizations/[id]/members/page.tsx",
|
||||
"src/app/dashboard/organizations/[id]/settings/page.tsx",
|
||||
"src/components/organizations/OrganizationForm.tsx",
|
||||
"src/components/organizations/MemberList.tsx",
|
||||
"src/components/organizations/MemberActions.tsx"
|
||||
]
|
||||
}
|
||||
27
.tmp/tasks/phase2-core-features/subtask_04.json
Normal file
27
.tmp/tasks/phase2-core-features/subtask_04.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"id": "phase2-core-features-04",
|
||||
"seq": "04",
|
||||
"title": "Create project CRUD APIs",
|
||||
"status": "completed",
|
||||
"depends_on": ["01"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/SPECIFICATION.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"POST /api/projects creates project in organization",
|
||||
"GET /api/projects returns user's accessible projects",
|
||||
"GET /api/projects/:id returns single project",
|
||||
"PATCH /api/projects/:id updates project fields",
|
||||
"DELETE /api/projects/:id soft deletes project",
|
||||
"Projects scoped to organization",
|
||||
"Slug uniqueness enforced per organization"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/projects/route.ts",
|
||||
"src/app/api/projects/[id]/route.ts",
|
||||
"src/services/project.service.ts",
|
||||
"src/lib/db/schema.ts (projects table)"
|
||||
]
|
||||
}
|
||||
29
.tmp/tasks/phase2-core-features/subtask_05.json
Normal file
29
.tmp/tasks/phase2-core-features/subtask_05.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"id": "phase2-core-features-05",
|
||||
"seq": "05",
|
||||
"title": "Create project management UI",
|
||||
"status": "completed",
|
||||
"depends_on": ["04"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Project creation form validates input",
|
||||
"Project list page displays all projects",
|
||||
"Project dashboard shows project details",
|
||||
"Project settings page updates project info",
|
||||
"Project deletion requires confirmation",
|
||||
"UI filters projects by organization",
|
||||
"Loading and error states handled"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/dashboard/projects/new/page.tsx",
|
||||
"src/app/dashboard/projects/page.tsx",
|
||||
"src/app/dashboard/projects/[id]/page.tsx",
|
||||
"src/app/dashboard/projects/[id]/settings/page.tsx",
|
||||
"src/components/projects/ProjectForm.tsx",
|
||||
"src/components/projects/ProjectList.tsx",
|
||||
"src/components/projects/ProjectCard.tsx"
|
||||
]
|
||||
}
|
||||
26
.tmp/tasks/phase2-core-features/subtask_06.json
Normal file
26
.tmp/tasks/phase2-core-features/subtask_06.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "phase2-core-features-06",
|
||||
"seq": "06",
|
||||
"title": "Implement project templates system",
|
||||
"status": "completed",
|
||||
"depends_on": ["04"],
|
||||
"parallel": true,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Template system defined with default templates",
|
||||
"Template selection UI displays available templates",
|
||||
"Template preview shows template structure",
|
||||
"Template customization allows modifying defaults",
|
||||
"Project creation uses selected template",
|
||||
"Templates include starter files and configuration"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/lib/templates/index.ts",
|
||||
"src/lib/templates/default-templates.ts",
|
||||
"src/components/projects/TemplateSelector.tsx",
|
||||
"src/components/projects/TemplatePreview.tsx",
|
||||
"src/services/template.service.ts"
|
||||
]
|
||||
}
|
||||
26
.tmp/tasks/phase2-core-features/subtask_07.json
Normal file
26
.tmp/tasks/phase2-core-features/subtask_07.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "phase2-core-features-07",
|
||||
"seq": "07",
|
||||
"title": "Create chat CRUD APIs",
|
||||
"status": "completed",
|
||||
"depends_on": ["04"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/SPECIFICATION.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"POST /api/projects/:id/chats creates new chat",
|
||||
"GET /api/projects/:id/chats returns project chats",
|
||||
"GET /api/chats/:id returns single chat",
|
||||
"DELETE /api/chats/:id deletes chat",
|
||||
"Chats scoped to project",
|
||||
"Chat title auto-generated from first message"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/projects/[id]/chats/route.ts",
|
||||
"src/app/api/chats/[id]/route.ts",
|
||||
"src/services/chat.service.ts",
|
||||
"src/lib/db/schema.ts (chats table)"
|
||||
]
|
||||
}
|
||||
26
.tmp/tasks/phase2-core-features/subtask_08.json
Normal file
26
.tmp/tasks/phase2-core-features/subtask_08.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "phase2-core-features-08",
|
||||
"seq": "08",
|
||||
"title": "Create message APIs with streaming",
|
||||
"status": "pending",
|
||||
"depends_on": ["07"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/SPECIFICATION.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"POST /api/chats/:id/messages creates user message",
|
||||
"GET /api/chats/:id/messages returns chat messages",
|
||||
"Message streaming endpoint returns chunks",
|
||||
"Messages stored with metadata (tokens, tool calls)",
|
||||
"Message order preserved by timestamp",
|
||||
"Streaming handles connection errors"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/chats/[id]/messages/route.ts",
|
||||
"src/app/api/chats/[id]/messages/stream/route.ts",
|
||||
"src/services/message.service.ts",
|
||||
"src/lib/db/schema.ts (messages table)"
|
||||
]
|
||||
}
|
||||
29
.tmp/tasks/phase2-core-features/subtask_09.json
Normal file
29
.tmp/tasks/phase2-core-features/subtask_09.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"id": "phase2-core-features-09",
|
||||
"seq": "09",
|
||||
"title": "Create chat UI components",
|
||||
"status": "pending",
|
||||
"depends_on": ["07", "08"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Chat interface displays message list",
|
||||
"Message input supports multiline text",
|
||||
"User and assistant messages styled differently",
|
||||
"Chat history sidebar shows all chats",
|
||||
"New chat button creates fresh conversation",
|
||||
"Chat deletion requires confirmation",
|
||||
"Auto-scroll to latest message"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/dashboard/projects/[id]/chat/page.tsx",
|
||||
"src/components/chat/ChatInterface.tsx",
|
||||
"src/components/chat/MessageList.tsx",
|
||||
"src/components/chat/MessageItem.tsx",
|
||||
"src/components/chat/MessageInput.tsx",
|
||||
"src/components/chat/ChatSidebar.tsx",
|
||||
"src/components/chat/ChatHistory.tsx"
|
||||
]
|
||||
}
|
||||
26
.tmp/tasks/phase2-core-features/subtask_10.json
Normal file
26
.tmp/tasks/phase2-core-features/subtask_10.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "phase2-core-features-10",
|
||||
"seq": "10",
|
||||
"title": "Implement real-time chat updates",
|
||||
"status": "pending",
|
||||
"depends_on": ["08", "09"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Real-time message streaming works",
|
||||
"Typing indicators display for AI responses",
|
||||
"Connection status shown (connected/disconnected)",
|
||||
"Reconnection logic handles disconnects",
|
||||
"Message updates reflect in real-time",
|
||||
"Streaming errors handled gracefully"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/lib/websocket/chat-socket.ts",
|
||||
"src/components/chat/StreamingMessage.tsx",
|
||||
"src/components/chat/TypingIndicator.tsx",
|
||||
"src/components/chat/ConnectionStatus.tsx",
|
||||
"src/hooks/useChatStream.ts"
|
||||
]
|
||||
}
|
||||
29
.tmp/tasks/phase2-core-features/subtask_11.json
Normal file
29
.tmp/tasks/phase2-core-features/subtask_11.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"id": "phase2-core-features-11",
|
||||
"seq": "11",
|
||||
"title": "Create AI provider configuration",
|
||||
"status": "pending",
|
||||
"depends_on": [],
|
||||
"parallel": true,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/SPECIFICATION.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"AI provider interfaces defined",
|
||||
"OpenAI provider configured",
|
||||
"Anthropic provider configured",
|
||||
"Google provider configured",
|
||||
"Custom provider support added",
|
||||
"Provider selection works correctly",
|
||||
"API key management per provider"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/lib/ai/providers/index.ts",
|
||||
"src/lib/ai/providers/openai.ts",
|
||||
"src/lib/ai/providers/anthropic.ts",
|
||||
"src/lib/ai/providers/google.ts",
|
||||
"src/lib/ai/providers/types.ts",
|
||||
"src/lib/db/schema.ts (ai_providers, ai_models tables)"
|
||||
]
|
||||
}
|
||||
27
.tmp/tasks/phase2-core-features/subtask_12.json
Normal file
27
.tmp/tasks/phase2-core-features/subtask_12.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"id": "phase2-core-features-12",
|
||||
"seq": "12",
|
||||
"title": "Create AI service with streaming",
|
||||
"status": "pending",
|
||||
"depends_on": ["11"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"AI client factory creates provider clients",
|
||||
"Message streaming implemented",
|
||||
"Tool calls handled correctly",
|
||||
"Context window managed properly",
|
||||
"Token counting works",
|
||||
"Streaming errors handled",
|
||||
"Rate limiting applied"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/services/ai.service.ts",
|
||||
"src/lib/ai/client-factory.ts",
|
||||
"src/lib/ai/stream-handler.ts",
|
||||
"src/lib/ai/token-counter.ts",
|
||||
"src/lib/ai/context-manager.ts"
|
||||
]
|
||||
}
|
||||
29
.tmp/tasks/phase2-core-features/subtask_13.json
Normal file
29
.tmp/tasks/phase2-core-features/subtask_13.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"id": "phase2-core-features-13",
|
||||
"seq": "13",
|
||||
"title": "Create AI model management APIs and UI",
|
||||
"status": "pending",
|
||||
"depends_on": ["11"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"GET /api/ai/models returns available models",
|
||||
"GET /api/ai/providers returns configured providers",
|
||||
"User API key management works",
|
||||
"Model selection UI displays options",
|
||||
"API key input validates format",
|
||||
"Keys encrypted in database",
|
||||
"Active provider shown in UI"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/ai/models/route.ts",
|
||||
"src/app/api/ai/providers/route.ts",
|
||||
"src/app/api/ai/keys/route.ts",
|
||||
"src/components/ai/ModelSelector.tsx",
|
||||
"src/components/ai/ApiKeyManager.tsx",
|
||||
"src/services/ai-key.service.ts",
|
||||
"src/lib/db/schema.ts (user_api_keys table)"
|
||||
]
|
||||
}
|
||||
27
.tmp/tasks/phase2-core-features/subtask_14.json
Normal file
27
.tmp/tasks/phase2-core-features/subtask_14.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"id": "phase2-core-features-14",
|
||||
"seq": "14",
|
||||
"title": "Implement AI code generation",
|
||||
"status": "pending",
|
||||
"depends_on": ["12", "13"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Code generation prompts defined",
|
||||
"Generated code parsed correctly",
|
||||
"File operations handled (create/update)",
|
||||
"Code validation runs before applying",
|
||||
"Syntax errors caught and reported",
|
||||
"Code formatting applied",
|
||||
"Generation history tracked"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/lib/ai/prompts/code-generation.ts",
|
||||
"src/lib/ai/code-parser.ts",
|
||||
"src/lib/ai/code-validator.ts",
|
||||
"src/services/code-generation.service.ts",
|
||||
"src/components/ai/CodeGenerationPanel.tsx"
|
||||
]
|
||||
}
|
||||
26
.tmp/tasks/phase2-core-features/subtask_15.json
Normal file
26
.tmp/tasks/phase2-core-features/subtask_15.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "phase2-core-features-15",
|
||||
"seq": "15",
|
||||
"title": "Integrate Monaco Editor",
|
||||
"status": "pending",
|
||||
"depends_on": [],
|
||||
"parallel": true,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"@monaco-editor/react installed",
|
||||
"Monaco Editor configured",
|
||||
"Syntax highlighting works for multiple languages",
|
||||
"Auto-completion enabled",
|
||||
"Theme customization works",
|
||||
"Editor resizes correctly",
|
||||
"Keyboard shortcuts functional"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/components/editor/MonacoEditor.tsx",
|
||||
"src/lib/monaco/config.ts",
|
||||
"src/lib/monaco/themes.ts",
|
||||
"src/lib/monaco/languages.ts"
|
||||
]
|
||||
}
|
||||
26
.tmp/tasks/phase2-core-features/subtask_16.json
Normal file
26
.tmp/tasks/phase2-core-features/subtask_16.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "phase2-core-features-16",
|
||||
"seq": "16",
|
||||
"title": "Create file management APIs",
|
||||
"status": "pending",
|
||||
"depends_on": ["04"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"GET /api/projects/:id/files returns file tree",
|
||||
"GET /api/projects/:id/files/* returns file content",
|
||||
"PUT /api/projects/:id/files/* creates/updates file",
|
||||
"DELETE /api/projects/:id/files/* deletes file",
|
||||
"File paths validated",
|
||||
"File size limits enforced",
|
||||
"Binary files handled correctly"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/projects/[id]/files/route.ts",
|
||||
"src/app/api/projects/[id]/files/[...path]/route.ts",
|
||||
"src/services/file.service.ts",
|
||||
"src/lib/storage/file-storage.ts"
|
||||
]
|
||||
}
|
||||
29
.tmp/tasks/phase2-core-features/subtask_17.json
Normal file
29
.tmp/tasks/phase2-core-features/subtask_17.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"id": "phase2-core-features-17",
|
||||
"seq": "17",
|
||||
"title": "Create file management UI",
|
||||
"status": "pending",
|
||||
"depends_on": ["15", "16"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"File tree displays project structure",
|
||||
"File editor opens selected file",
|
||||
"File creation dialog works",
|
||||
"File deletion requires confirmation",
|
||||
"File search filters results",
|
||||
"File tabs allow switching between files",
|
||||
"Unsaved changes indicator shown"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/dashboard/projects/[id]/editor/page.tsx",
|
||||
"src/components/editor/FileTree.tsx",
|
||||
"src/components/editor/FileEditor.tsx",
|
||||
"src/components/editor/FileTabs.tsx",
|
||||
"src/components/editor/CreateFileDialog.tsx",
|
||||
"src/components/editor/FileSearch.tsx",
|
||||
"src/hooks/useFileOperations.ts"
|
||||
]
|
||||
}
|
||||
26
.tmp/tasks/phase2-core-features/subtask_18.json
Normal file
26
.tmp/tasks/phase2-core-features/subtask_18.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "phase2-core-features-18",
|
||||
"seq": "18",
|
||||
"title": "Implement file operations",
|
||||
"status": "pending",
|
||||
"depends_on": ["16", "17"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Create file operation works",
|
||||
"Update file operation saves changes",
|
||||
"Delete file operation removes file",
|
||||
"Rename file operation updates path",
|
||||
"Move file operation changes location",
|
||||
"Operations validate permissions",
|
||||
"Error messages displayed clearly"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/services/file-operations.service.ts",
|
||||
"src/components/editor/RenameFileDialog.tsx",
|
||||
"src/components/editor/MoveFileDialog.tsx",
|
||||
"src/hooks/useFileOperations.ts (updated)"
|
||||
]
|
||||
}
|
||||
24
.tmp/tasks/phase2-core-features/subtask_19.json
Normal file
24
.tmp/tasks/phase2-core-features/subtask_19.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"id": "phase2-core-features-19",
|
||||
"seq": "19",
|
||||
"title": "Create preview API",
|
||||
"status": "pending",
|
||||
"depends_on": ["04"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"GET /api/projects/:id/preview returns preview URL",
|
||||
"Preview URL generated correctly",
|
||||
"Preview updates trigger refresh",
|
||||
"Preview authentication handled",
|
||||
"Preview timeout configured",
|
||||
"Error responses returned properly"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/projects/[id]/preview/route.ts",
|
||||
"src/services/preview.service.ts",
|
||||
"src/lib/preview/url-generator.ts"
|
||||
]
|
||||
}
|
||||
27
.tmp/tasks/phase2-core-features/subtask_20.json
Normal file
27
.tmp/tasks/phase2-core-features/subtask_20.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"id": "phase2-core-features-20",
|
||||
"seq": "20",
|
||||
"title": "Create preview UI components",
|
||||
"status": "pending",
|
||||
"depends_on": ["19"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Preview iframe displays project",
|
||||
"Responsive device toggle works (desktop/tablet/mobile)",
|
||||
"Refresh button reloads preview",
|
||||
"Open in new tab button works",
|
||||
"Loading state shown during load",
|
||||
"Error state displayed on failure",
|
||||
"Preview URL displayed"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/dashboard/projects/[id]/preview/page.tsx",
|
||||
"src/components/preview/PreviewFrame.tsx",
|
||||
"src/components/preview/DeviceToggle.tsx",
|
||||
"src/components/preview/PreviewControls.tsx",
|
||||
"src/components/preview/PreviewUrl.tsx"
|
||||
]
|
||||
}
|
||||
27
.tmp/tasks/phase2-core-features/subtask_21.json
Normal file
27
.tmp/tasks/phase2-core-features/subtask_21.json
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"id": "phase2-core-features-21",
|
||||
"seq": "21",
|
||||
"title": "Implement live preview with auto-refresh",
|
||||
"status": "pending",
|
||||
"depends_on": ["18", "20"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Auto-refresh triggers on file save",
|
||||
"Hot module replacement works",
|
||||
"Debounce prevents excessive refreshes",
|
||||
"Manual refresh available",
|
||||
"Refresh status indicator shown",
|
||||
"Build errors displayed in preview",
|
||||
"Connection errors handled gracefully"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/lib/preview/hot-reload.ts",
|
||||
"src/lib/preview/debounce.ts",
|
||||
"src/components/preview/LivePreview.tsx",
|
||||
"src/components/preview/RefreshIndicator.tsx",
|
||||
"src/hooks/useLivePreview.ts"
|
||||
]
|
||||
}
|
||||
28
.tmp/tasks/phase2-core-features/subtask_22.json
Normal file
28
.tmp/tasks/phase2-core-features/subtask_22.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": "phase2-core-features-22",
|
||||
"seq": "22",
|
||||
"title": "Create version control APIs",
|
||||
"status": "pending",
|
||||
"depends_on": ["04"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/SPECIFICATION.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"POST /api/projects/:id/versions creates version",
|
||||
"GET /api/projects/:id/versions returns version history",
|
||||
"GET /api/versions/:id returns version details",
|
||||
"POST /api/versions/:id/rollback restores version",
|
||||
"Version numbers auto-incremented",
|
||||
"Current version flag managed",
|
||||
"Rollback creates new version"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/api/projects/[id]/versions/route.ts",
|
||||
"src/app/api/versions/[id]/route.ts",
|
||||
"src/app/api/versions/[id]/rollback/route.ts",
|
||||
"src/services/version.service.ts",
|
||||
"src/lib/db/schema.ts (project_versions table)"
|
||||
]
|
||||
}
|
||||
28
.tmp/tasks/phase2-core-features/subtask_23.json
Normal file
28
.tmp/tasks/phase2-core-features/subtask_23.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"id": "phase2-core-features-23",
|
||||
"seq": "23",
|
||||
"title": "Create version control UI",
|
||||
"status": "pending",
|
||||
"depends_on": ["22"],
|
||||
"parallel": false,
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md"
|
||||
],
|
||||
"acceptance_criteria": [
|
||||
"Version history list displays all versions",
|
||||
"Version comparison shows differences",
|
||||
"Rollback confirmation dialog works",
|
||||
"Version tags displayed",
|
||||
"Current version highlighted",
|
||||
"Version details shown on click",
|
||||
"Rollback creates new version entry"
|
||||
],
|
||||
"deliverables": [
|
||||
"src/app/dashboard/projects/[id]/versions/page.tsx",
|
||||
"src/components/versions/VersionList.tsx",
|
||||
"src/components/versions/VersionComparison.tsx",
|
||||
"src/components/versions/RollbackDialog.tsx",
|
||||
"src/components/versions/VersionDetails.tsx",
|
||||
"src/components/versions/VersionTag.tsx"
|
||||
]
|
||||
}
|
||||
26
.tmp/tasks/phase2-core-features/task.json
Normal file
26
.tmp/tasks/phase2-core-features/task.json
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "phase2-core-features",
|
||||
"name": "Phase 2: Core Features",
|
||||
"status": "active",
|
||||
"objective": "Implement core features including organization management, project management, chat interface, AI integration, code editor, preview system, and version control",
|
||||
"context_files": [
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/.tmp/sessions/phase1-foundation/context.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/SPECIFICATION.md",
|
||||
"/Users/kunthawatgreethong/Gitea/moreminimore-vibe/Websitebuilder/TASKS.md",
|
||||
"/Users/kunthawatgreethong/.config/opencode/context/core/standards/code-quality.md",
|
||||
"/Users/kunthawatgreethong/.config/opencode/context/core/standards/test-coverage.md",
|
||||
"/Users/kunthawatgreethong/.config/opencode/context/core/essential-patterns.md"
|
||||
],
|
||||
"exit_criteria": [
|
||||
"Organization CRUD APIs and UI fully functional",
|
||||
"Project CRUD APIs and UI with template system",
|
||||
"Chat interface with real-time message streaming",
|
||||
"AI integration with multiple providers and code generation",
|
||||
"Monaco editor integrated with file management",
|
||||
"Live preview system with auto-refresh",
|
||||
"Version control with rollback functionality"
|
||||
],
|
||||
"subtask_count": 23,
|
||||
"completed_count": 0,
|
||||
"created_at": "2026-01-22T00:00:00Z"
|
||||
}
|
||||
Reference in New Issue
Block a user