Water's 14‑Day JavaScript Chill Timetable

1–2 bites per day. Keep it breezy, stay consistent. Check things off as you go ✅

Quick refs: MDN JS · javascript.info

Day 1 — Storage 101

Week 1
  • Learn: localStorage & sessionStorage
  • Mini task: Save a username and show it on reload
Hints
  • localStorage.setItem(key, value), localStorage.getItem(key)
  • Remember: values are strings → use JSON.stringify / JSON.parse for objects

Day 2 — Timers

Week 1
  • Learn: setTimeout & setInterval
  • Mini task: Build a digital clock
Hints
  • Update DOM every second with setInterval
  • Cleanup with clearInterval when needed

Day 3 — Promises

Week 1
  • Learn: Promise, .then & .catch
  • Mini task: Fake data loading with a promise + timeout
Hints
  • new Promise((res) => setTimeout(res, 1000))
  • Chain .then and handle errors with .catch

Day 4 — Fetch API

Week 1
  • Learn: fetch basics
  • Mini task: Fetch posts and display titles
Hints
  • fetch(url).then(r => r.json())
  • Render into a <ul> dynamically

Day 5 — Async/Await

Week 1
  • Learn: async / await
  • Mini task: Rebuild Day 4 using async/await
Hints
  • const data = await (await fetch(url)).json()
  • Wrap in try...catch to handle errors

Day 6 — Closures

Week 1
  • Learn: Closures
  • Mini task: Counter with increment & reset
Hints
  • Return an inner function that "remembers" outer scope
  • Expose methods: inc(), reset()

Day 7 — Project: Todo (v1)

Week 1
  • Add tasks
  • Save in localStorage
  • Render on reload
Hints
  • Persist array of todos → JSON.stringify / JSON.parse
  • Re-render list after each change

Day 8 — ES Modules

Week 2
  • Learn: export / import
  • Mini task: Split utils into a separate file
Hints
  • Use type="module" on your script tag
  • Named vs default exports

Day 9 — Event Delegation

Week 2
  • One listener to rule them all
  • Mini task: Handle clicks for a dynamic list
Hints
  • Listen on parent; check event.target
  • Great for dynamic elements (e.g., todo delete)

Day 10 — Error Handling

Week 2
  • Learn: try...catch, graceful UI errors
  • Mini task: Show a user-friendly error box on failed fetch
Hints
  • Network can fail → always handle it
  • Consider retry or offline message

Day 11 — Array Power-Ups

Week 2
  • Learn: some, every, find
  • Mini task: Search/filter a list
Hints
  • some = any match, every = all match
  • find returns the first matching item

Day 12 — JSON Mastery

Week 2
  • Learn: JSON.stringify / JSON.parse
  • Mini task: Persist & retrieve a settings object
Hints
  • Store as string; parse back into object
  • Version your schema if you iterate later

Day 13 — Project: Weather App

Week 2
  • Fetch real or mock weather data
  • Show city, temp, condition
Hints
  • Free APIs exist; or mock with a local JSON file
  • Indicate loading + error states

Day 14 — Project: Todo (v2)

Week 2
  • Add delete & complete toggles
  • Filters: All / Active / Completed
  • Optional: Persist with a simple module structure
Hints
  • Use event delegation for list actions
  • Sync state ↔ storage on each change