Prompt: Interactive Kanban Board UI (FPC005)
Model: Groq-Llama4-Scout | Date: 07/16/2025 | Page Title: Kanban Board
Prompt Description
Develop a client-side interactive Kanban board (like Trello or Jira) with basic drag-and-drop functionality.
**Board Structure & Features:**
1. **Columns:** Display at least three columns: 'To Do', 'In Progress', 'Done'. Each column should be clearly labeled (e.g., with an `<h2>`) and act as a drop zone. Columns should be identifiable `data-testid='kanban-column-todo'`, `data-testid='kanban-column-inprogress'`, etc.
2. **Cards:**
* Each column should contain several task cards. Each card displays a task title and a brief description.
* Cards MUST be draggable between columns. They should have `draggable='true'` attribute and be identifiable `data-testid='kanban-card-N'`.
* Cards should also be editable in place (e.g., clicking card title makes it an input, saving on blur/Enter - medium complexity).
3. **Add New Card:** Provide a way to add a new card to the 'To Do' column (e.g., a button at the bottom of the column or a global 'Add Task' button that opens a small form/modal). The form should ask for a title and description. `data-testid='add-card-form'`.
4. **Drag and Drop:** Implement HTML5 drag and drop API to move cards between columns. When a card is dropped into a new column, it should visually move and its underlying data structure (if any in JS) should reflect the change of status.
**Technical & Accessibility Requirements:**
* Semantic HTML for the board, columns, and cards. Use `<ul>` or `<ol>` for lists of cards within columns if appropriate.
* **Drag and Drop Accessibility:** This is challenging. Provide keyboard alternatives for moving cards if possible (e.g., a context menu on the card with 'Move to In Progress' options). If full keyboard D&D is too complex, ensure users can still manage tasks without a mouse (e.g., edit, delete, add, potentially move via other means). At a minimum, draggable items should be focusable.
* Visual feedback during drag (e.g., highlighting drop zones, ghost image of card).
* The board should be responsive. Columns might stack on mobile, or horizontal scrolling might be enabled for the board container.
* Styling: Tailwind CSS. Custom CSS/JS will be critical for drag-and-drop visuals, card editing, and potentially complex responsive column layouts.
**Testing Identifiers:**
* To Do Column: `data-testid='kanban-column-todo'`
* In Progress Column: `data-testid='kanban-column-inprogress'`
* Done Column: `data-testid='kanban-column-done'`
* A Draggable Card: `data-testid='kanban-card-1'`
* Add Card Form: `data-testid='add-card-form'` or trigger `data-testid='add-card-button'`
Key Links & Info
Analysis Timestamp: 07/16/2025 17:53:09
Scores for this Prompt
Technical Quality
72.0 / 110.0
(65.45%)
Prompt Adherence
17.0 / 25.0
(68.00%)
Overall Weighted
67.24 %
Technical Quality Breakdown
HTML Structure & Semantics (6.0 / 10.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| HTML Lang | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Page Title | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Main Tag | FAIL |
No visible <main>.
|
0.0 / 1.0 | desktop |
| Nav Tag | WARN |
No visible <nav>.
|
0.0 / 1.0 | desktop |
| Footer Tag | WARN |
No visible <footer>.
|
0.0 / 1.0 | desktop |
| H1 Count | FAIL |
No visible <h1>.
|
0.0 / 1.0 | desktop |
| Heading Order Logic | PASS |
PASS
|
1.0 / 1.0 | desktop |
| Image Alts | INFO |
No visible images (INFO).
|
1.0 / 1.0 | desktop |
| Form Labels | INFO |
No relevant form inputs (INFO).
{
"unlabeled_count": 0
}
|
2.0 / 2.0 | desktop |
CSS Quality (2.0 / 5.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| CSS Variables | WARN |
No :root CSS variables.
|
0.0 / 2.0 | desktop |
| Modern Layout Body/Main | INFO |
Flex/Grid not on body/main.
|
0.0 / 1.0 | desktop |
| Inline Styles | PASS |
Minimal inline styles.
|
1.0 / 1.0 | desktop |
| !important Usage | PASS |
No !important in <style> tags.
|
1.0 / 1.0 | desktop |
JavaScript Health (5.0 / 5.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| JS Console Errors | PASS |
No significant JS errors.
|
5.0 / 5.0 | desktop |
Accessibility (Axe-core) (18.0 / 40.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Axe Violations | FAIL |
4 Axe violations (Crit:0,Ser:1,Mod:3,Min:0). Report: axe_report_FPC005_Interactive_Kanban_Board_UI_desktop.json
[
{
"help": "Elements must have sufficient color contrast",
"id": "color-contrast",
"impact": "serious"
},
{
"help": "Page must have one main landmark",
"id": "landmark-one-main",
"impact": "moderate"
},
{
"help": "Page must contain a level-one heading",
"id": "page-has-heading-one",
"impact": "moderate"
},
{
"help": "All page content must be contained by landmarks",
"id": "region",
"impact": "moderate"
}
]
|
9.0 / 20.0 | desktop |
| Axe Violations | FAIL |
4 Axe violations (Crit:0,Ser:1,Mod:3,Min:0). Report: axe_report_FPC005_Interactive_Kanban_Board_UI_mobile.json
[
{
"help": "Elements must have sufficient color contrast",
"id": "color-contrast",
"impact": "serious"
},
{
"help": "Page must have one main landmark",
"id": "landmark-one-main",
"impact": "moderate"
},
{
"help": "Page must contain a level-one heading",
"id": "page-has-heading-one",
"impact": "moderate"
},
{
"help": "All page content must be contained by landmarks",
"id": "region",
"impact": "moderate"
}
]
|
9.0 / 20.0 | mobile |
Rendered Color & Contrast (25.0 / 30.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Add Card' in <button data-testid='add-card-button' class='bg-blue-500 hover:bg-blue-700 ...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Add Card"
}
|
0.0 / 0.0 | desktop |
| Contrast Check Result | FAIL |
1 WCAG AA failures on 10 instances.
|
12.5 / 15.0 | desktop |
| Contrast Failure (AA) | FAIL |
AA FAIL 3.68 for 'Add Card' in <button data-testid='add-card-button' class='bg-blue-500 hover:bg-blue-700 ...'>
{
"bg_eff": "rgb(59, 130, 246)",
"fg": "rgb(255, 255, 255)",
"ratio": 3.6779011537825332,
"text": "Add Card"
}
|
0.0 / 0.0 | mobile |
| Contrast Check Result | FAIL |
1 WCAG AA failures on 10 instances.
|
12.5 / 15.0 | mobile |
Responsiveness (Viewport & Scroll) (16.0 / 20.0)
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| Viewport Meta Tag | PASS |
Configured correctly for responsiveness.
|
4.0 / 4.0 | desktop |
| Horizontal Scrollbar | PASS |
No horizontal scrollbar detected.
|
6.0 / 6.0 | desktop |
| Viewport Meta Tag | INFO |
Already scored for this prompt.
|
0.0 / 0.0 | mobile |
| Horizontal Scrollbar | PASS |
No horizontal scrollbar detected.
|
6.0 / 6.0 | mobile |
Prompt Adherence Breakdown
| Check | Status | Message & Data | Points | Viewport |
|---|---|---|---|---|
| To Do Column | PASS |
Element '[data-testid='kanban-column-todo']' present and visible.
Selector:
[data-testid='kanban-column-todo'] |
2.0 / 2.0 | desktop |
| In Progress Column | PASS |
Element '[data-testid='kanban-column-inprogress']' present and visible.
Selector:
[data-testid='kanban-column-inprogress'] |
2.0 / 2.0 | desktop |
| Done Column | PASS |
Element '[data-testid='kanban-column-done']' present and visible.
Selector:
[data-testid='kanban-column-done'] |
2.0 / 2.0 | desktop |
| Draggable Cards (min 3 total) | PASS |
Count is 3 (Actual: 3, Expected: >= 3).
|
2.0 / 2.0 | desktop |
| Add Card Mechanism | PASS |
Element '[data-testid='add-card-form'], [data-testid='add-card-button']' present and visible.
Selector:
[data-testid='add-card-form'], [data-testid='add-card-button'] |
2.0 / 2.0 | desktop |
| Drag Card from ToDo to InProgress | PASS |
All interaction steps/outcomes verified.
|
7.0 / 7.0 | desktop |
| Add New Card to ToDo | FAIL |
One or more interaction steps/outcomes failed.
Interaction Log: [ "--- Executing Step: Open Add Card Form (if button exists) ---", " Action \u0027click\u0027 on \u003cbutton data-testid=\u0027add-card-button\u0027 class=\u0027bg-blue-500 hover:bg-blue-700 ...\u0027\u003e.", "--- Step Open Add Card Form (if button exists) Passed ---", "--- Executing Step: Fill and Submit New Card ---", " [FAIL] Trigger config missing." ] |
0.0 / 5.0 | desktop |
| Cards are Focusable (for A11y D&D alternative prep) | FAIL |
Custom script evaluation result: False (expected true).
Script Eval: False
|
0.0 / 3.0 | desktop |
| To Do Column | PASS |
(Points already awarded) Element '[data-testid='kanban-column-todo']' present and visible.
Selector:
[data-testid='kanban-column-todo'] |
0.0 / 2.0 | mobile |
| In Progress Column | PASS |
(Points already awarded) Element '[data-testid='kanban-column-inprogress']' present and visible.
Selector:
[data-testid='kanban-column-inprogress'] |
0.0 / 2.0 | mobile |
| Done Column | PASS |
(Points already awarded) Element '[data-testid='kanban-column-done']' present and visible.
Selector:
[data-testid='kanban-column-done'] |
0.0 / 2.0 | mobile |
| Draggable Cards (min 3 total) | PASS |
(Points already awarded) Count is 3 (Actual: 3, Expected: >= 3).
|
0.0 / 2.0 | mobile |
| Add Card Mechanism | PASS |
(Points already awarded) Element '[data-testid='add-card-form'], [data-testid='add-card-button']' present and visible.
Selector:
[data-testid='add-card-form'], [data-testid='add-card-button'] |
0.0 / 2.0 | mobile |
| Add New Card to ToDo | FAIL |
One or more interaction steps/outcomes failed.
Interaction Log: [ "--- Executing Step: Open Add Card Form (if button exists) ---", " Action \u0027click\u0027 on \u003cbutton data-testid=\u0027add-card-button\u0027 class=\u0027bg-blue-500 hover:bg-blue-700 ...\u0027\u003e.", "--- Step Open Add Card Form (if button exists) Passed ---", "--- Executing Step: Fill and Submit New Card ---", " [FAIL] Trigger config missing." ] |
0.0 / 5.0 | mobile |
| Cards are Focusable (for A11y D&D alternative prep) | FAIL |
Custom script evaluation result: False (expected true).
Script Eval: False
|
0.0 / 3.0 | mobile |