< Web Application / >

Todo List

Back
//
npm install praevisio_labs

Dynamic todo app with projects, lists, and modular JavaScript architecture

Parts of this README have been generated with AI.


A todo list application built from scratch using JavaScript, HTML, and CSS. This project was my capstone for the first half of The Odin Project's JavaScript course, where I learned to tie together many concepts I'd been practicing.


What I Learned

This project taught me to:

  • Create dynamic todo objects using classes with properties like title, description, dueDate, and priority
  • Organize todos into separate projects and lists
  • Separate application logic from DOM manipulation by using different modules
  • Handle form submissions and prevent default browser behavior
  • Create and manage dynamic DOM elements with event listeners

Key Features

  • Project Creation: Create projects with name and due date
  • List Management: Add lists within projects with priority levels
  • Todo Items: Add todos with title, description, due date, and priority
  • Delete Functionality: Remove projects, lists, and items with confirmation
  • Dynamic Forms: Context-aware forms that change based on what's being created

Project Structure

src/
├── index.js              # Main entry point
├── global_scope.js       # Global state and UI setup
├── app_class.js          # Base application class
├── project_class.js      # Project class definition
├── list_class.js         # List class definition  
├── item_class.js         # Todo item class definition
├── _showForm.js          # Form display logic
├── _pushInputs.js        # Form data processing
├── _appendInputs.js      # DOM element creation
├── _delete.js            # Element deletion logic
├── dom_logic.js          # DOM manipulation utilities
├── styles.css            # Application styling
└── template.html         # HTML template

Project Status

Completed

  • ✅ Project creation with name and due date forms
  • ✅ List creation with priority selection
  • ✅ Todo item creation with full details
  • ✅ Dynamic DOM manipulation and display
  • ✅ Delete functionality with confirmation dialogs
  • ✅ Form handling and submission

Challenges I Faced

  • Module Organization: Learning to separate application logic from DOM concerns
  • State Management: Managing data across different modules without a centralized state
  • Form Handling: Preventing default form submission and managing popup overlays
  • Dynamic Elements: Creating and managing event listeners on dynamically created DOM elements

Running the Project

npm install
npm run dev    
npm run bundle


Project Link: The Odin Project - Todo List