Created comprehensive Story and Task files for Sprint 4 frontend implementation: Story 1: Story Detail Page Foundation (P0 Critical - 3 days) - 6 tasks: route creation, header, sidebar, data loading, Edit/Delete, responsive design - Fixes critical 404 error when clicking Story cards - Two-column layout consistent with Epic detail page Story 2: Task Management in Story Detail (P0 Critical - 2 days) - 6 tasks: API verification, hooks, TaskList, TaskCard, TaskForm, integration - Complete Task CRUD with checkbox status toggle - Filters, sorting, and optimistic UI updates Story 3: Enhanced Story Form (P1 High - 2 days) - 6 tasks: acceptance criteria, assignee selector, tags, story points, integration - Aligns with UX design specification - Backward compatible with existing Stories Story 4: Quick Add Story Workflow (P1 High - 2 days) - 5 tasks: inline form, keyboard shortcuts, batch creation, navigation - Rapid Story creation with minimal fields - Keyboard shortcut (Cmd/Ctrl + N) Story 5: Story Card Component (P2 Medium - 1 day) - 4 tasks: component variants, visual states, Task count, optimization - Reusable component with list/kanban/compact variants - React.memo optimization Story 6: Kanban Story Creation Enhancement (P2 Optional - 2 days) - 4 tasks: Epic card enhancement, inline form, animation, real-time updates - Contextual Story creation from Kanban - Stretch goal - implement only if ahead of schedule Total: 6 Stories, 31 Tasks, 12 days estimated Priority breakdown: P0 (2), P1 (2), P2 (2 optional) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.1 KiB
task_id, story_id, sprint_id, status, type, assignee, created_date, estimated_hours
| task_id | story_id | sprint_id | status | type | assignee | created_date | estimated_hours |
|---|---|---|---|---|---|---|---|
| sprint_4_story_2_task_1 | sprint_4_story_2 | sprint_4 | not_started | frontend | Frontend Developer 2 | 2025-11-05 | 2 |
Task 1: Verify Task API Endpoints and Create Task Types
Description
Verify that all Task API endpoints are working correctly and create TypeScript types for Task entities. This task ensures the backend is ready and establishes the type-safe foundation for Task management.
What to Do
- Test Task API endpoints using Postman or Swagger
- Verify GET /api/v1/stories/{storyId}/tasks returns Task list
- Verify POST /api/v1/tasks creates Task correctly
- Verify PUT /api/v1/tasks/{id} updates Task
- Verify DELETE /api/v1/tasks/{id} deletes Task
- Verify PUT /api/v1/tasks/{id}/status changes status
- Check multi-tenant isolation (cannot access other tenant Tasks)
- Add Task types to
types/project.ts - Document any API quirks or issues
Files to Create/Modify
types/project.ts(modify, add Task types ~50 lines)
Implementation Details
// types/project.ts
// Add these Task types
export interface Task {
id: string;
title: string;
description?: string;
storyId: string;
projectId: string;
status: WorkItemStatus;
priority: WorkItemPriority;
estimatedHours?: number;
actualHours?: number;
assigneeId?: string;
tenantId: string;
createdAt: string;
updatedAt: string;
createdBy?: string;
updatedBy?: string;
}
export interface CreateTaskDto {
storyId: string;
projectId?: string; // May be auto-filled from Story
title: string;
description?: string;
priority: WorkItemPriority;
estimatedHours?: number;
createdBy: string;
}
export interface UpdateTaskDto {
title?: string;
description?: string;
priority?: WorkItemPriority;
estimatedHours?: number;
actualHours?: number;
}
export interface ChangeTaskStatusDto {
status: WorkItemStatus;
}
export interface AssignTaskDto {
assigneeId: string;
}
// Add Task to existing types if needed
export interface Story {
// ... existing fields
taskCount?: number; // Optional: count of Tasks
tasks?: Task[]; // Optional: nested Tasks
}
API Testing Checklist
GET /api/v1/stories/{storyId}/tasks - List Tasks:
# Expected: 200 OK, array of Tasks
curl -H "Authorization: Bearer {token}" \
GET https://api.colaflow.com/api/v1/stories/{storyId}/tasks
# Test cases:
# - Valid storyId → Returns tasks array
# - Empty story → Returns []
# - Invalid storyId → Returns 404
# - Other tenant story → Returns 403 or empty array
POST /api/v1/tasks - Create Task:
# Expected: 201 Created, Task object
curl -H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"storyId": "story-123",
"title": "Implement login API",
"description": "Create POST /auth/login endpoint",
"priority": "High",
"estimatedHours": 8,
"createdBy": "user-123"
}' \
POST https://api.colaflow.com/api/v1/tasks
# Test cases:
# - Valid data → Creates task
# - Missing title → Returns 400 validation error
# - Invalid storyId → Returns 404 or 400
# - Missing storyId → Returns 400
PUT /api/v1/tasks/{id} - Update Task:
# Expected: 200 OK, updated Task object
curl -H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"title": "Updated title",
"priority": "Critical"
}' \
PUT https://api.colaflow.com/api/v1/tasks/{id}
# Test cases:
# - Valid update → Returns updated task
# - Invalid taskId → Returns 404
# - Other tenant task → Returns 403
DELETE /api/v1/tasks/{id} - Delete Task:
# Expected: 204 No Content or 200 OK
curl -H "Authorization: Bearer {token}" \
DELETE https://api.colaflow.com/api/v1/tasks/{id}
# Test cases:
# - Valid taskId → Deletes task
# - Invalid taskId → Returns 404
# - Other tenant task → Returns 403
PUT /api/v1/tasks/{id}/status - Change Status:
# Expected: 200 OK, updated Task object
curl -H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"status": "Done"
}' \
PUT https://api.colaflow.com/api/v1/tasks/{id}/status
# Test cases:
# - Valid status → Updates status
# - Invalid status → Returns 400
# - Other tenant task → Returns 403
Acceptance Criteria
- All Task API endpoints tested and working
- GET endpoint returns Task list for Story
- POST endpoint creates Task successfully
- PUT endpoint updates Task correctly
- DELETE endpoint removes Task
- Status change endpoint works
- Multi-tenant isolation verified (cannot access other tenant Tasks)
- Task types added to
types/project.ts - All Task fields properly typed
- CreateTaskDto, UpdateTaskDto, ChangeTaskStatusDto defined
- API quirks documented (if any)
Testing
Postman/Swagger Testing:
- Import Task API collection (if available)
- Test each endpoint with valid data
- Test error cases (invalid IDs, missing fields, validation)
- Verify responses match TypeScript types
- Document any discrepancies
Expected API Behavior:
- All endpoints require authentication (JWT token)
- All endpoints respect multi-tenant isolation (TenantId filter)
- Validation errors return 400 with error details
- Not found errors return 404
- Forbidden errors return 403
- Successful creates return 201 Created
- Successful updates/deletes return 200 OK or 204 No Content
Dependencies
Prerequisites:
- ✅ Task API ready (TasksController.cs)
- ✅ JWT authentication working
- ✅ Postman or Swagger access
Blocks:
- Task 2 (API client depends on verified endpoints)
Estimated Time
2 hours
Notes
Document API Issues: If you find any API issues, document them clearly:
- Missing fields in response
- Unexpected validation rules
- Incorrect HTTP status codes
- Multi-tenant isolation not working
- Performance issues (slow responses)
Communicate with Backend: If API endpoints are not ready or have issues, immediately notify Backend team and Product Manager. This is a blocker for Story 2.
Fallback Plan: If Task API is not ready, frontend can proceed with mock data for development, but API must be ready before Story 2 completion.