A business running on a website that kept breaking
Nomad Summit brings together entrepreneurs, investors, and remote professionals building businesses beyond borders — running since 2015, backed by the Tourism Authority of Thailand, and the first event of its kind to secure an airline sponsor. Each year, 250+ people gather in Chiang Mai for two days of talks and side events connecting an international community with local Thai talent.
Running an event like this is a real operation. Ticket sales, side-event registrations, sponsor logistics, speaker management, a year-round content presence — all of it flowing through one website. And that website kept breaking.
Built on WordPress with Divi, it was held together by a patchwork of plugins that were increasingly hard to maintain and no longer reflected the brand. At the last conference, the booking system failed completely — 250 attendees had to be manually registered into 50+ side events. By the time we got to this rebuild, the ticket sales page was down too. The business couldn't generate revenue, run promotion, or have credible sponsor conversations without sending people to a site that immediately undermined everything the event had built.
The ask: fix it. All of it. As quickly as possible.
Project
Nomad Summit
Scope
Website rebuild — design & development
Role
Design & development
Timeline
1.5 months
Stack
Next.js on Vercel, Supabase, headless CMS, Claude Code
02 — My role
Co-owner, designer, and the person in the codebase
As a co-owner of Nomad Summit and a web designer by trade, this website wasn't just a shared problem — it was my problem more than anyone else's. I'd been the one most frustrated by it for years: every broken flow and every off-brand page was something I knew exactly how to fix but couldn't, because of how the old stack was built.
When we brought on a CTO, the original plan was that he would rebuild the website. I chose to take it on myself instead, for two reasons. First — speed. I didn't want to spend months on a brief → revision → development → review loop with someone else when I could just be in the codebase making the decisions and shipping them. Second — I wanted to learn how to do this so I could keep doing it. In my own studio, on my own projects, without waiting on a developer to make a change I could make myself in ten minutes.
So I took the rebuild on end-to-end: strategy, information architecture, visual decisions, and every page that ended up in the codebase.
There was one significant catch: I had never built a website in code before.
03 — What was built
Built for the team, not just the launch
The new site was built on Next.js on Vercel — a complete departure from the stack that had been failing. Supabase for the database, a headless CMS for structured content across blogs, podcast episodes, and event pages. Our CTO Petr set up the infrastructure and scaffolded the foundation; everything built on top of it was mine to drive.
A custom backend built for this team
Behind the site is a fully custom-built admin section — not a CMS configured to approximate what we needed, but a backend designed specifically for how this team operates. Each person gets precisely the access they need: the podcast producer manages podcast content and nothing else; the marketing team updates event pages and blog posts without touching anything they shouldn't. The right access to the right databases and pages, for the right people, and nothing more. Built to be extended as the operation grows.
Admin panel — fully customised CMS with speaker and podcast guest application portals, QR code ticket scanner, and complete event control including promo codes with per-batch rules and custom discount ranges
SEO baked in from the start
Every partnered venue now has its own page populated with venue data — which means the site ranks in searches for the restaurants, bars, and coworking spaces where events take place. Every page exists for a reason.
Venue page within a past event recap — each side event and venue has its own dedicated page, with host pages coming nextVenue management in the admin — each venue is fully configurable with its own content and details
Podcast publishing in five minutes, not thirty
Libsyn handles distribution — it's what pushes every episode simultaneously to Spotify, Apple Podcasts, Amazon Music, YouTube, and every other platform. The old website had no connection to it, so publishing meant doing the same work twice: once in Libsyn, and once manually on the site. Now it's a single button. Click sync, and the latest episode pulls in automatically — title, audio, description, everything Libsyn already has. The only fields left to fill in are specific to the website: guest bio, tags, episode framing. Everything else arrives with the sync.
Podcast admin — the Sync from RSS button (top right) pulls the latest episode from Libsyn automatically; only the website-specific fields need filling in manually
Clean URLs and a proper events archive
The old structure was chaotic — /program resolved to a programme from two years ago while the current one lived at /chiang-mai-2026/program. And there was no archive at all: past editions had no dedicated home, no way for someone to revisit the after movie, find the recap, or grab photos from a conference they attended years ago.
I rebuilt it from scratch. Every event lives at its own permanent URL — nomadsummit.com/chiang-mai-2025, for example, which moves to /past-events/chiang-mai-2025 once it's over. Each past event page brings everything together: the after movie, the recap post, the photo gallery, the full programme, and every side event that ran. A directory that actually works.
Past events archive — every edition at its own permanent URL, with after movie, recap, gallery, programme, and all side events in one place
The site launched ahead of the next conference. Ticket sales worked. Sponsor conversations restarted as soon as there was something credible to send them to.
04 — Performance
From struggling under its own weight to nearly perfect
The old WordPress + Divi build was slow, fragile, and dragging its own score down with every plugin we added. The rebuild ships a fundamentally different page: faster, leaner, and accessible by default. PageSpeed numbers (desktop):
Performance
99/ 100
was 65
Accessibility
90/ 100
was 78
Best Practices
100/ 100
was 77
SEO
100/ 100
was 85
The underlying metrics tell the same story — what used to take seconds now happens in under a second:
First Contentful Paint
1.7 s0.3 s
Largest Contentful Paint
3.3 s0.9 s
Speed Index
4.0 s0.7 s
Total Blocking Time
140 ms20 ms
BeforeAfter
Lighthouse / PageSpeed Insights, desktop. Old WordPress + Divi build vs the new Next.js build.
05 — What I took away
A new sense of what's possible
I took this project on for two reasons: the event needed it done, and I wanted to be the one who could do it.
My work had always lived in design tools. With Nomad Summit, I put myself in the codebase instead — learning to work with Claude Code, understanding how Vercel and Supabase fit together, getting my head around a Next.js project well enough to build inside it. I set up a GitHub account, learned to send pull requests, and figured out what it means to work on a shared codebase with a developer — not through design handoff, but through the code itself. VS Code became the place where the work actually happened.
It was uncomfortable, then empowering, then just the way things work.
The design instinct — asking “does this serve the person using it?” — carries into engineering decisions the same way it carries into visual ones. I walked in knowing that. Everything else, I learned as I built it.
06 — Launch event
A little party to send it off
We launched while my business partner and I were both in Danang. We started planning a beach club event — then realised we'd want to actually show the website, which meant we needed a screen the beach club didn't have.
So I made a joke: “Maybe we should just print it.”
We laughed. Then we did it. And if we were already doing something ridiculous, we might as well commit — each page went inside an old-style browser chrome frame, complete with URL bar and tabs. Hidden across the pages were promo codes in a Where's Waldo format: the easier the code was to find, the smaller the discount. People were leaning over printed website pages trying to spot them before anyone else did.
It was exactly the kind of launch that made sense for a conference built around people who left the conventional script behind.