ryotkim.com

News

NEWS

Returning to the Fundamentals of Frontend: A Responsive Design Journey

frontend

Returning to the Fundamentals of Frontend: A Responsive Design Journey

Over the past few months, most of my focus had been on backend systems and infrastructure — integrating CMSs, managing deployment pipelines, and automating delivery to production.
But recently, I took a step back to work on something I hadn’t touched deeply for a while: the actual experience layer of the web — the frontend.

And honestly, it felt like returning to the fundamentals.


Building from the Ground Up: global.css and layout.tsx

Everything starts with a foundation.
In my case, that meant carefully defining global styling rules and the root layout of the application.

  • global.css handles the global reset, color tokens, font stacks, and consistent box sizing.
    Things like setting box-sizing: border-box and defining CSS variables for text and background colors form the backbone of a maintainable design system.
  • layout.tsx then takes that foundation and provides the structural skeleton for the entire app —
    bringing together shared components like the Header, Footer, and analytics snippets.
    It’s the invisible glue that ensures every page behaves consistently across breakpoints and devices.

This base layer allowed me to think clearly about how each subcomponent — Hero, Sheet, Page — fits together without unexpected interference.


The Layered Composition: Hero, Sheet, and Page

To create a layout that looks natural and scales responsively, I followed a layered component strategy.

🪐 Hero: The visual identity

The Hero component sets the tone — it defines the visual "universe" of each page.
It’s intentionally kept full-width (w-full), with a flexible background that adapts to different device widths without clipping.
It’s also isolated from the rest of the layout to prevent inherited constraints from interfering with its positioning.

🧱 Sheet: The content container

If the Hero represents atmosphere, the Sheet is the solid ground where content lives.
Initially, it had a fixed width (width: 840px), which looked clean on desktop but broke on smaller screens.
After refining the CSS with responsive @media queries, the container now adjusts its width (90–96% depending on viewport) and padding dynamically,
maintaining visual balance across devices.

This simple change — allowing Sheet to breathe — unlocked proper responsiveness throughout the site.

📄 Page: The content logic

Finally, each page (like About or News) manages its own data logic and local styling via a corresponding page.module.css.
This separation ensures that global and layout-level decisions (spacing, typography, structure) remain untouched
while each page can fine-tune its content presentation.


Managing the “Worldview” of the Frontend

Unlike backend logic — where correctness and efficiency are everything — frontend development asks for something more subtle: the adjustment of perception.

It’s not just about writing functional CSS or React code.
It’s about continuously tweaking small visual details — padding, color balance, transition speed —
until the page feels right.

That process isn’t purely technical; it’s closer to shaping a worldview, one pixel at a time.


Key Takeaways

Here are a few practical lessons from this iteration:

  1. Don’t fight your layout — isolate it.
    Components like Hero and Sheet should not share layout responsibilities.
    Give each layer clear ownership.
  2. Design responsiveness from the container outward.
    Adjusting Sheet’s width and padding had far more impact than tweaking every nested element.
  3. Keep global.css minimal but powerful.
    Define consistent variables and typography rules once, and let components inherit them naturally.
  4. Treat visual design as feedback, not decoration.
    The best responsive design comes from observing how your content wants to flow — and then shaping the layout to respect that.

Closing Thoughts

Working on infrastructure taught me precision and scalability.
Working on frontend reminded me of sensitivity and rhythm
how small adjustments create emotional resonance and coherence.

Getting back to these fundamentals felt like rediscovering the reason I started building websites in the first place:
not just to make them work, but to make them feel right.