Fullstack CourseLearn by building
Back to roadmap

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.

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 keys

Tips

  • 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.