OCJ.
Back to blog

Workflow

My Tailwind CSS Workflow

By Obioma Chibueze Justice  ·  5 min read

People ask me sometimes how a site like this one, or a client project with forty or more pages, gets built without turning into a mess of inconsistent spacing and colors that drift page to page. The honest answer is that it comes down to a workflow I run the same way almost every time, from a blank folder to a deployed site.

Start with tokens, not pages

Before I build a single section, I decide on the small set of things that will repeat everywhere: two or three brand colors, a type scale, and a spacing rhythm. In Tailwind that means setting up the config first, colors, font families, and a couple of custom utility classes, so that every page pulls from the same palette instead of me picking a slightly different shade of teal on page twelve.

Build one real page before touching the rest

I pick the page most likely to reveal problems, usually the homepage or a detail page with a lot of content types, and build it completely: header, hero, cards, footer, all of it responsive on a real phone, not just a resized browser window. Once that page feels right, the components in it become the building blocks for every other page, which is what keeps a large multi page site consistent.

Mobile first, always, no exceptions

I write the unprefixed classes for mobile, then layer on sm:, md:, and lg: variants as the screen grows. It is tempting to design for a laptop screen and "make it responsive" afterward, but that almost always produces cramped mobile layouts. Starting small and expanding outward produces a cleaner result, and it matches how most of my traffic actually arrives, on a phone.

Test on a real device before calling it done

Dev tools device emulation is a good first pass, but it lies to you about touch behavior, scroll performance, and how modals and date pickers actually render. I check every project on my own iPhone before it ships, and I have caught real bugs that way, like a datepicker that rendered fine in a desktop browser but broke out of its container inside a scrollable modal on iOS.

Deploy early, deploy often

I push to GitHub Pages, Netlify, or Vercel as soon as there is something worth looking at, not after the whole site is finished. Seeing a page live, on a real URL, on a real phone, surfaces problems that never show up in a local dev server. It also means a client or a friend can look at progress without me needing to screen record anything.

None of this is complicated. It is mostly discipline, applied consistently, project after project. But that consistency is exactly what makes a forty page site feel like one coherent thing instead of forty separate ones stitched together.