|
1 | | -# odin-ToDo |
| 1 | +# Odin To-Do List Application |
| 2 | + |
| 3 | +A simple and elegant To-Do List application built as part of [The Odin Project](https://www.theodinproject.com/) curriculum. This project allows users to create multiple projects, manage tasks, set priorities, and track due dates. |
| 4 | + |
| 5 | +## Features |
| 6 | +- **Create and Manage Projects**: Users can create multiple projects, each with its own list of tasks. |
| 7 | +- **Task Management**: Add, edit, and remove tasks with attributes such as title, description, due date, and priority. |
| 8 | +- **Dynamic UI**: Responsive interface that displays tasks by project, with different colors for priorities. |
| 9 | +- **Modular Design**: Classes and functions are separated into different modules, keeping the code clean and maintainable. |
| 10 | + |
| 11 | +## What I Learned |
| 12 | + |
| 13 | +### Building from Scratch, No Frameworks |
| 14 | +While a to-do list application is often seen as a basic and cliché project, this experience was invaluable because I built it **without using any frameworks**. By relying solely on vanilla JavaScript, HTML, and CSS, I gained a deeper understanding of: |
| 15 | +- **DOM Manipulation**: Handling user interactions and updating the UI manually without the convenience of frameworks helped me learn what goes on under the hood of a framework. |
| 16 | +- **Project Structure**: Organizing code into classes and modules, ensuring maintainability and scalability. |
| 17 | +- **Advanced css concepts**: By building the UI from scratch without using any templates or frameworks, I learned advanced CSS concepts like Flexbox and Grid, which helped me create a responsive and well-structured layout for the application.: |
| 18 | + |
| 19 | +### SOLID Principles |
| 20 | +- **Single Responsibility Principle**: Each class and module has a single responsibility, making the code easier to manage and extend. |
| 21 | +- **Open/Closed Principle**: The code is open for extension but closed for modification, allowing new features to be added without altering existing functionality. |
| 22 | + |
| 23 | +### Object-Oriented Programming in JavaScript |
| 24 | +- **Classes and Modules**: I learned how to create and manage multiple classes in separate modules, improving code organization. |
| 25 | +- **Constructors**: Utilized constructors to initialize objects and understand how they work in JavaScript to create reusable task instances. |
| 26 | + |
| 27 | +### Separation of Concerns |
| 28 | +- **UI vs. Logic**: I split the application logic (task management, project handling) from the user interface, adhering to best practices in code separation. This makes the code more scalable and easier to maintain. |
| 29 | + |
| 30 | +## Project Demo |
| 31 | +You can view the live version of the project [here](https://codedstrings.github.io/odin-ToDo/). |
| 32 | + |
| 33 | +## Technologies Used |
| 34 | +- JavaScript (ES6) |
| 35 | +- HTML/CSS |
| 36 | +- Webpack (for bundling modules) |
| 37 | +- GitHub Pages (for deployment) |
| 38 | +- Figma- |
| 39 | +## How to Run Locally |
| 40 | + |
| 41 | +1. Clone the repository. |
| 42 | +2. Install dependencies: |
| 43 | + ```bash |
| 44 | + npm install |
| 45 | + ``` |
| 46 | +3. Run the development server: |
| 47 | + ```bash |
| 48 | + npm run dev |
| 49 | + ``` |
0 commit comments