beardofedu / beardofedu/copilot-cli-fun-times
feat: task tags and labels
- Dominant language
- JavaScript
- Stars
- 1
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
## Summary
Add a `tags` field (array of strings) to tasks so users can categorize and filter tasks by label.
## Motivation
Tasks often belong to multiple categories (e.g., "backend", "urgent", "blocked"). Tags provide a flexible, user-defined classification system without requiring a fixed schema.
## Proposed Behavior
- `POST /tasks` accepts an optional `tags` array of strings (defaults to `[]`)
- `PUT /tasks/:id` allows updating the `tags` array
- `GET /tasks?tag=backend` returns all tasks that include "backend" in their `tags` array (case-insensitive)
- Tags are stored as an array of trimmed, lowercased strings
- Invalid tag values (non-strings, empty strings after trim) are rejected with HTTP 400
## Acceptance Criteria
- [ ] `POST /tasks` body accepts `tags` array; defaults to `[]` when omitted
- [ ] `PUT /tasks/:id` can update `tags`
- [ ] `GET /tasks?tag=` filters tasks that include the given tag
- [ ] Tags are normalized to lowercase and trimmed on write
- [ ] HTTP 400 returned for invalid tag entries
- [ ] Tag filtering logic extracted into a utility function
- [ ] Unit tests written for the tag filter utility
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at the POST /tasks, PUT /tasks/:id, and GET /tasks?tag= entry points to trace task creation, updates, and filtering. Locate the tag filtering utility and add unit tests for case-insensitive matching; done means tags are normalized, invalid entries return HTTP 400, and all listed acceptance criteria pass.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- api, backend, testing
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100