beardofedu / beardofedu/copilot-cli-fun-times

feat: task tags and labels

Open
#6 0 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.