This assessment requires the development of a real-time task manager, featuring a Kanban board interface. Data synchronization will be achieved through a WebSocket service.
Note
- ❤️ Feel free to add any improvements or suggestions you consider.
- Enable real-time synchronization of tasks using a provided mock WebSocket server.
- Create a task board with three columns: To Do, In Progress, and Done.
- Implement drag-and-drop functionality to reorder tasks or move them between columns.
- Load a pre-populated list of 50-100 tasks from a mock API
This conceptual test has been developed using the following technologies:
- Front-end
The project requires:
Clone the repository:
git clone https://github.com/christianjtr/simple-task-manager.git
Scripts:
Before executing these scripts, you must run npm install in the directory you just downloaded/cloned the codebase. Other scripts are in package.json file. Also, you may consult the CHALLENGE.md file.
# Start the development environment
> npm run dev
# Run unit tests
> npm run test
- Basic kanban board
- Basic implementation of Kanban Board UI (Component Composition)
- Integrate WebSocket Data Synchronization (Custom Hook)
- Redux integration (WebSocket/MockAPI orchestration)
- Implement task management features
- Ensure some real-time updates
graph TD
A[TaskBoard] -->|Stages| B(TaskBoardStage 1);
A -->|Stages| C(TaskBoardStage 2);
A -->|Stages| D(TaskBoardStage 3);
B -->|Tasks| E[TaskCard 1];
B -->|Tasks| F[TaskCard 2];
C -->|Tasks| G[TaskCard 3];
D -->|Tasks| H[TaskCard 4];
D -->|Tasks| I[TaskCard 5];
style A fill:#f9f,stroke:#333,stroke-width:2px;
- Fine-tune the application and enhance overall styles.
- Align components with third-party design framework (Ant Design).
- Polish interactions, e.g., transition tasks across statuses.
- Work on transitions, animations, affordance, and similar.
- Improve the syncing process between the service layer and state manager.
- Better management of WebSocket/Redux layers.
- Offline support.
- Optimize performance and elevate error handling.
- Manage assets, caching strategies, etc.
- Make sure that potential flaws are covered.
- Add unit tests to the implementation.