Day 1 Starter
Set up your build environment Install Node 20, set up a Vite + React project, initialise a public GitHub repo, and push your first commit. Your repo is the spine of the next 60 days.
Node + package manager setup Vite project scaffold First commit pushed https://github.com/riya-nandan/abtalks-60/commit/e0301Day 2 Starter
Semantic HTML profile card Build a profile card using only semantic HTML — header, article, figure, footer. No divs allowed except for layout wrappers.
Semantic element choice Accessible image alt text Document outline https://github.com/riya-nandan/abtalks-60/commit/1c0602Day 3 Starter
CSS box model drills Recreate three layouts from screenshots using margin, padding, and border only. No flexbox yet — you need to feel the box model first.
Content vs border box Margin collapsing Pixel-accurate spacing https://github.com/riya-nandan/abtalks-60/commit/2a0903Day 4 Starter
Flexbox layout gauntlet Build a nav bar, a card row, and a sticky footer layout with flexbox. Handle wrapping at 390px without media queries.
Main vs cross axis flex-grow / shrink / basis Wrapping behaviour https://github.com/riya-nandan/abtalks-60/commit/380c04Day 5 Starter
CSS Grid dashboard shell Lay out a dashboard shell with CSS Grid: sidebar, header, content, and a responsive card area using grid-template-areas.
grid-template-areas minmax and auto-fit Responsive reflow https://github.com/riya-nandan/abtalks-60/commit/460f05Day 7 Starter
DOM events and delegation Build a to-do list in vanilla JS using a single delegated click listener on the container instead of per-item handlers.
Event bubbling Event delegation Dataset attributes https://github.com/riya-nandan/abtalks-60/commit/621507Day 8 Starter
Fetch and async/await Consume a public API, render the results, and handle loading and error states properly. Every request needs a failure path.
Promises and async/await Error handling Loading states https://github.com/riya-nandan/abtalks-60/commit/701808Day 9 Starter
Your first React components Convert yesterday's vanilla page into React components with props. Split into at least four components with clear boundaries.
JSX Props and composition Component boundaries https://github.com/riya-nandan/abtalks-60/commit/7e1b09Day 10 Starter
State with useState Build a filterable product list with controlled inputs. State lives in exactly one place — find where it belongs.
useState Controlled inputs Lifting state up https://github.com/riya-nandan/abtalks-60/commit/8c1e0aDay 11 Core
Effects and data fetching Fetch data inside a component with proper cleanup and an abort controller so fast navigation never leaves a stale response behind.
useEffect dependencies Cleanup functions AbortController https://github.com/riya-nandan/abtalks-60/commit/9a210b