const express = require("express"); const fs = require("fs"); const path = require("path"); const app = express(); const PORT = 3005; const DATA_FILE = path.join(__dirname, "todos.json"); app.use(express.json()); app.use(express.static("public")); // Load todos // Load todos function loadTodos() { if (!fs.existsSync(DATA_FILE)) { // ✅ Create file with empty array if missing fs.writeFileSync(DATA_FILE, "[]", "utf-8"); return []; } const data = fs.readFileSync(DATA_FILE, "utf-8"); if (!data.trim()) return []; // ✅ handle empty file try { return JSON.parse(data); } catch (err) { console.error("Error parsing todos.json:", err); return []; // fallback } } // Delete todo app.delete("/api/todos/:id", (req, res) => { let todos = loadTodos(); todos = todos.filter((todo) => todo.id != req.params.id); saveTodos(todos); res.json({ success: true }); }); // Save todos function saveTodos(todos) { fs.writeFileSync(DATA_FILE, JSON.stringify(todos, null, 2)); } // Get all todos app.get("/api/todos", (req, res) => { res.json(loadTodos()); }); function formatDateTime(isoString) { const d = new Date(isoString); const date = d.toLocaleDateString(); // e.g. 8/4/2026 const time = d.toLocaleTimeString("en-US", { hour: "2-digit", minute: "2-digit", second: "2-digit", hour12: true, }); // e.g. 05:30:33 PM return `${date} ${time}`; } // Add new todo app.post("/api/todos", (req, res) => { const todos = loadTodos(); const now = new Date(); const newTodo = { id: Date.now(), text: req.body.text || "", // ✅ use formatted date+time date: req.body.date ? formatDateTime(req.body.date) : formatDateTime(now), title: req.body.title || "", status: "pending", private: req.body.private || false, }; todos.push(newTodo); saveTodos(todos); res.json(newTodo); }); // Update todo (status, privacy) app.put("/api/todos/:id", (req, res) => { let todos = loadTodos(); todos = todos.map((todo) => todo.id == req.params.id ? { ...todo, ...req.body } : todo, ); saveTodos(todos); res.json({ success: true }); }); app.listen(PORT, () => console.log(`Server running at http://localhost:${PORT}`), );