Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Todo Application - Travis #98

Open
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

rohitjindal18
Copy link

Running

  1. Run npm install
  2. Run npm run prod

Using http-server to host the index.html created.
UI can be accessed on http://127.0.0.1:8080

Purpose:
This PR aims at creating a dashboard which allows used to maintain his own todo list.
Todos can be divided into 3 states as shown in the screenshot.

1. Draft
2. In Progress
3. Completed

Screenshot 2019-07-29 at 11 32 10 PM

Users can drag and drop todos from one state to another (Similar to JIRA dashboard). User is not allowed to back track the task state.

Key Points:

  1. Change in data modelling for Tasks
    Have changed the implementation of Node Server for tasks CRUD operations.
    Earlier tasks.json returned array of tasks which has now been changed to a Map of Tasks with key being the state of Tasks.

Screenshot 2019-07-29 at 11 43 48 PM

The above data structure reduces the lookup time for tasks from O(n) to O(1), since task can be looked upon using task Id in a map.

Update of a task is also a O(1) operation, since client can pass the type of the task which helps in directly updating the map.

  1. Large Task list rendering in UI
    Have used react-window FixedSizedList which is smaller implementation of react-virtualised which allows re use of DOM nodes and better rendering.
    Have used FixedSizeList because the total number of tasks was pre calculated using the api, as it was returning the complete task object.

To prevent the bundle size from getting increased due to usage of react-window, We could also have implemented pagination in get tasks api which would always return a fixed number of tasks based on offset and page size.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant