A minimal full-stack JavaScript Todo application intended for learning unit testing with Vitest and end-to-end testing with Cypress (added later). This version has no database; tasks are stored in the browser's localStorage.
- Backend: Node.js (Express) serving static files and simple health/version endpoints
- Frontend: Vanilla JavaScript, HTML, CSS (no framework)
- Storage:
localStoragein the browser (todo_tasks_v1) - Dev tooling: None required initially (tests will be added in a later phase: this is the exercise)
- Create a task (topic, priority, status, description)
- Update a task (edit all fields)
- Mark task as complete (toggle complete/undo)
- Delete a task
- Sorted list: not-done first, higher priority first, newest first
-
Ensure Node.js 18+ is installed.
-
Install dependencies:
npm install
-
Run the server:
npm start
-
Open the app at
http://localhost:5173
.
├─ public/
│ ├─ index.html # UI markup
│ ├─ styles.css # styling
│ └─ app.js # localStorage CRUD logic
├─ server.js # Express static server + health/version
├─ package.json
└─ README.md
- Unit tests (Vitest): pure functions and DOM interactions in
public/app.jscan be factored further if needed. - E2E tests (Cypress): target user flows—create, update, complete/undo, delete; use
/healthto check server readiness.