Skip to content

utcofficial/Nexus

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Nexus Task Manager – Advanced DOM-Based Task Management System

📋 Project Title & Overview

Nexus Task Manager is a fully functional, interactive DOM-based web application designed to revolutionize personal task and workflow management. Built entirely with Vanilla JavaScript, HTML5, and CSS3, this application demonstrates advanced client-side logic, state management, and dynamic DOM manipulation without any framework dependencies.

The application solves the real-world problem of managing, organizing, and tracking tasks effectively with features like priority levels, due dates, categorization, task filtering, and persistent data storage using browser's LocalStorage API.


🎯 Problem Statement

The Challenge

In today's fast-paced world, individuals and teams struggle with:

  • Task Disorganization: Managing multiple tasks without a structured system
  • Priority Ambiguity: Difficulty identifying which tasks are most important
  • Progress Tracking: Lack of visibility into completed vs. pending work
  • Data Loss: Tasks being forgotten or lost due to absence of persistent storage
  • Workflow Fragmentation: Needing multiple tools for different task management aspects

The Solution

Nexus Task Manager provides a comprehensive, all-in-one task management platform that combines intuitive UI/UX with powerful functionality, enabling users to:

  • Create, edit, and delete tasks seamlessly
  • Prioritize work using three-level priority system (Low, Medium, High)
  • Categorize tasks for better organization
  • Track progress with real-time statistics
  • Filter tasks by status, priority, and search criteria
  • Manage deleted tasks with recovery options
  • Export task data for record-keeping

✨ Features Implemented

Core Task Management Features

1. Task Creation & Management

  • ✅ Add new tasks with comprehensive details (title, description, priority, category, due date)
  • ✅ Edit existing tasks with modal-based interface
  • ✅ Delete tasks with confirmation modal (prevents accidental deletions)
  • ✅ Mark tasks as completed/incomplete with toggle functionality
  • ✅ Bulk operations: Delete all tasks, select multiple tasks for batch operations

2. Task Filtering & Search

  • ✅ Filter by Status: All, Completed, Pending
  • ✅ Filter by Priority: All, High, Medium, Low
  • ✅ Real-time Search: Find tasks by title or description
  • ✅ Category-wise organization and filtering
  • ✅ Responsive filter UI with both desktop and mobile support

3. Priority & Importance System

  • ✅ Three-level priority system (Low, Medium, High) with visual indicators
  • ✅ Mark tasks as "Important" for quick identification
  • ✅ High-priority task counter in statistics dashboard
  • ✅ Color-coded priority indicators in task cards

4. Task Tracking & Analytics

  • ✅ Real-time statistics dashboard displaying:
    • Total Tasks
    • Completed Tasks
    • Pending Tasks
    • High Priority Tasks
  • ✅ Task completion timestamps
  • ✅ Task creation date tracking
  • ✅ Visual progress indicators

5. Due Date Management

  • ✅ Set optional due dates for tasks
  • ✅ Min date validation (prevents past dates)
  • ✅ Visual due date display in task cards
  • ✅ Sort tasks by due date (implicit through organization)

6. Data Persistence

  • LocalStorage Integration: All tasks persist across browser sessions
  • Automatic Saving: Changes instantly saved to LocalStorage
  • JSON Data Format: Structured task objects stored as JSON

7. Deleted Tasks Management

  • ✅ Soft Delete: Tasks moved to trash instead of permanent deletion
  • ✅ Restore Functionality: Recover deleted tasks from trash
  • ✅ Permanent Delete: Option to permanently remove tasks
  • ✅ Delete Countdown Timer: Visual timer showing when soft-deleted items will be permanently removed (30 days)
  • ✅ Batch Restore/Delete Operations

8. Export Functionality

  • ✅ Export all tasks as JSON file
  • ✅ Preserve complete task metadata
  • ✅ Downloadable backup for data safety

9. User Interface Excellence

  • ✅ Modern glassmorphism design with gradient backgrounds
  • ✅ Smooth animations and transitions
  • ✅ Toast notifications for user feedback (success, error, warning)
  • ✅ Modal dialogs for confirmations and edits
  • ✅ Responsive design for mobile, tablet, and desktop
  • ✅ Interactive form controls with visual feedback
  • ✅ Floating Action Button (FAB) for quick task addition

