I’ve built a lot of websites for other people. Client homepages, landing pages, microsites, blog platforms — it’s a core part of what PipelineRoad delivers. But building a website for yourself is a fundamentally different experience. There’s no client brief to anchor you. No external deadline. No brand guide someone else wrote. Every decision is yours, which sounds like freedom and mostly feels like paralysis.
This site took me longer to build than any client project I’ve ever worked on. Not because it was technically complex — it’s quite simple, architecturally. But because every choice carried a personal weight that client work doesn’t. The colors, the typography, the layout, the tone — these aren’t representing a brand. They’re representing me. And it turns out I’m a much harder client to satisfy than any of my actual clients.
Here’s how it came together, and what I’d do differently.
Why Astro
I built Chua Network on Astro. For anyone unfamiliar, Astro is a modern static site generator that ships minimal JavaScript to the browser. Pages load fast because they’re pre-rendered HTML with CSS, and you only add interactivity where you actually need it.
The decision wasn’t complicated. I needed a blog with good performance, strong SEO fundamentals, and the flexibility to handle both written content and photography. I wanted to write posts in MDX — markdown with the ability to embed components when I need them. And I wanted the site to be fast. Not “reasonably fast for a modern website” fast. Actually fast. Sub-second page loads, minimal layout shift, no JavaScript bundle bloating the initial render.
Astro delivers all of this essentially out of the box. The content collections API handles blog posts elegantly. The build output is static HTML that any CDN can serve at edge speeds. And the island architecture means I can add interactive components — a photo gallery, a search interface — without compromising the performance of the rest of the site.
I considered Next.js, which is what we use for PipelineRoad’s app. But Next felt like overkill for a content site. The server-side rendering, the API routes, the React hydration overhead — none of it was necessary for what is fundamentally a reading experience. Astro is purpose-built for content sites, and that focus shows in how little configuration it takes to get something polished.
I also considered going no-framework — just hand-written HTML and CSS. There’s an appeal to that simplicity. But the content management would have been painful. Writing blog posts in raw HTML instead of markdown is the kind of purist decision that sounds virtuous and becomes tedious by post number five.
The Editorial Magazine Inspiration
The design language for this site didn’t start with other websites. It started with magazines.
I’ve always loved the design of publications like Monocle, Kinfolk, and the long-form sections of The New York Times Magazine. There’s a quality to editorial print design that most websites don’t capture: generous whitespace, strong typographic hierarchy, images treated as first-class content rather than decorative elements, and a reading experience that feels curated rather than algorithmic.
I wanted this site to feel like a magazine you’d pick up at a bookstore. Something with weight and intention. Not a tech blog with a sidebar and a newsletter popup. Not a minimalist personal site that’s all whitespace and no personality. Something in between — substantial but not heavy, designed but not over-designed.
The layout reflects this. Wide content columns with comfortable line lengths for reading. Pull quotes and section breaks that give the eye resting points. Photography that takes up real space on the page rather than being thumbnail-sized afterthoughts. The reading experience is the product, and the design exists to support it.
Typography
I spent an embarrassing amount of time on typography. Days. Trying combinations, adjusting sizes, testing line heights at different viewport widths.
The final choices: a serif typeface for body text and headings, paired with a clean sans-serif for navigation, metadata, and UI elements. The serif was non-negotiable. I wanted the site to feel literary, and serif fonts carry that connotation in a way that sans-serif simply doesn’t. There’s a reason newspapers and books use serifs — they signal “this is meant to be read carefully.”
The specific combination went through about fifteen iterations. I’d set the body text in one typeface, live with it for a day, and then realize it was too formal, or too quirky, or didn’t render well at small sizes on mobile. Typography is one of those design elements where the difference between “almost right” and “right” is enormous and almost impossible to articulate.
Line height was the other obsession. Too tight and the text feels cramped. Too loose and it loses cohesion — the eye drifts between lines instead of flowing. I settled on a line height that gives each line breathing room without breaking the visual connection to the lines around it. It reads naturally on a laptop screen at normal viewing distance, which is where most people will encounter it.
The Navy and Gold
The color palette is anchored in navy blue and gold. Not the bright, saturated versions — the deep, muted ones. A navy that’s almost black. A gold that’s closer to brass.
The inspiration, honestly, was the color of old passport covers and the brass fittings on vintage luggage. I travel constantly, and the travel theme runs through everything on this site — the content, the photography, the design language. The navy and gold felt like a natural expression of that theme without being literal about it. No airplane icons, no globe motifs. Just colors that evoke a particular aesthetic: considered, well-traveled, classic without being retro.
The palette is deliberately restrained. Navy, gold, white, and a warm off-white for backgrounds. That’s essentially it. Limited color forces every element to earn its place through typography, spacing, and hierarchy rather than through color differentiation. It’s a constraint that I think makes the design stronger.
I tested a green palette for about a week. It looked great in mockups and felt wrong on the actual site. Too editorial in the wrong way — too lifestyle magazine, not enough personal gravitas. Color is subjective, obviously, and someone else might have gone with the green. But the navy felt like me in a way I can’t fully explain.
The Travel Influence
The travel theme influenced the design in ways that go beyond color.
The photography on the site is all from my travels. No stock images. Every photo was taken by me, in places I’ve actually been. This matters because it’s honest — the images match the stories — and because it gives the site a visual consistency that stock photography can’t provide. My eye gravitates toward a certain kind of composition: layered street scenes, architectural details, the quality of light in a particular city. That consistency creates a visual identity that’s as personal as the writing.
The site structure also reflects how I think about travel. There’s no rigid hierarchy. The blog is a collection of essays that span topics — marketing, travel, leadership, culture, craft — and they’re organized by category but designed to be browsed serendipitously. Like wandering through a new city without a strict itinerary. You follow whatever catches your interest.
This was a deliberate choice. I could have separated the site into distinct sections — a marketing blog here, travel writing there, personal reflections somewhere else. But that fragmentation would have misrepresented how I actually think. My marketing insights are informed by travel. My travel observations are shaped by my business experience. The categories bleed into each other, and the site architecture acknowledges that.
What I’d Change
No project is finished, and this one is less finished than most. Here’s what I’d do differently if I were starting over.
I’d establish the content structure earlier. I started building the site before I had a clear editorial plan, which meant I built features I didn’t need and missed features I did. Having a rough content calendar before writing any code would have saved me a week of restructuring.
I’d invest in a proper photography workflow earlier. Processing travel photos for the web — color correction, compression, responsive sizing — is more work than I anticipated. I should have built the image pipeline first and the rest of the site second.
I’d worry less about perfection on the initial launch. I delayed publishing for weeks because the design wasn’t “ready.” In retrospect, the version I launched was maybe 5% better than the version I had a month earlier. That month of polish was mostly anxiety masquerading as perfectionism.
And I’d add search from day one. As the archive grows, discoverability becomes more important. I’m adding it now, retroactively, and it would have been easier to build into the initial architecture.
The Thing About Building for Yourself
The real lesson of building this site isn’t about Astro or typography or color palettes. It’s about the difference between building for a client and building for yourself.
When I build for clients, I’m disciplined. I follow the brief, meet the deadlines, make decisions based on strategy and data. It’s professional. It works.
When I built for myself, I was undisciplined in the best way. I followed aesthetic instincts I can’t fully rationalize. I spent time on details that no client would pay for. I let the project take the shape it wanted to take, rather than forcing it into a predetermined structure.
The result is something that feels genuinely personal in a way that’s hard to achieve when you’re executing someone else’s vision. This site looks the way it does because it’s the site I would want to visit. The reading experience is the one I would want to have. The design reflects tastes I’ve accumulated over years of traveling, reading, and paying attention to how beautiful things are made.
It’s a small thing, one website among millions. But it’s mine. And in a career spent building things for other people, that distinction matters more than I expected.