ToDo Lists are a staple in web development tutorials. Even with the most basic implementation, they have a big room for improvements and many features can be added.
This project is all about a project management application. The project entails dynamic creation of todos (projects in other words), and creation of todo-items (Tasks, put differently). Both Projects and Tasks have their specific attributes or identifiers. Projects have names, status, project owner, start and end dates, priority and notes about them. Tasks have names, asignee, prioriy, due date and a brief description.
A user has the ability to do the following:
- Create projects
- Create tasks in default project or one of their choice.
- View all projects
- View all tasks
- View all todos in each project (probably just the title and duedate… perhaps changing color for different priorities)
- Expand a single project to see/edit its details.
- Expand a single task to see/edit its details.
- Delete a project
- Delete a task
From the programmer's perspective, this project is a showcase of an array of programming topics. The project is a single page application which is generated dynamically using JavaScript, as opposed to a traditional wwebsite. In this case, I flex the following concepts: immediately involved function expressions (IIFE) and ES6 Classes for Object Oriented Programming. I also engage in functional programming to ensure the project works well. I have also demonstrated the use of SOLID Design principles and ensured a good separtion of concerns between application logic and DOM interactions. The project uses JSON to store data on your local machine to ensure a user does not loose their data on refreshing their application.
I also demonstrate problem solving skills as I thought out my approach to build all the software components and I ensure they all work together as a unit. I demonstrated basic logging and error handling for my application, use of forms to collect data, and event handling. I have also organized my project into modules such that any developer who want to expand my project will a simple walkthrough tp understand what parts to begin their iterations. I'm now confident that I can write a fully functional synchronous JavaScript code no matter the project, following the best industry practices.