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>
4.3 KiB
4.3 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_1_task_1 | sprint_4_story_1 | sprint_4 | not_started | frontend | Frontend Developer 1 | 2025-11-05 | 4 |
Task 1: Create Story Detail Page Route and Layout
Description
Create the Story detail page route at app/(dashboard)/stories/[id]/page.tsx with a two-column layout structure. This task establishes the foundational page structure that will be enhanced with components in subsequent tasks.
What to Do
- Create new directory:
app/(dashboard)/stories/[id]/ - Create page component:
page.tsx - Copy layout structure from Epic detail page (
app/(dashboard)/epics/[id]/page.tsx) - Implement two-column grid layout (main content + sidebar)
- Add basic page wrapper and container
- Set up TypeScript types and props
- Test route accessibility
Key Changes from Epic Page:
- Route:
/stories/[id]instead of/epics/[id] - Page title: "Story Detail" instead of "Epic Detail"
- Breadcrumb: Add Story level in hierarchy
- Prepare sections: Description, Acceptance Criteria (placeholder), Tasks (placeholder for Story 2)
Files to Modify/Create
app/(dashboard)/stories/[id]/page.tsx(new, ~100 lines initial structure)
Implementation Details
// app/(dashboard)/stories/[id]/page.tsx
import { Suspense } from 'react';
import { notFound } from 'next/navigation';
import { Card } from '@/components/ui/card';
import { Skeleton } from '@/components/ui/skeleton';
interface StoryDetailPageProps {
params: { id: string };
}
export default function StoryDetailPage({ params }: StoryDetailPageProps) {
return (
<div className="container mx-auto px-4 py-6 max-w-7xl">
{/* Breadcrumb Navigation - Task 1 */}
<div className="mb-4">
{/* Placeholder for breadcrumb */}
</div>
{/* Story Header - Task 2 */}
<div className="mb-6">
{/* Placeholder for story header */}
</div>
{/* Two-column layout */}
<div className="grid grid-cols-1 lg:grid-cols-[1fr_320px] gap-6">
{/* Main Content Column */}
<div className="space-y-6">
{/* Story Description Card */}
<Card className="p-6">
{/* Placeholder for description - Task 4 */}
</Card>
{/* Acceptance Criteria Card */}
<Card className="p-6">
{/* Placeholder for acceptance criteria - Story 3 */}
</Card>
{/* Tasks Section - Story 2 dependency */}
<Card className="p-6">
{/* Placeholder for tasks list - Story 2 */}
</Card>
</div>
{/* Metadata Sidebar Column - Task 3 */}
<aside>
{/* Placeholder for metadata sidebar */}
</aside>
</div>
</div>
);
}
// Loading state
export function StoryDetailPageSkeleton() {
return (
<div className="container mx-auto px-4 py-6 max-w-7xl">
<Skeleton className="h-4 w-64 mb-4" />
<Skeleton className="h-12 w-96 mb-6" />
<div className="grid grid-cols-1 lg:grid-cols-[1fr_320px] gap-6">
<div className="space-y-6">
<Skeleton className="h-48 w-full" />
<Skeleton className="h-32 w-full" />
<Skeleton className="h-64 w-full" />
</div>
<Skeleton className="h-96 w-full" />
</div>
</div>
);
}
Acceptance Criteria
- Route
/stories/[id]is accessible (no 404 error) - Page renders with two-column layout on desktop
- Layout is responsive (single column on mobile)
- TypeScript types are properly defined
- No console errors or warnings
- Loading skeleton displays during data fetch
Testing
# Start dev server
npm run dev
# Test route
# Navigate to: http://localhost:3000/stories/[any-valid-story-id]
# Should see basic page structure (not 404)
# Test responsive layout
# Resize browser window
# Desktop (> 1024px): Two columns
# Mobile (< 1024px): Single column
Dependencies
Prerequisites:
- ✅ Next.js 15 app directory structure
- ✅ shadcn/ui Card and Skeleton components
Blocks:
- Task 2, 3, 4, 5, 6 (all depend on page structure existing)
Estimated Time
4 hours
Notes
This task creates the "skeleton" of the Story detail page. Subsequent tasks will fill in the components and functionality. Keep the structure simple and focus on layout correctness.