const express = require('express'); const cors = require('cors'); const app = express(); let tasks = []; let currentId = 1; app.use(cors()); app.use(express.json()); app.use(express.static('public')); // Get all tasks app.get('/api/tasks', (req, res) => { res.json(tasks); }); // Create task app.post('/api/tasks', (req, res) => { const task = { id: currentId++, title: req.body.title }; tasks.push(task); res.status(201).json(task); }); // Update task app.put('/api/tasks/:id', (req, res) => { const id = parseInt(req.params.id); const task = tasks.find(t => t.id === id); if (!task) { return res.status(404).json({ message: "Task not found" }); } task.title = req.body.title; res.json(task); }); // Delete task app.delete('/api/tasks/:id', (req, res) => { const id = parseInt(req.params.id); tasks = tasks.filter(t => t.id !== id); res.status(204).send(); }); // Server const PORT = 3000; app.listen(PORT, () => { console.log(`Server running at http://localhost:${PORT}`); }); const taskForm = document.getElementById("task-form"); const taskInput = document.getElementById("task-input"); const taskList = document.getElementById("task-list"); const API_URL = "/api/tasks"; // Read Tasks async function fetchTasks(){ const res = await fetch(API_URL); const tasks = await res.json(); taskList.innerHTML = ""; tasks.forEach(addTaskToDOM); } // Display Task function addTaskToDOM(task){ const li = document.createElement("li"); li.textContent = task.title + " "; // Edit Button const editBtn = document.createElement("button"); editBtn.textContent = "Edit"; editBtn.onclick = async ()=>{ const newTitle = prompt("Edit Task",task.title); if(newTitle){ await fetch(`${API_URL}/${task.id}`,{ method:"PUT", headers:{ "Content-Type":"application/json" }, body:JSON.stringify({ title:newTitle }) }); fetchTasks(); } }; // Delete Button const deleteBtn = document.createElement("button"); deleteBtn.textContent = "Delete"; deleteBtn.onclick = async()=>{ await fetch(`${API_URL}/${task.id}`,{ method:"DELETE" }); fetchTasks(); }; li.appendChild(editBtn); li.appendChild(deleteBtn); taskList.appendChild(li); } // Add Task taskForm.onsubmit = async(e)=>{ e.preventDefault(); const title = taskInput.value.trim(); if(title==="") return; await fetch(API_URL,{ method:"POST", headers:{ "Content-Type":"application/json" }, body:JSON.stringify({ title:title }) }); taskInput.value=""; fetchTasks(); }; // Load Tasks fetchTasks();