Dev.to WebDev 🛠 Dev 👁 0 📖 3 min read

I built a forex-education site with zero frameworks — here's 5 weeks of real SEO data

Part 2 of building PipAtlas in public. Part 1 introduced the site — a free forex-education suite (calculators, a 47-term glossary, a curated indicator library, no sign-up). This part is the one I wished I'd found before

Part 2 of building PipAtlas in public. Part 1 introduced the site — a free forex-education suite (calculators, a 47-term glossary, a curated indicator library, no sign-up). This part is the one I wished I'd found before starting: what the first five weeks of real search data actually look like, from a plain-HTML site with no framework and no ad budget.
The stack: boring on purpose
No React. No build step. No CMS. PipAtlas is hand-written HTML served by a single Node file, plus a handful of cron jobs.

The homepage — nav, hero, a live position-size calculator, a market-session clock, a data strip — weighs 62 KB. No hydration, no layout shift, nothing to download but text and a few icons.

Was it worth giving up a modern framework? The numbers I can share: 93 on Lighthouse mobile at last scan, and every one of the 137 pages renders in one round trip. On a $2 hosting plan. For an education site where readers are often on phones, that trade has paid for itself every single day.

Five weeks of honest Google data
I pull straight from the Google Search Console API (more on the tooling below). Here's the actual curve, unedited:

Metric Week 1 Week 5
Impressions / week 5 51
Queries with impressions 27 66
Avg. position (top-20 pages) ~34 34.2 and grinding down
Clicks 0 0
That last row is the one nobody puts in their landing page, so let me put it here: at five weeks, clicks are zero. Impressions are compounding weekly, positions are drifting toward page one, but nobody has clicked yet — and that's normal. Everyone sells you the hockey stick; the real curve is a flat line that quietly steepens around months 2–4. If you're at week 5 with zero clicks and rising impressions, you're on track. Don't panic-rebuild.

The three things that surprised me

  1. Redirect hygiene beats content, early. My pages live at clean URLs (/what-is-a-pip), with the legacy .html versions 301-redirecting in. Getting that pair right — canonical tags agreeing with redirects — took one focused evening and probably did more for crawl health than my last two articles. Google rewards a site that is easy to crawl before it rewards one that is eloquent.

  2. Your sitemap and your real pages will disagree. The sitemap listed 137 URLs. The first full crawl of my own site found 140 real pages — plus twins: / and /index.html serving the same content, redirect chains nobody noticed. Nothing fatal, all of it invisible until a bot crawled the site the way Google does. Build your own crawler before you trust your sitemap.

  3. The edge can block your whole site without asking. Mid-project, every visitor on earth started getting 403 — your country is not allowed — not from my server, but from the hosting CDN's edge, which had switched on a geo-filter on its own. Twenty confusing minutes until someone thought to check the response headers (server: hcdn told the whole story). Lesson: when a site dies, identify who is answering before debugging what. The origin was fine the entire time.

The monitoring stack (a cron job with opinions)
I didn't want a third-party SEO dashboard, so I wrote one — a single Node project ("GrowthHQ") the cron scheduler runs hourly:

GSC bot — pulls clicks/impressions/queries via API, keeps daily snapshots, computes weekly pace
A crawler — walks the whole site like Googlebot, audits titles, meta descriptions, alt text, JSON-LD, and flags broken links and redirect chains
GA4 join — pulls Google Analytics with a read-only service account and tracks AI-referral traffic (chatgpt.com, perplexity.ai…) separately — because that's a referral source that didn't exist two years ago
A composite authority score — my own 0–100 from traffic, search impressions, content depth, technical health, and an external PageRank API
Total cost: $0. Total files: a handful of setInterval-with-adult-supervision scripts. If you can write a fetch call, you can replace most of your SaaS stack with a folder.

Try the tools (the soft sell — it's one sentence)
Everything above powers pipatlas.com — free, no sign-up: a position-size calculator, a live pip-value table, an economic calendar, and a plain-English glossary of 47+ terms. Education only, never financial advice, sources named on every page.

What's next
Content batch #2 for the site, a real outreach pass (this post is part of it), and — the scoreboard I care about — the first week with clicks in double digits. I'll report back with Part 3 when it happens, whatever the number is.

If you're building something similar: ship the boring stack, wire up your own measurement early, and ignore anyone showing you week-5 hockey sticks. The flat line is where the work happens.

Thanks for reading — I answer questions in the comments, and the repo links from Part 1 still stand.

📰 Read the original article on Dev.to WebDev

Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.