Giter VIP home page Giter VIP logo

w05-todo-list-challenge's Introduction

Week 05 - To Do List Challenge

Author: Peter C. Matthews

This repository contains my submission for the Master Coding course at CodeNation.

Brief

The Challenge: Your challenge is to create a to-do list using React. This challenge is designed to test your React skills in making components, mapping data out, managing your state and receiving user input.

Requirements:

  • Your app must have more than one component.
  • Add items to the list.
  • Delete items from the list.
  • Check items as done.

Stretch Goals:

  • Edit items.
  • Archive items from the main list to a secondary list.

Visually this project is completely down to your choice! So get creative, and look around at existing to-do list applications, and designs

Implementation

During the market research for this project, I came across the Microsoft ToDo App, and I liked the minimalist design, and inuitive usage of the site. It also looks an feels like it's made with Material UI, which was introduced to us as a potential library to look into, within Week 05. I chose to take this as an opportunity to deep dive into Material UI, and see how well I could mimic the look and feel of Microsoft's site.

As a persistence medium, I am using the Local Storage. I started off by writing a CRUD repo for LS variables, but I soon ran into problems with its implementation, so I reverted that feature, in favour of using the useLocalStorage, and useReadLocalStorage hooks from the usehooks-ts library. This replaced useState to create a state machine with a persistence layer, built in.

Retrospective

Material UI is a blessing to use, but it does produce this very cut-and-paste website feel, similar to using Bootstrap with the default settings. At this point, we had not touched on Styled Components, and so although I was able to capitalise on many of the advanced features within MUI, I was not able to make it as polished as I would have liked.

Using Local Storage as a persistence medium was a challenge. There still are a few bugs that mean that the selected state of menu items don't correlate to user actions correctly. If I were to do this again, I'd want to use routing to pass a slug as a parameter, to ensure that the menus don't get cross-wired. I'd also switch out from using Local Storage, to something a bit more robust.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.