Project Overview
Best Home Gear Reviews is a single-page affiliate website prototype built with static HTML, CSS, and vanilla JS. It's designed as a "trust-first" editorial review site across 4 categories: Kitchen, Home & Outdoor, Gardening, and Pets.
The site is optimized for:
- Affiliate conversions — clear CTAs, comparison tables, verdict boxes
- SEO — semantic HTML, JSON-LD, proper heading hierarchy, silo structure
- Mobile performance — mobile-first CSS, touch-friendly targets, accordion navigation
- Trust & credibility — editorial design, disclosure banners, testing methodology
File Structure
wevsite/ ├── index.html # Main site (all HTML/CSS/JS) ├── guide.html # This guide ├── CLAUDE.md # AI assistant instructions │ └── wp-content/themes/astra-child/ # WordPress migration files ├── style.css # Design system / overrides ├── functions.php # Schema, timestamp, link filters ├── js/toc.js # Table of contents script └── blocks/ # Reusable Gutenberg patterns ├── comparison-table.html ├── verdict-box.html ├── pros-cons.html └── homepage-template.html
The site currently runs as a static HTML file. The wp-content/ folder contains files for future
WordPress migration.
Tech Stack
| Layer | Technology | Notes |
|---|---|---|
| HTML | Semantic HTML5 | Single file, no framework |
| CSS | Custom properties + mobile-first media queries | No preprocessor needed |
| JS | Vanilla ES5 (IIFE) | ~80 lines, no dependencies |
| Fonts | Google Fonts (Inter + Montserrat) | Preconnected for performance |
| Hosting | Vercel (static) | Auto-deploys from GitHub |
| Repo | GitHub (TEAHUPOOO/wevsite) | Push to deploy |
Design Tokens (CSS Custom Properties)
Colors
| Token | Value | Usage |
|---|---|---|
--navy |
#2C3E50 | Headers, dark text, dark backgrounds |
--teal |
#27AE60 | Primary accent, CTAs, badges, active states |
--orange |
#E67E22 | Secondary CTA, urgency, "cons" sections |
--gray-50 |
#f8f9fa | Section backgrounds (alternating) |
--gray-200 |
#e9ecef | Borders, dividers |
--gray-600 |
#6c757d | Secondary text, labels |
Spacing
| Token | Value | Usage |
|---|---|---|
--space-xs |
.5rem (8px) | Tight gaps |
--space-sm |
1rem (16px) | Default padding, card body |
--space-md |
1.5rem (24px) | Container padding, medium spacing |
--space-lg |
2.5rem (40px) | Section padding (mobile) |
--space-xl |
4rem (64px) | Section padding (desktop) |
Border Radius
| Token | Value | Usage |
|---|---|---|
--r-md |
8px | Buttons, inputs, small cards |
--r-lg |
14px | Cards, panels, TOC |
--r-xl |
20px | Hero elements, main product cards |
Component Reference
Product Card (.prod-card)
Used in the comparison grid. The .prod-card--top modifier elevates the #1 pick.
<article class="prod-card prod-card--top"> <span class="prod-card__badge">★ Best Overall</span> <div class="prod-card__rank prod-card__rank--top">...</div> <div class="prod-card__img-wrap">...</div> <div class="prod-card__body"> <!-- brand, name, rating, specs, price, CTA --> </div> </article>
Category Card (.cat-card)
Used in category grids. Image area uses modifier classes for colors.
<div class="cat-card"> <div class="cat-card__img cat-card__img--kitchen"> <span class="cat-card__tag cat-card__tag--top">Top Pick</span> 🔪 </div> <div class="cat-card__body">...</div> </div>
Subcategory Chips (.subcat-chip)
Accordion-toggled chip grid under each category. Auto-expands on desktop.
<a href="/kitchen/food-prep-gadgets" class="subcat-chip"> <span class="subcat-chip__badge">Popular</span> Food Prep Gadgets <span class="subcat-chip__arrow">→</span> </a>
Verdict Box (.verdict-box)
Dual-column layout: "Who It's For" (left) + "The Bottom Line" (right). Stacks on mobile.
Pros/Cons (.pros-cons)
Side-by-side spec sheet with SVG icons. Stacks on mobile.
Responsive Breakpoints
| Breakpoint | Target | Key Changes |
|---|---|---|
| Base (0px+) | Mobile phones | 1-col layouts, hamburger menu, accordion TOC/subcats |
640px |
Large phones / small tablets | 2-col category grids, horizontal hero actions, 4-col category strip |
768px |
Tablets | Larger spacing, hero decorations visible, 2-col verdict box |
1024px |
Desktop | Full nav bar, 3-col comparison, 4-col grids, sticky TOC sidebar, subcats auto-expanded |
1440px |
Large desktop | Wider max-width (1280px), more article/TOC gap |
All CSS is written mobile-first. Base styles are for phones, then @media (min-width: ...) adds
enhancements. Never use max-width breakpoints.
Categories & Subcategories
URL Silo Structure
# Category pillar pages /kitchen/ /home-outdoor/ /gardening/ /pets/ # Subcategory pages (38 total) /kitchen/food-prep-gadgets /kitchen/kitchen-scales-measuring-tools /kitchen/storage-meal-prep-containers /kitchen/cookware-bakeware-essentials /kitchen/coffee-drink-tools /kitchen/cutting-boards-knife-accessories /kitchen/air-fryer-small-appliance-accessories /kitchen/kitchen-organization-tools /home-outdoor/cleaning-tools-gadgets /home-outdoor/storage-organization /home-outdoor/laundry-tools /home-outdoor/home-safety-maintenance-gadgets /home-outdoor/bedroom-comfort-essentials /home-outdoor/patio-cleaning-maintenance-tools /home-outdoor/outdoor-lighting-solar-gadgets /home-outdoor/outdoor-storage-utility /home-outdoor/camping-backyard-utility-tools /home-outdoor/seasonal-outdoor-essentials /gardening/hand-tools-for-beginners /gardening/watering-tools-irrigation /gardening/pruning-cutting-tools /gardening/weeding-tools /gardening/raised-bed-soil-tools /gardening/plant-support-training /gardening/seed-starting-indoor-grow /gardening/garden-storage-tool-organization /gardening/pest-plant-protection /gardening/balcony-small-space-gardening /pets/dog-feeding-watering /pets/dog-grooming-tools /pets/dog-walking-gear /pets/pet-cleaning-odor-control /pets/cat-litter-litter-box-accessories /pets/cat-enrichment-toys /pets/pet-beds-comfort /pets/travel-car-accessories /pets/pet-training-aids /pets/smart-pet-gadgets
How to Add a Product Card
1 Find the .category-grid for the category you want (e.g., Kitchen).
2 Copy an existing .cat-card block.
3 Update the content:
<div class="cat-card"> <div class="cat-card__img cat-card__img--kitchen"> <span class="cat-card__tag cat-card__tag--new">New</span> 🫕 <!-- Replace emoji with product image later --> </div> <div class="cat-card__body"> <p class="cat-card__category">YOUR SUBCATEGORY</p> <h3 class="cat-card__title">Your Product Title</h3> <div class="cat-card__rating"> <span class="stars">★★★★☆</span> <span class="rating-val">4.3</span> </div> <p class="cat-card__excerpt">Short review summary...</p> <a href="/kitchen/your-slug" class="cat-card__link">Read Review →</a> </div> </div>
Tag Variants
.cat-card__tag--top— Top Pick (orange).cat-card__tag--new— New (green).cat-card__tag--pick— Editor's Pick (navy)
How to Add a Subcategory
1 Find the .subcat-chips list for the target category.
2 Add a new <li> with a chip link:
<li> <a href="/kitchen/your-new-subcategory" class="subcat-chip"> Your New Subcategory <span class="subcat-chip__arrow" aria-hidden="true">→</span> </a> </li>
3 Update the count badge in the toggle button:
<span class="subcat-toggle__count">9</span> <!-- was 8, now 9 -->
4 Optional: Add a "Popular" badge to high-intent subcategories:
<span class="subcat-chip__badge">Popular</span>
How to Add a Review Article
The article section lives inside #article-main. To add new content:
1 Add new <h2 id="your-section"> headings — the TOC auto-populates
from these.
2 Use the existing comparison table, verdict box, and pros/cons patterns as templates.
3 Update the .article-meta with correct category, author, and date.
The JavaScript automatically scans #article-main h2[id] elements and builds TOC links. Just give
your h2s an id attribute and they appear in the sidebar TOC.
How to Edit the Comparison Table
The comparison section is in #section-comparison. Key areas to update:
- Product names & brands — in
.prod-card__brandand.prod-card__name - Specs — in
.spec-listrows (key/value pairs) - Prices — in
.prod-card__price - CTA links — in
.prod-card__cta(updatehrefto real affiliate URL) - Verdict text — in
.verdict-summary - Pros/Cons — in
.pc-rowelements
Always keep rel="nofollow sponsored noopener" and target="_blank" on affiliate
links. This is required by FTC and Google guidelines.
Connecting Affiliate Links
All affiliate CTAs currently link to #. To connect real affiliate links:
Find & Replace Pattern
Search for class="prod-card__cta" and class="verdict-cta" — update their
href values.
<!-- Before --> <a href="#" class="prod-card__cta prod-card__cta--primary" rel="nofollow sponsored noopener" target="_blank"> <!-- After --> <a href="https://www.amazon.com/dp/B08HJR9WGX?tag=yourtag-20" class="prod-card__cta prod-card__cta--primary" rel="nofollow sponsored noopener" target="_blank">
Required Attributes on Every Affiliate Link
| Attribute | Value | Why |
|---|---|---|
rel |
nofollow sponsored noopener |
Google & FTC compliance |
target |
_blank |
Opens in new tab (keeps user on your site) |
Amazon Associates Setup
1 Sign up at affiliate-program.amazon.com
2 Get your tracking tag — it looks like yoursitename-20
3 Build affiliate links using the format:
https://www.amazon.com/dp/PRODUCT_ASIN?tag=yourtag-20
4 Replace placeholder links in index.html
The ASIN is in every Amazon product URL: amazon.com/dp/B08HJR9WGX. You can also
find it in the "Product Information" section of any listing.
Other Affiliate Networks
| Network | Good For | Commission |
|---|---|---|
| Amazon Associates | Everything (broadest catalog) | 1-4% |
| ShareASale | Home, garden, specialty brands | 5-20% |
| Impact | DTC brands, premium products | 8-15% |
| CJ Affiliate | Large retailers (Home Depot, Lowe's) | 2-8% |
| Skimlinks | Auto-affiliate all merchant links | Varies |
Link Tracking & Attribution
Option A: Amazon's Built-in Tracking
Amazon automatically tracks clicks through your ?tag= parameter. View reports in the Associates
dashboard.
Option B: UTM Parameters (for analytics)
Add UTM params to track which sections/pages convert best:
https://amazon.com/dp/B08HJR9WGX?tag=yourtag-20&utm_source=besthomegearreviews&utm_medium=comparison&utm_campaign=drills-2025
Option C: Link Management Plugin (WordPress)
When you migrate to WordPress, use Pretty Links or ThirstyAffiliates to:
- Cloak links:
besthomegearreviews.com/go/dewalt-drill - Track clicks per link
- Bulk-update links when URLs change
- Auto-add
nofollowattributes
FTC Disclosure Requirements
The site already includes an affiliate disclosure banner above the comparison section. Here's what's required:
- Visible disclosure — near the first affiliate link on every page (already done)
- Dedicated disclosure page — linked from footer (create
/affiliate-disclosure/) - Clear language — "We earn a commission from qualifying purchases" (avoid vague wording)
- "Sponsored" rel attribute — on all affiliate links (already implemented)
The disclosure must be visible before the user encounters affiliate links — not hidden in the footer. The current placement above the comparison section satisfies this.
Deploy to Vercel
The site auto-deploys to Vercel when you push to GitHub. Manual steps:
1 Make changes to index.html
2 Commit and push:
git add index.html git commit -m "Update product links" git push
3 Vercel auto-deploys within ~60 seconds.
Vercel Settings
| Setting | Value |
|---|---|
| Framework Preset | Other (static) |
| Build Command | (leave empty) |
| Output Directory | ./ (root) |
| Root Directory | ./ |
Migrate to WordPress
When you're ready to scale beyond a single page:
1 Get hosting — Bluehost, SiteGround, or Cloudways
2 Install WordPress + Astra theme
3 Upload the child theme from
wp-content/themes/astra-child/
4 Create pages matching the silo structure:
# WordPress pages to create:
Homepage → Use homepage-template.html as Gutenberg layout
/kitchen/ → Category pillar page
/kitchen/food-prep-gadgets → Subcategory page
/kitchen/best-chefs-knives → Individual review post
5 Install key plugins:
- RankMath / Yoast — SEO (sitemaps, meta, schema)
- ThirstyAffiliates — Link cloaking & tracking
- WP Rocket — Caching & performance
- ShortPixel — Image optimization
- Jepack / MonsterInsights — Analytics
6 Use the child theme files:
style.css— Design tokens and component stylesfunctions.php— JSON-LD schema, "Last Updated" timestamps, affiliate link filterblocks/— Paste into Gutenberg Custom HTML blocks
Custom Domain Setup
1 Buy a domain (Namecheap, Cloudflare, Google Domains)
2 In Vercel: Settings → Domains → Add your domain
3 Add DNS records as Vercel instructs (usually CNAME or A record)
4 Update <link rel="canonical"> and Open Graph URLs in
index.html
5 SSL is automatic with Vercel
SEO Launch Checklist
| Item | Status | Notes |
|---|---|---|
Single <h1> per page |
Done | Hero headline is the h1 |
| Meta description | Done | In <head> |
| Canonical URL | Update | Change to your real domain |
| Open Graph tags | Done | Add OG image when available |
| JSON-LD (Organization) | Done | |
| JSON-LD (WebSite + Search) | Done | |
| JSON-LD (ItemList) | Done | Top 5 products |
| JSON-LD (FAQ) | Done | 2 questions implemented |
| Semantic heading hierarchy | Done | h1 → h2 → h3 proper nesting |
| Image alt text | Pending | Add when replacing emoji with real images |
| Sitemap.xml | Pending | Create when building subcategory pages |
| Robots.txt | Pending | Create before launch |
| Page speed (mobile) | Fast | No images, minimal JS, inline CSS |
| Affiliate disclosure | Done | Above comparison section |
| Affiliate link rel attrs | Done | nofollow sponsored noopener |
| Mobile responsive | Done | Mobile-first CSS, tested 320px+ |
| Accessibility | Done | ARIA, focus-visible, skip link, landmarks |
1. Replace all # placeholder links with real URLs
2. Update canonical URL to your domain
3. Add robots.txt and sitemap.xml
4. Replace emoji placeholders with real product images
5. Submit to Google Search Console
— End of Guide —