AdDeck
Journal/Building AdDeck: the first few days
·#building#nextjs#adsense

Building AdDeck: the first few days

AdDeck went from an empty folder to a live, branded site on its own domain in a remarkably short stretch. Here's an honest account of how, and where it got interesting.

The stack

The site is built with Next.js and Tailwind CSS, and statically exported — meaning the whole thing compiles down to plain HTML, CSS, and JavaScript with no server required. That makes it cheap to host, fast to load, and simple to reason about. It's deployed on Netlify, which rebuilds and redeploys automatically every time I push to GitHub.

Static export was the right call for a content site like this. There's no database, no login, nothing that needs a running server. Every page — the format guides, the glossary, this journal — is just a file.

Content first

The heart of the site is the set of ad format pages. Each one explains a format in plain English, covers how it works technically, lists the metrics that matter, and — the part I'm proudest of — renders a live, interactive mockup of that format, built from scratch in code. A simulated pre-roll with a real skip countdown. A native ad that blends into a fake article. An interstitial that takes over the screen.

Building those mockups taught me more about each format than any amount of reading would have. You can't fake a skippable video unit without understanding how skippable video units actually behave.

The AdSense gotcha

The one genuinely tricky moment was AdSense verification. I'd added the AdSense script to the page and everything looked right — but Google's crawler kept reporting it couldn't verify the site.

The cause turned out to be subtle. In a statically-exported Next.js site, the framework's script component doesn't emit a normal <script> tag into the HTML — it emits a lightweight preload hint and then injects the real script with JavaScript after the page loads. That's great for performance. But Google's verification crawler reads the raw HTML and doesn't run JavaScript, so it saw no script tag at all.

The fix was to drop in a plain, native script tag in the document head — so a real, literal tag sits in the static HTML — and to add the AdSense verification meta tag as a second, belt-and-braces signal. Verification passed on the next attempt.

It's a small thing, but a perfect example of why building in the open is worth it: you only learn these lessons by hitting them.

What's next

The site is submitted for AdSense review now. Whatever the outcome, the build itself has already paid for the time — I understand the publisher side of digital advertising far better than I did a week ago. More to come in this journal as the project grows.