This project is a part of The Odin Project's advanced JavaScript curriculum. It’s a web application designed to manage tasks across different projects, allowing users to create, save, and organize to-do items in custom or default categories. It uses local storage for data persistence, ensuring tasks remain available even after refreshing the page.
- Task Creation and Organization: Easily add and save to-do items in various projects.
- Persistent Data: Local storage ensures your tasks are saved and remain accessible across sessions.
- Project Organization: Sort tasks into custom or default projects for better organization.
The primary objective was to write clean, organized, and maintainable code by leveraging the following principles:
- Modular Code Structure: Organize code into ES6 Modules for better readability and maintainability.
- IIFEs, Classes, and Prototypal Inheritance: Utilize JavaScript features for efficient code structure.
- SOLID Principles: Apply principles of clean code:
- Single Responsibility: Each component or class has a specific, focused responsibility.
- Open/Closed: Components are open to extension but closed to modification.
- Liskov Substitution: Derived classes or modules can replace their base counterparts.
- Interface Segregation: Avoid imposing unnecessary methods on classes.
- Dependency Inversion: Rely on abstractions rather than concrete implementations.
This project offered practical experience with:
- Planning and Organizing Code: Outlining structure before diving into code helped with organization.
- SOLID Principles: Understanding and implementing these principles for cleaner, more maintainable code.
- Classes and ES6 Modules: Utilizing classes for object-oriented structure and ES6 modules for code organization.
- Factory Functions: Creating reusable components through factory functions.
- Prototypal Inheritance: Leveraging JavaScript’s prototype-based inheritance for efficient object manipulation.
- Local Storage for Data Persistence: Learning basic data persistence methods to keep user data intact.
Check out the running version of this project here.