Build a lightweight Kanban board using JavaScript or TypeScript. This exercise evaluates your frontend architecture skills, component decomposition, state management, and optional backend simulation or integration.
You may use any npm package or UI library (e.g., Tailwind, DnD libraries). Focus on clean, typed, and functional code.
Create a simple Kanban board with 3 columns:
- Todo
- In Progress
- Done
Users should be able to create tasks and move them between columns via drag-and-drop.
- Display three columns labeled: Todo, In Progress, Done.
- Each column should list its associated tasks.
- Provide a way to add a new task to a column (e.g., an input and button).
- Tasks must have a unique ID and a text label.
- Implement drag-and-drop to move tasks between columns.
- The task state must update immediately on drop.
- Use modular React components for Board, Column, and Task.
- Use useState or useReducer to manage board state.
- Save the board state to localStorage.
- Load the saved state on page refresh.
- Allow editing task descriptions.
- Optionally add metadata (e.g., created date).
- Add a delete button for removing a task.
- Simulate a backend with an Express.js server.
- Create basic GET and POST endpoints to sync board state.
- Responsive layout and animations.
- Use toast messages for actions (e.g., task created, deleted).