SoloStack: Building This Site in Public
How this was put together: assembled from the actual planning conversations and automated publishing runs behind this site — more "operations log" than highlight reel, on purpose. Exact dates are reconstructed from file timestamps and the bylines already sitting on each published post, not from a diary. Where I'm approximating, I say so.
Key milestones
- ~Jun 22Idea research, niche picked, name chosen — all in one planning session
- Jun 22Full site built and live via Netlify Drop within 3 minutes — 8 posts by end of day
- Jun 22Domain wired, HTTPS auto-issued, sitemap accepted by Search Console the same day
- Jun 22Cadence set (3x/week); Netlify-API auto-deploy pipeline built to avoid git entirely
- Jun 22sitemap.xml comes back truncated mid-edit — first sighting of the editor/deploy sync gap
- Jun 24 – Jul 1511 scheduled Mon/Wed/Fri runs, zero missed or off-schedule
- Jul 6A broken fallback deploy silently reports success — caught before being treated as done
- ~Jul 14Gumroad detour: two real product listings + custom landing pages go live
- Jul 15This devlog section ships — plus an X profile, avatar/banner, and a full email review
The tool stack, end to end
Where the idea came from
This site started from a one-line question: can I make passive income using AI? The spark was a viral AI-generated video that was clearly running display ads against its own traffic. The instinct was: could a solo person copy that playbook — ride AI-driven content, monetize with ads — without a publisher's staff or budget?
The honest research answer was "sort of." The bigger site's version works because it already has scale and domain authority — that part doesn't transfer to a one-person operation. But the underlying model does, especially since search engines were explicitly rewarding quality and real authorship over raw volume of AI-generated pages that year.
Three realistic paths got compared head-to-head: an AI-assisted niche content site (slow to start, compounds over months), scheduled web scraping into a sellable dataset (better margins, but finding a buyer is the hard part), and faceless automated video (highest ceiling, most saturated). The content-site route won on risk and cost, landing on the niche that balanced decent ad rates, recurring affiliate commissions, low saturation, and real personal interest: AI tools and automation for solopreneurs, built to run under a real name for authorship credibility.
Building and launching, same day
Once the niche was set, the whole starter kit got built in one sitting: a homepage, four cornerstone articles, the trust pages a display-ad network expects, and the SEO plumbing. Total footprint: about 88 KB of plain static HTML, no build step, no framework. Before publishing anything, a verification pass checked every internal link and confirmed each article was a genuine 730–1,000 words.
Deployment was deliberately the simplest possible path — drag the folder onto a static-hosting drop zone, live in about three minutes. A domain that was already owned, sitting ready and unused, turned out to be exactly the right one. Once pointed at the host, HTTPS came up automatically. From there, every placeholder domain reference got swapped for the real one, and the site was submitted to search-engine indexing — which came back with the sitemap accepted and all 8 initial pages discovered within moments.
Picking a pace
The next real question was how often to post. The answer landed on ramping to three times a week for about the first eight weeks, then tapering off once a base of content existed — reasoning that raw frequency doesn't matter to search rankings, but reaching topical authority faster does. The one guardrail set alongside that decision: every auto-drafted post still gets a personal review pass. By the end of day one, eight posts were live, including one from the very first fully unattended scheduled run.
A setback worth naming from this same day: the sitemap came back truncated after an edit, several entries and the closing tag simply gone. It was rewritten from scratch and reverified — the first sighting of a recurring theme: the folder that gets deployed and the folder the editing tools show don't always agree.
The first admin day: affiliates, and a change of mind on analytics
Launch day kept going past the build itself, working through affiliate-network applications with honest, unpadded traffic numbers. One quick win went live same-day; several others sat pending for weeks. A genuine reversal is worth recording honestly: a cookie-based analytics tool was added site-wide, then removed a short time later, in favor of something more privacy-friendly — reasoning that cookie-based analytics can lose a large share of traffic to "reject all" clicks, and the search-console tool (already verified) covers the metric that actually matters for an SEO-driven site. A privacy-friendly, cookieless replacement was recommended; I found no evidence in later sessions that it was ever actually installed, so that step appears to still be open.
The weekly machine
From here, publishing became a scheduled, mostly unattended job: three times a week, an automated run reads the content calendar, drafts a 700–1,000-word post from an existing post's exact template, adds a homepage card and sitemap entry, deploys, and verifies the result is actually live before reporting back. That cadence has held exactly, without a missed or off-schedule run, across every cycle since launch.
A few runs are worth looking at closely, because the pattern isn't "flawless machine" — it's "machine that hits the same known snag periodically and gets better at recovering." One run hit a real sync bug: edits made through the normal editing tool weren't landing on the copy of the site that actually gets zipped for deployment. Files had to be rewritten directly against the deployed filesystem to guarantee correctness. A fallback deploy attempt then had broken command syntax that silently produced an empty zip — which still returned a successful upload response. That's a genuinely uncomfortable near-miss: a broken deploy that reported success. It was caught before being treated as done, rebuilt correctly, and re-verified. By the most recent run covered here, the process had visibly adapted: file edits were written directly against the deployed copy from the start, sidestepping the divergence rather than discovering it mid-run — a small, real example of a lesson from one run actually sticking by the next.
The Gumroad detour: turning the plan into an actual product
A product page had been sitting live with placeholder links since the first week. Resolving that turned into one of the more technically involved sessions of the whole project: two real digital-product listings went live — a toolkit PDF and a free sample used as an email-capturing lead magnet — plus a fully custom, hand-built landing page for each, verified against the platform's own sanitizer until it came back clean.
Worth naming as a real pivot: the original plan called for pay-what-you-want pricing to lower the bar for a cold audience. What actually shipped is a flat one-time price. Plans and execution didn't quite match by the time this got built — a small, honest gap between the strategy doc and the live page.
The setback: the platform's CLI login requires staying alive through a multi-step approval, but this project's sandboxed environment kills background processes the moment each step ends, so the login couldn't complete that way. The fallback was a browser-generated access token — which meant asking explicit go-ahead first, since that token carries full account access. That consent step happened before any token was created. Also found along the way: the live homepage had quietly diverged from what the editing tool was showing, because the weekly auto-post task had been regenerating it independently — the same sync theme, again.
Once both products were live and verified, they got woven through the whole site, and — so the integration wouldn't quietly erode over time — the weekly scheduled task itself was permanently updated: every new post now gets the product tie-in baked in automatically, and each run re-checks that the homepage's key elements are still present, re-adding them if anything ever strips them out. That's the difference between a one-time integration and one that self-heals.
Where things stand today
18 posts live, past the point the launch plan set as the minimum bar for applying to display-ad programs — though I found no evidence an actual application has gone in yet. 14 backlog ideas remain in the content calendar. Monetization is now two-sided: the original ad/affiliate model, plus a real digital product live with custom landing pages and site-wide integration. Affiliate status is mixed and mostly still pending. Analytics is unsettled. No traffic or revenue numbers appear anywhere in the material this devlog draws from — consistent with the plan set on day one, which always framed "a few dollars a day" as a several-month target, and it's still early on that clock. I'd rather say that plainly than make up a number.
If there's a one-line honest summary, it's this: the publishing machine works exactly as designed and hasn't missed a beat, the monetization plan took a few weeks longer to actually execute than the docs suggested it would, and the "make it sound like a real person" step — the one thing the plan explicitly says is what beats generic AI content — is the piece still waiting on the personal follow-through.
Open issues
- Past the recommended page count, but no display-ad (AdSense) application appears to have gone in yet
- Cloudflare Web Analytics was recommended as a cookieless replacement for GA4 — never confirmed installed
- The editor-vs-deployed-copy sync gap recurs periodically; a fallback deploy once silently reported success while actually failing
Upgrade opportunities
- Submit the AdSense application now that the page-count bar is cleared
- Settle analytics once — either install Cloudflare Web Analytics or drop the idea explicitly
- Close the personal-touch gap: add real experience and live affiliate links to posts still flagged as placeholders