10. Accessibility & UX Features

  • ✅ Semantic HTML structure
  • ✅ ARIA labels and descriptions
  • ✅ Keyboard navigation support
  • ✅ Form validation with error messages
  • ✅ Visual feedback for all interactions
  • ✅ Loading states and animations

🏗️ DOM Concepts & Techniques Used

1. DOM Manipulation

// Dynamic element creation
const taskElement = document.createElement('div');
taskElement.classList.add('task-card');

// Content manipulation
element.textContent = 'New Title';
element.innerHTML = '<i class="fas fa-check"></i>';

// Style manipulation
element.style.backgroundColor = '#ff5722';
element.classList.add('completed');
  • Creating elements dynamically for task cards
  • Updating DOM based on user interactions
  • Removing/toggling elements based on state

2. Event Handling

// Event delegation for efficient handling
taskList.addEventListener('click', (e) => {
    if (e.target.closest('.delete-btn')) { 
        deleteTask(taskId); 
    }
});

// Form submission
taskForm.addEventListener('submit', handleAddTask);

// Input events
searchInput.addEventListener('input', (e) => {
    filterTasks(currentFilter, e.target.value);
});

// Event listeners for priority selection
document.querySelectorAll('.priority-option').forEach(option => {
    option.addEventListener('click', selectPriority);
});
  • Click Events: Task actions (edit, delete, complete)
  • Form Submission: Add/edit task submission
  • Input Events: Real-time search filtering
  • Event Delegation: Efficient handling of dynamically added elements
  • Custom Event Handling: Priority selector, category selection

3. DOM Traversal & Selection

// Query selectors
const task = document.getElementById('taskItem-123');
const allTasks = document.querySelectorAll('.task-card');
const parent = element.closest('.container');

// Parent/Child traversal
const taskCard = button.closest('.task-card');
const children = container.querySelectorAll(':scope > .task-item');
  • Using getElementById() for specific elements
  • Using querySelector() and querySelectorAll() for complex selections
  • Traversing DOM tree to find parent/child elements
  • Using closest() for event delegation

4. Class Manipulation

element.classList.add('active');
element.classList.remove('hidden');
element.classList.toggle('completed');
element.classList.contains('priority-high');
  • Adding/removing classes for styling changes
  • Toggling states (active, completed, expanded)
  • Conditional class application based on data

5. Conditional DOM Rendering

if (tasks.length === 0) {
    taskList.innerHTML = '<p class="empty-state">No tasks</p>';
} else {
    taskList.innerHTML = tasks.map(renderTaskHTML).join('');
}
  • Showing/hiding elements based on conditions
  • Rendering content based on filter criteria
  • Displaying statistics based on task data

6. Data Attributes

<div class="priority-option" data-priority="high"></div>

// Accessing data attributes
const priority = element.dataset.priority;
element.dataset.taskId = '12345';
  • Using data attributes to store metadata
  • Retrieving data from DOM elements
  • Using for event delegation logic

7. State Management

// Client-side state storage
let tasks = JSON.parse(localStorage.getItem('nexusTasks')) || [];
let currentFilter = 'all';

// Updating DOM based on state changes
updateStats(); // Re-render statistics
renderTasks(); // Re-render task list
saveTasks(); // Persist state to LocalStorage
  • Maintaining application state in JavaScript
  • Keeping DOM in sync with data state
  • Persisting state to LocalStorage

8. Dynamic Content Updates

// Update specific text content
document.getElementById('totalTasks').textContent = tasks.length;

// Update HTML content
taskList.innerHTML = generateTasksHTML(filteredTasks);

// Update form values
document.getElementById('editTaskTitle').value = task.title;
  • Updating text content
  • Rendering HTML from data
  • Populating form fields

9. Modal Management

// Show modal
editModal.classList.add('active');

// Close modal
editModal.classList.remove('active');

// Handle backdrop click
modalBackdrop.addEventListener('click', closeModal);
  • Creating modal dialogs dynamically
  • Managing modal visibility with classes
  • Handling modal interactions

10. Animation Coordination

// Using CSS transitions triggered by class changes
element.classList.add('fade-out');

// Adding animation classes from animate.css
element.classList.add('animate__animated', 'animate__slideInUp');

// Smooth scrolling
element.scrollIntoView({ behavior: 'smooth', block: 'start' });
  • Coordinating CSS animations with JavaScript
  • Using animation libraries with DOM classes
  • Implementing smooth scroll behavior

💻 Technology Stack

