The site you're looking at right now. Built progressively across five weeks,
starting with bare HTML structure and adding styling, interactivity, and an
API integration one checkpoint at a time.
The constraint of building it incrementally — rather than generating it all at once —
turned out to be the most useful part. Every time I added something new, I already
understood the layer underneath it.
What I learned: Semantic HTML, external CSS and JS files,
mobile-first responsive design, and how to have a useful conversation with an AI
rather than just asking it to do everything.
A hamburger menu that collapses on mobile screens and expands into a horizontal
nav on desktop. My first real JavaScript feature — it took longer than I expected
because I kept breaking the ARIA attributes.
What I learned: Event listeners, toggling CSS classes from JS,
aria-expanded, and why accessibility attributes need to be kept
in sync with the visible state of the UI.
A theme toggle that switches between light and dark mode and remembers your
preference using localStorage. The preference persists across
all pages and browser sessions.
What I learned: CSS custom properties (variables), the
data- attribute pattern for theming, and
localStorage for persisting simple user preferences.
Fetches a random quote from the DummyJSON API and displays it on the
Daily Quote page. Includes a loading state while
the request is in flight and a clear error message if it fails.
What I learned: async/await, handling network
errors gracefully, updating the DOM with fetched data, and why you should
never assume an API will always respond successfully.