Week 1 — HTML, CSS & React UI foundations
Learn HTML document structure and CSS layout (box model, positioning, Flexbox/Grid), then build React foundations — then ship a Tic-Tac-Toe mini-project.
- 1. HTML document structureOpen
Document outline, semantic landmarks, headings, lists, links, and basic form controls so you can read markup before JSX.
- 2. CSS box model & normal flowOpen
Content, padding, border, margin, box-sizing, block vs inline vs inline-block, and margin collapse in normal flow.
- 3. CSS positioning & stackingOpen
Position modes, containing blocks, offsets, stacking, and when absolute is the wrong tool for page layout.
- 4. Flexbox & Grid alignmentOpen
Flex direction, wrapping, justify-content, align-items, gap; Grid tracks and simple alignment; choosing flex vs grid.
- 5. What is React?Open
Declarative UI, component trees, and one-way data flow.
- 6. Your first componentOpen
Function components, component composition, and capitalized component names.
- 7. Importing and exporting componentsOpen
Named exports, default exports, and module boundaries.
- 8. Writing JSXOpen
Single roots, fragments, attributes, and self-closing elements.
- 9. JavaScript in JSX with curly bracesOpen
Expressions vs statements, dynamic attributes, and nullish fallbacks.
- 10. Passing props to a componentOpen
One-way data flow, prop naming, and children.
- 11. Conditional renderingOpen
Ternary, &&, early return, and empty states.
- 12. Rendering listsOpen
map, key placement, and why array indexes can break dynamic lists.
- 13. Keeping components pureOpen
Pure rendering, local mutation, and predictable re-renders.
- 14. Responding to eventsOpen
Learn the common React DOM handlers with examples, then the mistakes that cause the most bugs.
- 15. SPA routing: React Router & route guardsOpen
Learn how React apps route with react-router-dom (BrowserRouter, Routes, Link, navigate, params), how public vs private routes work, then how this monorepo uses Next App Router instead for the product shell.
- 16. State: a component’s memoryOpen
useState, setters, and local state ownership.
- 17. Render and commitOpen
Triggering updates, rendering, reconciliation, and commit work.
- 18. State as a snapshotOpen
Snapshot semantics, closures, and scheduled renders.
- 19. Queueing state updatesOpen
Batching, functional updaters, and replace versus update operations.
- 20. Updating objects in stateOpen
Immutability, spread syntax, and nested updates.
- 21. Updating arrays in stateOpen
Adding, removing, replacing, and sorting immutable arrays.
End-of-week mini-project · practice only
Tic-Tac-Toe
Build a playable Tic-Tac-Toe board with React components, state, lists, and event handlers.
Definition. A Tic-Tac-Toe mini-project is a small interactive React app that applies document/UI foundations from Week 1 — components, props, conditional rendering, lists with stable keys, and immutable state updates — without Redux, Query, or Next.
In simpler words. Two players take turns on a 3×3 board. You own all the UI and game state in React. No Nest yet.
Deliverables
- Square / Board / Game components with props flowing down and events bubbling up
- useState for board squares, current player (X/O), and optional move history
- Winner / draw / next-player status derived from board state (no DOM queries)
- Stable keys if you render a move list; empty vs mid-game vs finished views
- Optional: “Jump to move” history like the official React tutorial
Acceptance checklist
- [ ] Board renders 9 squares from state (not hard-coded nine separate states)
- [ ] Clicking a square updates immutable state (no board[i] = 'X' mutation)
- [ ] Winner / draw / next player shown with conditional rendering
- [ ] Handlers are passed, not called during render
- [ ] Empty board ≠ finished game (distinct UI)
- [ ] (Bonus) Move history list uses stable keysTips
- Follow react.dev’s Tic-Tac-Toe tutorial first, then rebuild from memory without copy-paste.
- HTML/CSS foundations still apply: semantic structure, box model, Flexbox for the grid.
- Keep this local-only — Nest and Redux arrive in later weeks.