Ömer Şengül

createTaskManager

byÖmer ŞengülCreated February 25, 2026 at 04:50 PM
createTaskManager
1const createTaskManager = () => {
2  let tasks = [];
3  let idCounter = 1;
4
5  const addTask = (title, priority = "medium", dueDate = null) => {
6    const task = {
7      id: idCounter++,
8      title,
9      priority,
10      dueDate: dueDate ? new Date(dueDate) : null,
11      completed: false,
12      createdAt: new Date(),
13    };
14    tasks = [...tasks, task];
15    return task;
16  };
17
18  const completeTask = (id) => {
19    tasks = tasks.map((t) => (t.id === id ? { ...t, completed: true } : t));
20  };
21
22  const deleteTask = (id) => {
23    tasks = tasks.filter((t) => t.id !== id);
24  };
25
26  const getByPriority = (priority) =>
27    tasks.filter((t) => t.priority === priority && !t.completed);
28
29  const getOverdue = () => {
30    const now = new Date();
31    return tasks.filter((t) => t.dueDate && t.dueDate < now && !t.completed);
32  };
33
34  const getSummary = () => ({
35    total: tasks.length,
36    completed: tasks.filter((t) => t.completed).length,
37    pending: tasks.filter((t) => !t.completed).length,
38    highPriority: getByPriority("high").length,
39  });
40
41  const sortByPriority = () => {
42    const order = { high: 0, medium: 1, low: 2 };
43    return [...tasks].sort((a, b) => order[a.priority] - order[b.priority]);
44  };
45
46  return { addTask, completeTask, deleteTask, getSummary, getOverdue, sortByPriority };
47};
48
49// Kullanım
50const manager = createTaskManager();
51
52manager.addTask("Fix login bug", "high", "2024-01-10");
53manager.addTask("Write docs", "low", "2024-02-01");
54manager.addTask("Deploy to prod", "high", "2024-01-08");
55
56manager.completeTask(1);
57
58console.log(manager.getSummary());
59console.log(manager.sortByPriority());
60console.log(manager.getOverdue());

Description

A lightweight task manager built with a factory function pattern. Supports adding, completing, and deleting tasks with priority levels and due dates. Includes filtering by priority, overdue detection, and sorting — all without classes or mutation.

Discussion (0)

Sort by: