Building with Laravel and Native CSS

March 1, 2026 Mediocrist
laravel css architecture

Choosing Simplicity

When we started building mediocrist.com, the temptation was there: grab the latest meta-framework, wire up a component library, add a CSS utility framework. Instead, we went with Laravel and native CSS.

Not because we're opposed to new tools — but because the job didn't require them.

Why Laravel

Laravel gives you routing, ORM, caching, queuing, and templating out of the box. For a content site that pulls data from GitHub and renders markdown, that's everything we need. No API layer, no SPA hydration, no client-side routing.

Server-rendered HTML is fast, accessible by default, and works everywhere. The simplicity of a Controller → Service → View pipeline means any developer can trace a request from URL to rendered HTML in under a minute.

Why Native CSS

CSS has evolved significantly. Native nesting, @layer for cascade control, oklch() for perceptual color uniformity, container queries for component-level responsiveness — these features cover what preprocessors and utility frameworks were solving five years ago.

Our CSS architecture uses layers to control specificity:

@layer reset, tokens, base, layout, components, pages;

Each layer has a clear responsibility. Tokens define design decisions. Components are self-contained. Pages handle one-off overrides. No specificity wars, no !important hacks.

The Result

A fast, maintainable site that loads in under a second, works on every device, and can be understood by reading the code. Sometimes the boring choice is the right one.

Back to articles