Frontend Technologies

  • HTML5: Semantic markup and structure
  • CSS3: Advanced styling with:
    • Flexbox for layout
    • Grid for responsive design
    • CSS Variables for theming
    • Glassmorphism effects
    • Gradient backgrounds
    • Media queries for responsiveness
  • JavaScript (ES6+): Core application logic
    • Arrow functions
    • Destructuring
    • Template literals
    • Async/await patterns
    • Array methods (map, filter, find, etc.)

External Libraries & Resources

  • Font Awesome 6.4.0: Icon library for UI elements
  • Google Fonts: Typography (Poppins, Orbitron)
  • Animate.css 4.1.1: CSS animation library
  • LocalStorage API: For data persistence

Browser APIs Used

  • LocalStorage: Client-side data persistence
  • Date API: Task creation and due date handling
  • DOM API: Complete DOM manipulation
  • Event API: Comprehensive event handling
  • CSS Object Model: Dynamic styling

📁 Project Structure

Task Manager/
├── index.html          # Main dashboard page
├── index.css           # Main styling
├── index.js            # Main application logic
└── Readme.md           # Project documentation

File Descriptions

index.html (269 lines)

  • Main application interface
  • Header with logo and export button
  • Statistics dashboard with real-time counters
  • Task creation form with complete fields
  • Task list container for rendering tasks
  • Filter and search controls
  • Modal dialogs for edit and delete confirmations

index.js (581 lines)

  • Core application logic
  • Task CRUD operations (Create, Read, Update, Delete)
  • Event listeners and handlers
  • LocalStorage management
  • Statistics calculation
  • Task filtering and searching
  • Toast notification system
  • Export functionality

task/task.html (345 lines)

  • Enhanced task management interface
  • Includes all features of index.html
  • Additional restore/recover deleted tasks functionality
  • Menu-based actions with dropdown
  • Multi-select task operations

task/task.js (957 lines)

  • Advanced task management logic
  • Soft delete with countdown timer
  • Restored tasks functionality
  • Bulk operations (delete selected, restore selected)
  • Delete countdown auto-update
  • Menu and filter dropdowns

index.css

  • Responsive design layouts
  • Glassmorphism styling
  • Animation definitions
  • Theme colors and gradients
  • Mobile-first responsive design

task/task.css

  • Enhanced styling for task page
  • Dropdown menus
  • Modal styling
  • Additional animations

🚀 Installation & Setup

Prerequisites

  • Modern web browser (Chrome, Firefox, Safari, Edge - ES6+ support)
  • Git (optional, for cloning repository)

Steps to Run the Project

Method 1: Direct File Access

  1. Download the project files

    git clone https://github.com/yourusername/nexus-task-manager.git
    cd nexus-task-manager
  2. Open in browser

    • Simply open index.html in your web browser
    • Or use Live Server extension in VS Code for development

Method 2: Using VS Code Live Server

  1. Install "Live Server" extension in VS Code
  2. Right-click on index.html
  3. Select "Open with Live Server"
  4. Application will open in default browser

Method 3: Local HTTP Server (Python)

# Python 3
python -m http.server 8000

# Python 2
python -m SimpleHTTPServer 8000

Then navigate to http://localhost:8000 in browser.

No Installation Required

  • No package manager (npm, yarn) needed
  • No build process required
  • No backend server needed
  • Works offline with LocalStorage persistence

📖 How to Use

Creating a Task

  1. Scroll to the "Add New Task" form
  2. Enter task Title (required)
  3. Add Description (optional)
  4. Select Priority level (Low, Medium, High)
  5. Choose Category (optional, defaults to "General")
  6. Set Due Date (optional, min date is today)
  7. Check Mark as Important if needed
  8. Click "Add Task" button
  9. Task appears in the main list and statistics update

Viewing & Filtering Tasks

  1. View All: Click "All Tasks" filter (default)
  2. View by Status:
    • "Completed" - show finished tasks
    • "Pending" - show incomplete tasks
  3. View by Priority:
    • "High Priority" - show urgent tasks
    • "Medium Priority"
    • "Low Priority"
  4. Search: Type in search box to find tasks by title

Editing a Task

  1. Click the "Edit" button on a task card
  2. Modify any field in the modal
  3. Click "Update Task" to save
  4. Close modal with "Cancel" or by clicking outside

