A simple To-Do List app built using JavaScript, where users can add, edit and remove tasks from the list as well as marking them as completed.

Overview

To-Do List

This is a to-do list application.

Built With

  • Languages:

    • HTML5 & CSS3
    • JavaScript
  • Preprocessors:

    • Sass
  • Technologies:

    • Webpack
  • Conventions and Methodologies:

    • Atomic Design
    • BEM

Live Demo

Click on this link to see this project live demo: Live Demo Link

Getting Started

To get a local copy up and running follow these simple example steps.

Prerequisites

  • Web Browser (e.g. Firefox, Chrome, Edge)
  • NPM (Node Package Manager)

Setup

Download the code from this repository.

Install

1- Install the project dependencies using this command on the root project directory:

$ npm install

2- Then, run this command to build the application's code:

$ npm run build

Usage

Open the index.html file inside the dist/ folder in your Web Browser.

Testing

After installing all the project dependencies using the first command mentioned in the section install, run this command in the root project directory:

$ npm test

Authors

👤 Gabriel Santo

🤝 Contributing

Contributions, issues, and feature requests are welcome!

Feel free to check the issues page.

Show your support

Give a ⭐️ if you like this project!

📝 License

This project is MIT licensed.

Comments
  • test: Add tests for all the TasksList methods and features

    test: Add tests for all the TasksList methods and features

    Description

    Task: https://github.com/microverseinc/curriculum-javascript/blob/main/todo-list/tests_2.md

    This PR makes the following changes:

    • Adds tests for the TasksList.setTaskDescription() method (responsible for editing the task description)
    • Adds tests for the TasksList.removeCompletedTasks() method (responsible for removing all completed tasks)
    • Adds tests for the TasksList.toggleTaskIsCompleted() method (responsible for updating a task isCompleted status)
    • Adds tests for the TasksList.updateTasksIndexes() method (responsible for updating the tasks indexes)
    • Removes unused functions (from the id.utils.js file) and methods (from the Task.js file)

    Plus, it adopts the following methodologies and conventions:

    • For the CSS/Sass:
      • BEM methodology for naming the CSS classes
      • A modified version of the Scalable and Modular Architecture for CSS (SMACSS) methodology for organizing the CSS code into categorized folders/files (base, components, layout, and utilities)
      • Atomic Design methodology for breaking down the CSS components into atoms, molecules, and organisms
    • For the JavaScript:
      • MVP architecture (a variation of the MVC pattern) to separate the application business logic from the presentation logic (DOM manipulation tasks)

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] Tests (changes related to testing)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [X] My code follows the style guidelines of this project (no linters errors)
    • [X] I have checked my code and corrected any misspellings
    • [X] I have commented my code
    • [X] I have deleted any unused code as comments in my codebase

    Screenshots

    all-tests-tasks-list

    opened by gvgesanto2 1
  • test: Add tests for the add and remove item features

    test: Add tests for the add and remove item features

    Description

    Task: https://github.com/microverseinc/curriculum-javascript/blob/main/todo-list/tests_1.md

    This PR makes the following changes:

    • Adds tests for the TasksList.createAndAddTask() and View.render() methods (add item feature)
    • Adds tests for the TasksList.removeTaskById() and View.remove() methods (remove item feature)
    • Adds tests for the StorageService class

    Plus, it adopts the following methodologies and conventions:

    • For the CSS/Sass:
      • BEM methodology for naming the CSS classes
      • A modified version of the Scalable and Modular Architecture for CSS (SMACSS) methodology for organizing the CSS code into categorized folders/files (base, components, layout, and utilities)
      • Atomic Design methodology for breaking down the CSS components into atoms, molecules, and organisms
    • For the JavaScript:
      • MVP architecture (a variation of the MVC pattern) to separate the application business logic from the presentation logic (DOM manipulation tasks)

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] Tests (changes related to testing)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [X] My code follows the style guidelines of this project (no linters errors)
    • [X] I have checked my code and corrected any misspellings
    • [X] I have commented my code
    • [X] I have deleted any unused code as comments in my codebase

    Screenshots

    add-remove-tests

    opened by gvgesanto2 1
  • feat: Add the add-and-remove task feature

    feat: Add the add-and-remove task feature

    Description

    Task: https://github.com/microverseinc/curriculum-javascript/blob/main/todo-list/m3_add_remove.md

    This PR makes the following changes:

    • Adds the add task and remove task features
    • Adds the set task to completed and edit task description features
    • Stores all the changes made in the tasks list into the browser's local storage

    Plus, it adopts the following methodologies and conventions:

    • For the CSS/Sass:
      • BEM methodology for naming the CSS classes
      • A modified version of the Scalable and Modular Architecture for CSS (SMACSS) methodology for organizing the CSS code into categorized folders/files (base, components, layout, and utilities)
      • Atomic Design methodology for breaking down the CSS components into atoms, molecules, and organisms
    • For the JavaScript:
      • MVC architecture to separate the application business logic from the presentation logic (DOM manipulation tasks)

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    • [X] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [X] My code follows the style guidelines of this project (no linters errors)
    • [X] I have checked my code and corrected any misspellings
    • [X] I have commented my code
    • [X] I have deleted any unused code as comments in my codebase

    Screenshots

    todo-add-remove

    opened by gvgesanto2 1
  • feat: Add the Edit ToDo List's Title functionality

    feat: Add the Edit ToDo List's Title functionality

    Description

    This PR makes the following changes:

    • Adds the functionality for editing the todo list's title
    • Changes the styles for the task is completed state
    • Increases the size of the task item icons (from 1.5 rem to 1.8 rem)

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [X] My code follows the style guidelines of this project (no linters errors)
    • [X] I have checked my code and corrected any misspellings
    • [X] I have commented my code
    • [X] I have deleted any unused code as comments in my codebase
    opened by gvgesanto2 0
  • refactor: Make the code more organized and refactor to use the MVP pattern

    refactor: Make the code more organized and refactor to use the MVP pattern

    Description

    This PR makes the following changes:

    • Renames the controllers folder and the classes inside of it to reflect the nomenclature used by the MVP pattern instead of the MVC.
    • Creates 3 types of abstractions responsible to deal with the DOM manipulation tasks (presentation logic):
      • the View component: is responsible for dynamically creating, rendering, and managing a specific HTML component on the screen. These components are located inside the folder views/view-components.
      • the ViewManager component: is responsible for managing a specific HTML component that was already rendered statically on the screen through the HTML document (index.html file). These components are located inside the folder views/view-managers.
      • the view decorators: are a special type of abstraction which are responsible for extending the functionality of some specific instance of the View or ViewManager components. They are located inside the folder views/decorators.
    • Changes the way a View component dynamically updates itself on the screen.

    Plus, it adopts the following methodologies and conventions:

    • For the CSS/Sass:
      • BEM methodology for naming the CSS classes
      • A modified version of the Scalable and Modular Architecture for CSS (SMACSS) methodology for organizing the CSS code into categorized folders/files (base, components, layout, and utilities)
      • Atomic Design methodology for breaking down the CSS components into atoms, molecules, and organisms
    • For the JavaScript:
      • MVP architecture (a variation of the MVC pattern) to separate the application business logic from the presentation logic (DOM manipulation tasks)

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [X] Refactor (a code change that neither fixes a bug nor adds a feature)
    • [X] Breaking change (fix, feature or some code refactor that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [X] My code follows the style guidelines of this project (no linters errors)
    • [X] I have checked my code and corrected any misspellings
    • [X] I have commented my code
    • [X] I have deleted any unused code as comments in my codebase
    opened by gvgesanto2 0
  • feat: Add the Clear Completed Tasks feature

    feat: Add the Clear Completed Tasks feature

    Description

    Task: https://github.com/microverseinc/curriculum-javascript/blob/main/todo-list/m2_interactive_list.md

    This PR makes the following changes:

    • Adds the clear all completed tasks feature

    Plus, it adopts the following methodologies and conventions:

    • For the CSS/Sass:
      • BEM methodology for naming the CSS classes
      • A modified version of the Scalable and Modular Architecture for CSS (SMACSS) methodology for organizing the CSS code into categorized folders/files (base, components, layout, and utilities)
      • Atomic Design methodology for breaking down the CSS components into atoms, molecules, and organisms
    • For the JavaScript:
      • MVC architecture to separate the application business logic from the presentation logic (DOM manipulation tasks)

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [X] My code follows the style guidelines of this project (no linters errors)
    • [X] I have checked my code and corrected any misspellings
    • [X] I have commented my code
    • [X] I have deleted any unused code as comments in my codebase

    Screenshots

    todo-add-remove

    opened by gvgesanto2 0
  • feat: Create the To-Do List structure

    feat: Create the To-Do List structure

    Description

    Task: https://github.com/microverseinc/curriculum-javascript/blob/main/todo-list/m1_list_structure.md

    This PR makes the following changes:

    • Sets up the GitHub Actions and the Webhint, Stylelint, and ESLint linters
    • Sets up the Webpack configuration files and build scripts
    • Creates the To-Do List initial structure
    • Generates the tasks list dynamically

    Plus, it adopts the following methodologies and conventions:

    • For the CSS/Sass:
      • BEM methodology for naming the CSS classes
      • A modified version of the Scalable and Modular Architecture for CSS (SMACSS) methodology for organizing the CSS code into categorized folders/files (base, components, layout, and utilities)
      • Atomic Design methodology for breaking down the CSS components into atoms, molecules, and organisms
    • For the JavaScript:
      • MVC architecture to separate the application business logic from the presentation logic (DOM manipulation tasks)

    Type of change

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [X] New feature (non-breaking change which adds functionality)
    • [X] Breaking change (fix or feature that would cause existing functionality to not work as expected)
    • [ ] This change requires a documentation update

    Checklist:

    • [X] My code follows the style guidelines of this project (no linters errors)
    • [X] I have checked my code and corrected any misspellings
    • [X] I have commented my code
    • [X] I have deleted any unused code as comments in my codebase

    Screenshots

    todo-structure

    opened by gvgesanto2 0
  • Following DRY

    Following DRY

    Hi Gabriel,

    First of all, you've done a great job with your project. I'm impressed with how you implemented the MVP patterns in your code and how you can separate your business logic from the rendering logic. As we told you on the peer-to-peer code review the thing we found is that you are repeating yourself in the file TasksListsViews.js.

    https://github.com/gvgesanto2/microverse-todo-list/blob/8903f6fba18e943faa8760f85182e3838d9197ba/src/scripts/views/view-components/tasks-list/TasksListView.js#L19-L32

    As you can see you're using the exact same code to render your initial elements since you already coded a function to render your new elements. Consider using that function to follow DRY directives. Also, you should consider reviewing your modules just to make sure you don't repeat blocks of code you're already using.

    Great job with your project!

    opened by indigodavid 0
  • Trash icon and focus

    Trash icon and focus

    Hello @gvgesanto2 👋

    Highlights

    Your To-Do List works very well, good job!

    ✔️ Very clean and organized code ✔️ Nice use of ID in your objects ✔️ No linter errors XD

    Issue

    When you try to click on the trash icon for deleting an item, the focus of the event listener toggles before the trash icon can be actually clicked. I saw that you added some delay for preventing this behavior, but I'm sure there is a better way of making it work properly.

    Keep it going, man! 💯

    opened by GiuseppeTG 0
Owner
Gabriel Santo
Full-Stack Software Developer with a passion for React, Redux, and Node.js. Ever eager to learn and work outside of my comfort zone.
Gabriel Santo
This is a To-Do List. It shows a minimalist design with the next features: Add new tasks, edit tasks, markup completed tasks, and erase all completed tasks. Built with JavaScript.

Project Name To Do List Built With HTML CSS JavaScript Live Demo To do List Live Demo Link Getting Started This is a To Do List. It shows a minimalist

Santiago Cárdenas 6 Jun 9, 2022
A simple JS To Do List bundled using Webpack. You can add new tasks, edit existing tasks, check completed tasks, and delete tasks from the list. It is built mainly with Javascript.

To-Do-List A simple HTML list of To Do built using webpack and served by a webpack dev server. Live Link See Demo Built With HTML, CSS, Javascript To

Michael Ugochukwu 3 May 10, 2022
Microverse Module 02 Project: This is an educational project to make a TodoList web application, where the users can add new todo, remove todo, edit todo, mark todo as completed, and remove all completed todo. Built with Webpack

todo-list This project is about building a list of To Do tasks. Where you can save your daily activities and help in daily evaluation. Live demo you v

divine charlotte 25 Jan 3, 2023
This is a simple web application of a To-do List in which you can add, remove and edit all your tasks and also you can mark each task as completed and delete all completed ones.

To-Do List A simple web application of a to do list Built With HTML, CSS, JS, ES6 & Webpack Getting Started In this repository I created To-Do List SP

Juan Sebastian Sotomayor 12 Apr 11, 2022
This is a Webpack based to-do-list project. With this app, users can add thier daily routine tasks to the list, mark them as complet, edit them or delete them.

To Do List This is a Webpack based to-do-list project. With this app, users can add thier daily routine tasks to the list, mark them as complet, edit

Ali Aqa Atayee 12 Oct 30, 2022
A simple to do list app built with HTML, CSS and JavaScript. Users can add daily tasks, edit the tasks, delete the tasks when it's done

To Do List This is a website that allows users to manage the tasks. users can add every task to do and when the task is done users can delete the task

Mustafa Fahimy 8 Jul 21, 2022
zieeco 12 Jul 8, 2022
To-Do List project is the application for a to-do list, users can add and remove tasks from the to-do list. Mark tasks as completed.

To Do App To-Do List project is the application for a to-do list, users can add and remove tasks from the to-do list. Mark tasks as completed. Users c

Ishpaul Singh 6 Jul 21, 2022
A simple to do list webpage where you can log the daily tasks you have to do, mark them as checked, modify them, reorder them and remove them. Made using HTML, CSS and JavaScript.

To-Do-List This Webpage is for an app called To-Do-List which helps you add, remove or check tasks you have to do. It is a simple web page which conta

Zeeshan Haider 9 Mar 12, 2022
An interactive list of tasks where you can add, remove, edit, mark as completed and clear all done tasks. Tested with Jest.

To do List This project its an interactive list of task where you can add and remove tasks dinamically Project Images Add new Tasks Edit Existing Task

Alex Puente 7 Nov 9, 2022
A to do list where you can add tasks, mark completed tasks and clear all completed tasks.

To Do List A to do list where you can add tasks, mark completed tasks and clear all completed tasks. You can rearrange the order of the tasks by doubl

Amira 7 Mar 4, 2022
A simple todo list app that allows users to add, delete, edit, and clear all completed tasks, built with HTML, CSS, Javascript and webpack.

todo list In this website you will add books and also watch the lists of books. Built With HTML CSS JavaScript See Live click here Authors ?? HaaDiiii

Hamid Ali 10 Oct 7, 2022
A Todo list app that allows the user to add tasks, delete, edit, chage, and clear all completed tasks. Built with JavaScript, CSS and Html.

To Do list: interactive list description: A todo list app that allow users to add new task, delete, edit, and clear all completed.Built with JavaScrip

IBRAHIM AHMAT 7 Aug 4, 2022
A web app which help you to save your daily tasks, mark them as completed and edit and delete them. Built with JavaScript

To-Do List A simple to-do list to help you organize your daily tasks. Built With HTML. CSS. JavaScript: ES6, Modules, Classes, Arrow Functions, Events

Williams Colmenares 13 Dec 17, 2022
A web app which help you to save your daily tasks, mark them as completed and edit and delete them. Built with JavaScript

To-Do List A simple to-do list to help you organize your daily tasks. Built With HTML. CSS. JavaScript: ES6, Modules, Classes, Arrow Functions, Events

Williams Colmenares 11 Aug 10, 2022
Simple To-do list build using HTML5, CSS3, JavaScript and Webpack. You can add new tasks, remove and edit them.

Simple To-do list build using HTML5, CSS3, JavaScript and Webpack. You can add new tasks, remove and edit them.

Esteban Munoz 6 Mar 5, 2022
To-Do list a web app for tracking personal progress through the day. Users can input a list of tasks and mark them as completed once they are done. Built with JavaScript and Webpack

To-do-List-Project To Do List Project Description. This project creates a simple HTML list of To Do tasks. It was built using webpack and served by a

Olawale Olapetan 7 Jul 8, 2022