Assignment 2: Build todo application
Summary
You are now tasked to build a task manager application with React that you may have seen in a number of applications. In this application the look and feel is not important as long as the functionality is intact.
You will be using React to build a todo application, a task manager that has the following capabilities:
Look and Feel
- Be able to add a new task. Each task has a subject, and can have zero or more tags associated with it
- There should be a form that has inputs that captures the subject of the new task, and a comma separated list for the tags. These fields can both be text input fields, but if you like to use another UI design you can
- New tasks are by default not completed
- Be able to see a list of all of your tasks in no particular order. Each task should display a checkbox (for completion/incompletion)
- Be able to check the checkbox of a task to complete the task
- Be able to edit a task. Should be able to modify subject and add/remove tags after a task has been created
Data Storage
- All tasks should be saved in localStorage (under the key “my_todo_tasks”) in the following todo.txt format, but saved as a single JSON blob. For the purposes of this assignment, you only need to implement the following format rules:
- Marks Completion
- Description (with “@: tags support)
- In description, tags can be specified using “@[tag]” for example, “@ischool”
- For simplicity, tags cannot have any spaces
- A sample set of tasks would look like the following:
{ "tasks": [ "x Complete Assignment 1 @grading @ischool", "x Complete Lab 1 @ischool", "Complete Lab 2 @ischool", "Complete Lab 3" ] }
-
-
- The first task above would represent a task with title “Complete Assignment 1”, and would be tagged twice with tags “grading” and “ischool”, and it would be marked completed
- On app startup it should load the data from localStorage to the application
-
- Essentially your web application should have two sections:
- A form to allow you to add a new task
- A list of tasks that are displayed: and a checkbox to complete/not complete each task, and to be able to edit a task.
Note: Please click on this link to set up your repo for Assignment 2.
Extra Credit: Client side tag search
- List all of the unique tags that the user has used on any task, and display them
- On clicking the tag, the list of tasks show all tasks that have that tag
- Be sure to add a “Clear Filter” option where you show all tasks
Extra Credit: Save to database
- Create an account and a project for Google Realtime Database (NOT Google Cloud Firestore)
- Follow the instructions to connect your application to the external database
- NOTE: You need to use its REST API to interact with your external database to get full credit
- You should essentially replace the data that you are storing in localStorage to Google Realtime Database. It should load on startup from Google Realtime Database to your application.