Demo app
- Clone or download this repo.
- Install Node dependencies via
npm ci
. - Make sure the project runs with
npm start
.
As a project manager, I need to be able to view and change tasks statuses visually.
Need: Create the view and functionality to display tasks on a columnar grid and be able to change their status by dragging them between columns.
Constraints:
- A "card" must always have a status
- A "card" may never have more than one status
- "Cards" may not overlap in a column
Acceptance Criteria:
- Dragging a card between columns changes the status of the card
- If a user drags a card on top of another card, the card is displayed below that card instead
Details:
- Four columns labeled "To Do", "In Progress", "Blocked", "Done"
- Create "cards", which are objects able to be sized, dragged, and have text typed into and edited
- Create a field "Status" for each "card"
- The status of each "card" is set by the column in which it currently resides
- Dragging a "card" between columns will change the status of the "card" to the new column status
- Clone
react-boilerplate
repo, follow the Quick Start instructions. - Install and configure
redux-logger
. - Create a new KanbanBoardPage container,
react-boilerplate
provides thenpm run generate
script to generate a new container for us. - Modify
app/containers/App/index.js
so the<Route exact path="/" component={KanbanBoardPage} />
. - Create reducers, sagas, selectors, and actions.
- Install
react-beautiful-dnd
. - Add
DragDropContext
toKanbanBoardPage
- Add
Droppable
toKanbanColumn
- Add
Draggable
toKanbanCard
, mapping theindex
prop from the task list. - Create new action and update reducer.
- Only one board--this could be solved using routing.
- No tests exist for KanbanBoardPage components, sagas, reducers, or selectors.
- Provide a sort order within a column.