Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kapps.io — static site

The kapps.io marketing site, served as flat files from GitHub Pages instead of WordPress on AWS.

WordPress remains the authoring tool. It is no longer the thing serving traffic: the pipeline in tools/ crawls the live WP install, strips the server-dependent parts, and emits a self-contained static tree into docs/.

Layout

Path What it is
docs/ The published site. GitHub Pages serves this folder. Generated — don't hand-edit.
build/ Working output of the pipeline. docs/ is an rsync of it.
build.raw/ Untouched mirror snapshot, before transforms. Lets you re-run transforms without re-crawling.
assets/kapps-forms.js Hand-written. The static form handler that replaced Contact Form 7.
tools/ The pipeline (see below).

Rebuilding

./tools/publish.sh              # full rebuild from the live WordPress
./tools/publish.sh --no-fetch   # re-run transforms against the existing snapshot

It never commits. Review the diff, then commit docs/ yourself.

Pipeline

Step Script Does
1 mirror.py Crawls the site. Discovers assets by sweeping raw HTML/CSS with a regex rather than parsing the DOM, so it also catches lazy-load data- attributes and Elementor's JSON data-settings.
2 coverage.py + fetch_missing.py Diffs the Yoast sitemaps against what was crawled and fetches orphan pages — published content no navigation links to. Found 23 on the first run.
3 transform.py Removes CF7/reCAPTCHA/Akismet/rating/view-counter plumbing, strips WP head cruft, rewrites URLs to root-relative, remaps dead links.
4 repair.py Re-fetches assets the crawler missed and converts RSS feeds to .xml.
5 finalize.py CNAME, .nojekyll, 404.html, robots.txt, sitemap.xml, redirect stubs.
6 validate.py Asserts every internal reference resolves to a real file and nothing still points at the WP host.
compare.py Diffs the rendered text of every built page against live. Catches silent content loss a link-checker can't see.

What changed vs. WordPress

Forms. Contact Form 7 needed PHP. Replaced by assets/kapps-forms.js, which POSTs to a hosted form endpoint. reCAPTCHA is gone (it verified server-side); spam control is now a honeypot plus the provider's filtering. The old CF7 → gtag conversion event is re-fired on success, so form analytics keep working.

Set the endpoint in assets/kapps-forms.js:

var CONFIG = { provider: "web3forms", key: "<public-access-key>" };

Dropped. Post view counters and star ratings (both were WP AJAX). The static results display is kept where it existed; only the interactive vote widget is gone.

Redirects. Pages can't serve 301s. /join is a <meta refresh> + canonical stub.

Bugs fixed in passing

These were broken on the live WordPress site and are fixed here:

  • ?page_id=28/30/49/51 — four service/technology cards linking to 404s
  • /vr-ar, /3d-modeling-services, /game-development-outsourcing — dead footer links
  • url(../wp-content/…) backgrounds on /portfolio/<item>/ pages — resolved one directory too shallow, so the block backgrounds 404'd on every deep portfolio page
  • Junk slugs (cool_timeline/sadasd, 2021-2, …) removed from the sitemap

Known remaining 404s

Eight plugin CSS sprites and legacy IE webfont formats referenced by bdt-uikit.css / gwts-style.css. They 404 on the origin too — the files were never uploaded. Invisible in practice.

Hosting notes

  • Pages must serve from /docs on the default branch.
  • The repo must be public — the StansAssets org is on the free plan.
  • Repo is ~60 MB against a 1 GB limit; bandwidth 100 GB/month soft limit.

About

Static build of kapps.io, served from GitHub Pages. Generated from WordPress by the pipeline in tools/.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages