Task Breakdown Template for Jira
A template for breaking down user stories into technical tasks. Helps teams identify implementation steps, dependencies, and technical requirements.
Quick links
Task Breakdown Template: From User Story to Implementation
Use this template to decompose a user story into concrete technical tasks. Each task should be 1-2 days of work.
Parent User Story
Ticket: PROJ-124
Title: "As a user, I can upload a PDF file from my device"
Assignee: @backend-team
Story Points: 5
Task Breakdown
Goal: Identify all work required to complete the user story
How to use: List each technical step, dependency, and subtask needed.
Task 1: Design & Plan API Endpoint
Ticket Type: Task
Assigned To: @backend-lead
Story Points: 2
Priority: High
Description: Design the POST /api/uploads endpoint specification. Define request/response format, file size limits, error handling, and authentication requirements.
Acceptance Criteria:
- API spec documented in OpenAPI/Swagger format
- Request payload defined (multipart/form-data with file, user_id, metadata)
- Response format defined (upload_id, status, url)
- Error cases documented (file too large, unsupported format, auth failure)
- Rate limiting rules defined (max 100 uploads/day per user)
- API spec reviewed and approved by tech lead
Dependencies: None
Blocking: Task 2 (Backend implementation)
Task 2: Implement Backend Upload Endpoint
Ticket Type: Task
Assigned To: @backend-engineer-1
Story Points: 3
Priority: High
Description: Implement the POST /api/uploads endpoint in Node.js. Accept file uploads, validate format, store to S3, and return upload_id.
Acceptance Criteria:
- Endpoint accepts multipart/form-data requests
- File type validation (only PDF, max 50MB)
- Files stored in S3 bucket (path: uploads//_)
- Returns 201 with upload_id and S3 URL
- Returns 400 for invalid file type
- Returns 413 for file too large
- Returns 401 for unauthenticated request
- Rate limiting enforced (100 uploads/user/day)
- All error responses include descriptive messages
- Unit tests written (>90% code coverage)
Dependencies: Task 1 (API spec), Database schema for uploads table
Blocking: Task 3 (Frontend integration)
Task 3: Implement Frontend Upload Component
Ticket Type: Task
Assigned To: @frontend-engineer-1
Story Points: 2
Priority: High
Description: Build React component for file upload. Include file picker, drag-and-drop, and basic validation.
Acceptance Criteria:
- File input element with accept="application/pdf"
- Drag-and-drop zone working
- Client-side validation (file type, size)
- Shows error messages for validation failures
- Component is accessible (ARIA labels, keyboard navigation)
- Component responsive (works on mobile & desktop)
- Unit tests written
- Storybook story created for QA preview
Dependencies: Task 2 (Backend endpoint ready)
Blocking: Task 4 (Upload progress)
Task 4: Add Upload Progress UI
Ticket Type: Task
Assigned To: @frontend-engineer-1
Story Points: 1
Priority: Medium
Description: Add progress bar and upload status messages to the upload component.
Acceptance Criteria:
- Progress bar shows upload % complete (via XMLHttpRequest progress events)
- Shows status text ("Uploading...", "Complete", "Failed")
- Displays file name and size
- Shows error message if upload fails
- Can cancel upload in progress
- Works on slow networks (simulate in Chrome DevTools)
Dependencies: Task 3 (Upload component)
Task 5: Add Error Handling & Retry Logic
Ticket Type: Task
Assigned To: @backend-engineer-2
Story Points: 2
Priority: Medium
Description: Implement retry logic for failed uploads. Add error tracking and logging.
Acceptance Criteria:
- Failed uploads trigger auto-retry (exponential backoff: 1s, 2s, 4s)
- Max 3 retry attempts before giving up
- Each attempt is logged with timestamp and error details
- User sees "Retrying..." status during auto-retry
- Manual retry button available after 3 failures
- Errors sent to error tracking service (Sentry)
- CloudWatch logs capture all errors
Dependencies: Tasks 2, 3, 4
Task 6: Add Security & Validation
Ticket Type: Task
Assigned To: @security-engineer (or backend lead)
Story Points: 2
Priority: High
Description: Add security measures: file validation, virus scanning, rate limiting, CORS headers.
Acceptance Criteria:
- Files scanned for malware (ClamAV or equivalent)
- Blocked files logged and reported
- CORS headers allow only our frontend domain
- Rate limiting enforced (100 uploads/user/day)
- Logs show all upload attempts
- User cannot upload files > 50MB
- User cannot upload non-PDF files
- Security review completed
Dependencies: Task 2
Task 7: Add Monitoring & Alerts
Ticket Type: Task
Assigned To: @devops
Story Points: 1
Priority: Medium
Description: Set up CloudWatch dashboards and alarms for upload metrics.
Acceptance Criteria:
- CloudWatch dashboard shows: upload success rate, avg upload time, error rate
- Alert if upload failure rate > 5% in 5 min
- Alert if avg upload time > 30 seconds
- Alert if S3 storage exceeds 100GB
- All metrics exported to Prometheus for long-term analytics
Dependencies: Task 2 (endpoint live)
Task 8: Documentation & Knowledge Transfer
Ticket Type: Task
Assigned To: @tech-writer
Story Points: 1
Priority: Medium
Description: Document the upload feature for users and internal teams.
Acceptance Criteria:
- User-facing help article: "How to upload files"
- Developer documentation: API spec, code examples
- Troubleshooting guide: common errors and solutions
- Video tutorial recorded (60 seconds)
- Internal wiki updated with architecture diagram
- Team trained on monitoring/alerting
Dependencies: All technical tasks complete
Task Dependency Diagram
Task 1 (API spec)
└─→ Task 2 (Backend) ──→ Task 3 (Frontend) ──→ Task 4 (Progress)
├─→ Task 5 (Error handling)
├─→ Task 6 (Security)
└─→ Task 7 (Monitoring)
Task 8 (Docs) — starts after all tasks
Summary Table
| Task | Owner | Points | Status | Depends On |
|---|---|---|---|---|
| API spec | @backend-lead | 2 | Ready | — |
| Backend impl | @backend-engineer-1 | 3 | Blocked | Task 1 |
| Frontend component | @frontend-engineer-1 | 2 | Blocked | Task 2 |
| Upload progress | @frontend-engineer-1 | 1 | Blocked | Task 3 |
| Error handling | @backend-engineer-2 | 2 | Blocked | Task 3 |
| Security | @security-engineer | 2 | Blocked | Task 2 |
| Monitoring | @devops | 1 | Blocked | Task 2 |
| Documentation | @tech-writer | 1 | Blocked | Task 8 |
Total Story Points: 14 (note: parent story was 5 points, but actual work is 14)
Execution Tips
Start Date: Monday
Timeline: 1-2 weeks depending on parallelization
Parallel work allowed:
- Task 1 (spec) happens first → unblocks all others
- Task 2 (backend) & Task 3 (frontend) can happen in parallel (use mock endpoint)
- Task 5, 6, 7 can start once Task 2 is in progress
Daily Standup Talking Points:
- Which tasks are blocked?
- Any scope creep or new requirements?
- Any technical blockers (API rate limits, dependencies)?
- Are we on track for story completion?
When a Task Reveals Issues
If a task uncovers new work:
- Document the new work as a sub-task
- Estimate if it fits in the current sprint
- If not, add to backlog for next sprint
- Inform product owner of timeline impact
Example: During Task 6, security engineer finds that ClamAV requires additional setup (expected 3 days). Options:
- Add to this sprint (slip timeline by 3 days)
- De-scope (use basic file validation only) & add ClamAV to next sprint
- Discuss with product owner
Acceptance for Entire User Story
Once all 8 tasks are done, the user story is complete when:
- All task acceptance criteria met
- All code merged to main branch
- All tests passing (unit + integration)
- Code reviewed by 2+ engineers
- Feature deployed to staging
- QA testing complete (no critical bugs)
- Ready for production deployment
Related Resources
Try the Bug Report Converter
Paste messy bug notes and get a clean, structured Jira ticket in seconds.