A browser todo list — HTML, CSS, and vanilla JavaScript.
No frameworks. No backend. Your list stays in localStorage.
Open the live app · Ivan Ivanov · MIT
|
Lists
Bin
|
Editor (pencil)
Toolbar
|
|
On the row
|
Reorder & look
|
| Step | What to do |
|---|---|
| 1 | Type a task and click Add (or press Enter) |
| 2 | Search as you type. Search in picks All / Active / Completed / Bin. × clears the box |
| 3 | Sort by date added, due, priority, or Custom order. Tag filters Work / Home / Personal |
| 4 | Drag the 6 dots, or Tab → Space → arrows → Space. On a phone, hold the dots until the olive ring, then slide. Check the circle to complete. Move all to Bin clears Completed |
| 5 | Double-click to rename, or the pencil for the full editor. Close or click the backdrop to save |
| 6 | Cream × sends one task to the Bin |
| 7 | Open Bin to restore, restore all, delete forever (cream ×, rose hover), or empty |
| 8 | Click the sun / moon switch for Light / Dark |
Each visitor’s list is stored only in their own browser.
Open index.html in a browser, or use Live Server. No install step.
todo-app/
├── index.html
├── README.md
├── LICENSE
├── .gitignore
└── assets/
├── css/style.css
├── js/script.js
└── screenshots/
Screenshots of the real HTML and CSS at each main release live in a closed section below. Bugfix tags (v1.3.1, v1.7.1, v1.7.2, v1.8.1, v1.8.2, v1.9.1, v1.12.1, v1.15.1) are skipped. Same sample todos in every shot.
Show version screenshots
Build history
The app was built in phases — structure and styling first, then behavior, then persistence and a public release.
| Phase | Focus | Status |
|---|---|---|
| Phase 1 | HTML structure, semantic markup, accessibility basics | Done |
| Phase 2 | CSS styling, layout, completed toggle, custom checkboxes | Done |
| Phase 3 | JavaScript — add, delete, complete, move todos | Done |
| Phase 4 | Persist todos, empty states, and inline edit | Done |
| Phase 5 | GitHub Pages deploy and README for v1.0.0 | Done |
| Phase 6 | Bin — restore, restore all, empty, delete forever | Done |
| Phase 7 | Dark mode with saved theme | Done |
| Phase 8 | Task editor overlay — notes, due date, priority, created date | Done |
| Phase 9 | Search / filter by todo name | Done |
| Phase 10 | Move all completed todos to the Bin | Done |
| Phase 11 | Sort by date added, due date, or priority | Done |
| Phase 12 | Search scope — All / Active / Completed / Bin | Done |
| v1.7.1 | Search toolbar card — Search, Search in, and Sort grouped | Done |
| v1.7.2 | Add text box hover — gold border only, no bronze fill | Done |
| Phase 13 | Due-soon hint on the row — Overdue / Today / Tomorrow | Done |
| v1.8.1 | Theme switch — sun / moon pill instead of the Dark / Light chip | Done |
| v1.8.2 | Even sun rays (SVG) and Safari press hop fix | Done |
| Phase 14 | Tags / color — Work, Home, Personal, and a filter by tag | Done |
| v1.9.1 | Search glass on the right, and a matching × to clear | Done |
| Phase 15 | Subtasks in the editor — count, progress bar, left rail | Done |
| Phase 16 | Drag to reorder — left grip, custom order | Done |
| Phase 17 | Recurring tasks — Repeat in ☰, weekday circles, Last done | Done |
| v1.12.1 | Custom order restore, collapse on complete, editor polish | Done |
| Phase 18 | Reminders — pills in ☰, row caption, toast | Done |
| Phase 19 | Keyboard reorder — Space to pick up, arrows to move | Done |
| Phase 20 | Touch drag — hold the 6-dot grip, olive ring, slide | Done |
| v1.15.1 | iOS freeze fix — follow the finger on document after a touch hold | Done |
| v1.16.0 | Row editor control — gray kebab, pencil button, dark-theme charcoal | Done |
| v1.17.0 | Cream × on the row and in Bin; Bin hover faded rose | Done |
MIT — see LICENSE.
















