Skip to content

LocalTaskManager is a lightweight task management web app built with vanilla HTML, CSS, and JavaScript, featuring persistent local storage, smooth UI animations, inline editing, and undo functionality — all without any frameworks.

Notifications You must be signed in to change notification settings

skyforge-glitch/LocalTaskManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📝 Smart Task Manager (Vanilla JavaScript)

A lightweight, fully client-side task management application built using HTML, CSS, and Vanilla JavaScript, with a strong focus on user experience, predictable state handling, and maintainable UI logic — without relying on external frameworks.

This project explores practical frontend engineering patterns, including isolated animations, persistent storage, inline editing, undo actions, and time-based task expiry.


📌 Table of Contents

  1. Project Overview
  2. Features
  3. UX & Design Principles
  4. Project Structure
  5. Core Logic Overview
  6. Animation Handling Strategy
  7. Data Persistence
  8. Edge Cases Considered
  9. Installation & Usage
  10. Technology Stack
  11. Future Enhancements
  12. Learning Outcomes
  13. License

Project Overview

Smart Task Manager is a feature-focused to-do application designed to behave like a real product rather than a simple demo.

The project emphasizes:

  • Intentional UI behavior
  • Predictable state transitions
  • Minimal but effective visual feedback
  • Zero external dependencies

The goal is to demonstrate how core frontend concepts can be implemented cleanly using vanilla JavaScript.


Features

➕ Task Creation

  • Add tasks via button click or Enter key
  • Input validation prevents empty submissions
  • Automatic capitalization for consistency

✔ Task Completion

  • Custom animated checkbox
  • Visual feedback for completed tasks
  • State updates without full list re-render

✏ Inline Editing

  • Double-click to edit tasks
  • Enter to save
  • Escape or blur to cancel changes

🗑 Delete with Undo

  • Smooth delete animation
  • Undo toast available for 5 seconds
  • Task restoration handled safely

⏱ Task Expiry

  • Tasks older than 24 hours move to an Expired section
  • Expired tasks can be restored manually

💾 Persistent Storage

  • Tasks stored using browser localStorage
  • Data persists across refreshes and browser restarts

UX & Design Principles

This project follows practical UX guidelines:

  • No unnecessary re-renders
  • Only affected items animate
  • Keyboard-friendly interactions
  • Clear visual hierarchy
  • Animations used for feedback, not decoration

The interface is designed to remain responsive and predictable during frequent user actions.


Project Structure

├── index.html      # Application structure
├── style.css       # Styling, layout, and animations
├── script.js       # Core logic and state handling
└── README.md       # Documentation

Core Logic Overview

Task Creation Flow

  1. User enters task text
  2. Input validation occurs
  3. Task object created with timestamp
  4. State updated immutably
  5. UI re-rendered with targeted animation

Task Completion

  • State toggled immutably
  • Only the updated task receives animation
  • List remains stable

Inline Editing

  • Task text replaced with an input field
  • Original task metadata preserved
  • Clean save/cancel handling

Delete with Undo

  • Task removed visually
  • Temporarily stored in memory
  • Restored if undo action is triggered within timeout

Animation Handling Strategy

Problem Addressed:
Avoiding full list animations on every state update.

Approach Used:

  • No default animations on list items
  • Animation classes applied conditionally:
    • animate-in for newly added tasks
    • animate-check for completion toggles
  • Animation flags reset after render

This mirrors component-level updates seen in modern frameworks, implemented manually.


Data Persistence

  • Uses browser localStorage
  • Stores full task objects including timestamps
  • JSON serialization for safety
  • No backend or external services required

Edge Cases Considered

  • Empty task submissions
  • Rapid add/delete operations
  • Undo timeout cleanup
  • Editing tasks to empty values
  • Conflicts between editing and completion
  • Restoring expired tasks

Installation & Usage

Option 1: Run Locally

git clone <repo-url>
cd smart-task-manager
open index.html

Option 2: Direct Use

Open index.html in any modern browser.

No build steps or dependencies required.


Technology Stack

Layer Technology
Markup HTML5
Styling CSS3 (Flexbox, animations)
Logic Vanilla JavaScript (ES6+)
Storage Browser LocalStorage
Icons Font Awesome

Future Enhancements

  • Drag-and-drop task reordering
  • System-aware dark mode
  • Task priorities
  • Due dates and reminders
  • Basic task analytics

Learning Outcomes

This project helped reinforce:

  • State-driven UI updates
  • Non-trivial DOM manipulation
  • Controlled animation patterns
  • UX-focused frontend decisions
  • Writing maintainable vanilla JavaScript

License

This project is open-source and available for learning and portfolio use.


Final Note

This project focuses on understanding fundamentals and building predictable user interfaces without depending on frameworks, emphasizing clarity, maintainability, and user experience.

About

LocalTaskManager is a lightweight task management web app built with vanilla HTML, CSS, and JavaScript, featuring persistent local storage, smooth UI animations, inline editing, and undo functionality — all without any frameworks.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published