Completing a Task

  • Click the checkmark icon on a task card
  • Task moves to completed state
  • Statistics update automatically

Deleting a Task

  1. Click the "Delete" button on task card
  2. Confirm deletion in modal
  3. Task moves to trash/recycle (soft delete)
  4. Task can be restored within 30 days

Managing Deleted Tasks

  1. Click Menu (three dots) in header
  2. Select "Restore Deleted Tasks"
  3. View all deleted tasks with countdown timers
  4. Restore: Move back to active tasks
  5. Permanently Delete: Remove forever

Exporting Tasks

  1. Click "Export" button in header
  2. JSON file downloads with all tasks
  3. Useful for backup or data transfer

Using Statistics Dashboard

  • Total Tasks: Count of all tasks created
  • Completed: Count of finished tasks
  • Pending: Count of incomplete tasks
  • High Priority: Count of high-priority tasks

🎮 Advanced Features

1. Real-time Search

  • Searches across task titles and descriptions
  • Works with active filter (doesn't override filters)
  • Case-insensitive search

2. Soft Delete with Recovery

  • Deleted tasks stored separately
  • 30-day countdown before permanent deletion
  • Restore deleted tasks anytime
  • Batch restore/delete operations

3. Automatic Statistics

  • Real-time updates as tasks are modified
  • Visual display with icons
  • Helps track productivity

4. Data Persistence

  • Automatically saves to browser's LocalStorage
  • Survives browser restart
  • No server-side storage needed

5. Toast Notifications

  • Success messages for completed actions
  • Error alerts for invalid inputs
  • Warning messages for edge cases
  • Auto-dismiss after 5 seconds

6. Responsive Design

  • Works on desktop (1920px+)
  • Optimized for tablet (768px-1024px)
  • Mobile-first approach (320px+)
  • Flexible layouts using Flexbox/Grid

⚙️ Technical Implementation Details

State Management Pattern

// Global state
let tasks = JSON.parse(localStorage.getItem('nexusTasks')) || [];

// State changes
function addTask(newTask) {
    tasks.unshift(newTask);
    saveTasks();           // Persist to localStorage
    renderTasks();         // Update DOM
    updateStats();         // Update statistics
    showToast(...);        // User feedback
}

Event Delegation Strategy

// Single listener for multiple elements
taskList.addEventListener('click', (e) => {
    const editBtn = e.target.closest('.edit-btn');
    const deleteBtn = e.target.closest('.delete-btn');
    const completeBtn = e.target.closest('.complete-btn');
    
    if (editBtn) editTask(...);
    if (deleteBtn) deleteTask(...);
    if (completeBtn) toggleTaskCompletion(...);
});

Form Validation Pattern

function handleAddTask(e) {
    e.preventDefault();
    
    const title = document.getElementById('taskTitle').value.trim();
    
    // Validation
    if (!title) {
        showToast('Error!', 'Title is required', 'error');
        return;
    }
    
    // Processing
    createTask(title);
    clearForm();
}

LocalStorage Sync Pattern

// Save to LocalStorage
function saveTasks() {
    localStorage.setItem('nexusTasks', JSON.stringify(tasks));
}

// Load from LocalStorage
function loadTasks() {
    tasks = JSON.parse(localStorage.getItem('nexusTasks')) || [];
    renderTasks();
}

🛠️ Customization Guide

Changing Theme Colors

Edit CSS variables in the stylesheet:

:root {
    --primary-color: #6366f1;
    --success-color: #10b981;
    --error-color: #ef4444;
}

Adding New Task Fields

  1. Add input field to HTML form
  2. Extract value in handleAddTask()
  3. Add property to task object
  4. Display in task card template
  5. Update edit functionality

Modifying Priority Levels

Change in priority selector HTML and JavaScript:

<div class="priority-option priority-critical" data-priority="critical">Critical</div>

Adjusting Delete Countdown

Change timer duration in task.js:

const DELETE_COUNTDOWN_DAYS = 30; // Modify this value

🔍 Known Limitations

Current Limitations

  1. Browser-Only Storage: Data limited to single device/browser (no cloud sync)
  2. Storage Limit: LocalStorage typically limited to 5-10MB per domain
  3. No User Authentication: All data publicly accessible in browser
  4. No Real-time Sync: No synchronization across multiple tabs/devices
  5. No Backend: Export/import requires manual file handling
  6. Mobile Design: While responsive, touch gestures not fully optimized
  7. No Categories Backend: Category selection limited to predefined list
  8. No Recurring Tasks: Cannot set repeating task patterns

Future Enhancement Opportunities

  • Backend API integration for cloud storage
  • User authentication and account system
  • Multi-device synchronization
  • Task reminders and notifications
  • Recurring task scheduling
  • Team collaboration features
  • Mobile app version
  • Dark/Light theme toggle
  • Task tags and custom categories
  • Analytics and productivity reports

🐛 Troubleshooting

Common Issues

Tasks Not Saving

  • Issue: Tasks disappear after page refresh
  • Solution: Check if LocalStorage is enabled in browser settings
  • Check: Open DevTools → Application → LocalStorage → Look for 'nexusTasks'

Form Not Submitting

  • Issue: "Add Task" button doesn't work
  • Solution: Ensure task title field has content (required field)
  • Check: Browser console for JavaScript errors (F12 → Console)

Filter Not Working

  • Issue: Filtered view shows incorrect tasks
  • Solution: Clear search field if using both search and filter
  • Check: Refresh page (filters reset to default)

Deleted Tasks Not Restoring

  • Issue: Cannot find task in restore menu
  • Solution: Check if 30-day countdown expired (permanent deletion)
  • Check: Task page (task.html) for advanced restoration

Styles Not Applying

  • Issue: CSS not loading correctly
  • Solution: Ensure all CSS files are in correct directories
  • Check: Browser DevTools → Network tab to confirm CSS file loads

Icons Not Showing

  • Issue: Icons appear as blank squares
  • Solution: Requires internet for Font Awesome CDN
  • Check: Internet connection and CDN availability

📊 Browser Compatibility

Browser Version Support
Chrome 90+ ✅ Full Support
Firefox 88+ ✅ Full Support
Safari 14+ ✅ Full Support
Edge 90+ ✅ Full Support
Opera 76+ ✅ Full Support
IE 11 All ❌ Not Supported

Why IE Not Supported?

  • No ES6+ support (arrow functions, template literals, destructuring)
  • No CSS Grid/Flexbox full support
  • No LocalStorage API limitations

📚 Resources & References

DOM API Documentation

JavaScript Documentation

CSS Resources

External Libraries


📋 Checklist for Submission

  • ✅ Fully functional DOM-based web application
  • ✅ Built with Vanilla JavaScript (no frameworks)
  • ✅ Heavy DOM manipulation throughout
  • ✅ Comprehensive event handling
  • ✅ Application-level state management
  • ✅ Client-side data persistence (LocalStorage)
  • ✅ Responsive design implementation
  • ✅ Real-world problem solving (task management)
  • ✅ Edge case handling (validation, confirmations)
  • ✅ Well-structured, commented code
  • ✅ Professional README documentation
  • ✅ Ready for demo video submission

👤 Project Information

Project Name: Nexus Task Manager
Type: DOM-Based Web Application
Category: Productivity / Task Management
Framework: Vanilla JavaScript (No External Frameworks)
Version: 1.0.0
Last Updated: January 2026


📝 Notes for Evaluators

Code Quality Highlights

  1. Modular Functions: Each function has single responsibility
  2. Naming Conventions: Clear, descriptive variable and function names
  3. Comments: Strategic comments explaining complex logic
  4. Error Handling: Validation and error messages for user actions
  5. Performance: Efficient DOM manipulation, event delegation

DOM Mastery Demonstrated

  • Advanced DOM traversal with closest(), querySelector(), querySelectorAll()
  • Event delegation for dynamic elements
  • Conditional rendering based on state
  • State-driven DOM updates
  • Class-based styling management
  • Modal and overlay management
  • Real-time DOM updates with user feedback

Real-World Application Features

  • Complete CRUD operations (Create, Read, Update, Delete)
  • Data persistence across sessions
  • Soft delete with recovery mechanism
  • Real-time statistics and analytics
  • Search and filter functionality
  • User feedback system (notifications)
  • Responsive, production-ready UI

📞 Support

For issues or questions:

  1. Check the Troubleshooting section
  2. Review browser console for errors (F12)
  3. Verify LocalStorage is enabled
  4. Try clearing browser cache and reload

Developed with ❤️ for Web Dev II (Batch 2029) Final Project

This project demonstrates mastery of DOM manipulation, JavaScript fundamentals, and frontend engineering principles without relying on any external frameworks.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors