When I decided to start learning digital marketing seriously, I had a choice: spin up a WordPress site in an hour, or build everything from scratch. I chose scratch — and it turned out to be the best decision of my learning journey.
This post walks through why I made that choice, what I actually built, and what I learned along the way — with real screenshots from the work.
Why Not WordPress?
WordPress is a great tool. Millions of businesses run on it. But for my specific situation, it had three problems:
- Too much abstraction. I wanted to understand what was actually happening under the hood — not just click buttons in a page builder.
- Learning gap. If something broke on a WordPress site, I would have to Google the fix instead of understanding the root cause.
- SEO control. I wanted full control over schema markup, canonical tags, redirects, and meta tags. WordPress plugins give you 80% of this — but not 100%.
So I decided to build everything by hand. HTML, CSS, JavaScript. From scratch.
What "From Scratch" Actually Means
I did not use React, Next.js, or any framework. I wrote every line of HTML, CSS, and JavaScript myself. The setup:
- Code editor: VS Code
- Hosting: Cloudflare Pages (free, global CDN)
- Version control: GitHub
- Domain: mizanulislam.com
- Forms: Cloudflare Pages Function + Resend API
No page builders. No plugins. No bloat.
What I Built
The site itself is the case study. Here is what is actually running:
1. Nine Types of Schema Markup
Every page has structured data that tells Google exactly what the content means:
- WebSite — site-wide identity
- Person — my entity as a practitioner
- Organization — Grow Up as a brand
- FAQPage — homepage questions
- Service — services catalog
- AboutPage — about section
- ProfilePage — portfolio page
- Blog + BlogPosting — content pages
- ContactPage — contact information
All cross-referenced using @id so Google understands the entity relationships: Person ↔ Organization ↔ WebSite.
2. Clean URL Architecture
Every URL is clean — no .html extensions, no query parameters, no trailing slashes. This is handled by Cloudflare Pages automatically, plus a _redirects file that catches any old URLs from the Blogspot migration.
3. Serverless Form Handling
The consultation form on the homepage does not go through a third-party service. Instead, it hits a Cloudflare Function that:
- Validates the input
- Sends an email via Resend API
- Returns a success response
No dependencies, no rate limits from a third party, no tracking pixels embedded in the form.
What I Would Do Differently
Two things:
- Add analytics from day one. I set up GA4 and GTM a few weeks after launch, and I lost some early data because of it.
- Test mobile earlier. I built desktop-first, then retrofitted responsiveness. It worked, but it would have been cleaner to design mobile-first from the start.
The Real Lesson
If you are learning marketing, try building something small. A landing page. A tracker. A simple tool. You will learn more in a week than in a month of tutorials.
The goal is not to become a developer. The goal is to become a marketer who understands what is actually happening under the hood — and can make better decisions because of it.