seahaven-site/README.md
Adam Moussa 3a8de4e88b
feat(ci): deploy the marketing site through the org static caller (PLAT-225) (#69)
* feat(ci): deploy the marketing site through the org static caller (PLAT-225)

Prod still ships on merge to main. Exec roles leave this workspace, and the deploy reads the bucket and distribution from SSM.

* fix(ci): run the static check after the legacy ci job

Both jobs call ci-static, which cancels the other in-progress run on the same ref, so ci-complete never saw both succeed.

* fix(ci): address review feedback

* fix(ci): address review feedback

* fix(ci): address review feedback

* fix(ci): address review feedback
2026-09-25 15:18:40 +00:00

5.1 KiB
Raw Permalink Blame History

Main Website for Sea Haven Industries

HTML Eleventy JavaScript Deploy

A clean static website for Sea Haven Industries — authored as Eleventy templates that build to flat HTML, served from an AWS S3 bucket via CloudFront.

Stack

  • Eleventy (11ty) — thin static build: one base layout + partials, no client framework. Output is plain HTML/CSS/vanilla JS.
  • Design system — CSS custom properties (DM Serif Display + Inter, --rose: #cc3366)
  • Forms — Basin (AJAX submission, reCAPTCHA v3, honeypot spam protection)
  • Hosting — S3 + CloudFront. A merge to main, the weekday Paychex cron, and workflow_dispatch deploy production through the org static-site workflow. Other branches preview on Vercel (vercel.json disables Vercel deploys of main).

Infrastructure

HCP Terraform workspace seahaven-site-prod applies terraform/ when terraform/** changes on main. Speculative plans run on pull requests. The workspace writes /seahaven-site/deploy/bucket and /seahaven-site/deploy/distribution-id. GitHub Environment prod holds DEPLOY_ROLE_ARN. Exec roles hcptf-seahaven-site and hcptf-seahaven-site-plan live in the seahaven-site-hcptf stack.

Develop

npm ci            # install (Eleventy, pinned)
npm run serve     # local dev server with live reload
npm run build     # build to _site/

Structure

Path Purpose
*.njk, */index.njk page templates (front-matter + <main> content)
_includes/base.njk document layout (head, nav, footer, skip-link, <main>)
_includes/{nav,mobile-menu,footer}.njk shared chrome partials
_data/site.json site-wide constants (nav, contact, social)
_data/images.json image dimensions for the {% image %} shortcode (CLS)
assets/css/ main.css (shared) + per-page CSS
assets/js/ nav.js (chrome), form.js (Basin forms)
.eleventy.js build config + shortcodes
_site/ build output (gitignored; what deploys)

Pages

Page Path
Homepage /
About /about/
Services /services/
Careers /careers/
Contact /contact/
Social Accountability /social-accountability/
Privacy Policy /privacy-policy/
Terms of Service /terms-of-service/

Open roles on /careers/ are rendered at build time from the Paychex portal at https://jobs.appone.com/seahaven. Learn more links go to each posting on apply.appone.com. The old job URLs redirect to the portal.

Changelog

  • 12-JUN-2026: Frontend polish — self-hosted fonts (removed render-blocking Google Fonts), lazy-loaded reCAPTCHA, BreadcrumbList JSON-LD on interior pages + richer LocalBusiness (geo/areaServed/hasMap), removed dead CSS classes and !important nav hacks.
  • 12-JUN-2026: Migrated to a thin Eleventy build — shared chrome (head/nav/footer/JS) deduplicated into one base layout + partials (was hand-copied across 13 pages). Added skip-link + <main> landmark, accessible mobile-menu dialog, :focus-visible, WCAG AA footer contrast, 1200×630 og-cover social image, hero LCP preload, WebP logos, image width/height (CLS), and pre-deploy CI validation (htmlhint/JSON-LD/sitemap/links). Deploy now builds and syncs _site/ with split Cache-Control.
  • 14-JUL-2025: Initial pull from WordPress site, changed permalinks for proper navigation
  • 17-JUL-2025: Add GitHub Actions workflow for S3 sync on push, using AWS OIDC
  • 04-APR-2026: Major cleanup — stripped unused JS (~805KB), consolidated CSS, removed ~1,150 dead plugin files
  • 04-APR-2026: Added meta descriptions, OG/Twitter Card tags, alt text, robots directives, sitemap, and robots.txt
  • 04-APR-2026: Updated contact info sitewide, fixed broken links, removed WordPress API/generator meta tags
  • 04-APR-2026: Wired contact form to Basin (AJAX), replaced dead metform endpoint
  • 04-APR-2026: Converted all images to WebP, removed metform CSS, stripped WP version strings
  • 07-APR-2026: Full site redesign — rewrote all 9 pages as clean static HTML, removed all WordPress/Elementor markup
  • 07-APR-2026: New Figma-based homepage design with updated stats, logos, and layout
  • 07-APR-2026: Connected all forms to Basin with AJAX submission, reCAPTCHA v3, and honeypot spam protection
  • 07-APR-2026: Moved all images to /assets/images/ with clean filenames, restored original blue wave favicon
  • 07-APR-2026: Deleted all remaining WP assets (~8MB): plugins, themes, uploads, wp-includes
  • 30-APR-2026: Restructured /career/ and /jobs/ into unified /careers/ directory, updated all sitewide links
  • 30-APR-2026: Added traveling maintenance/electrical assistant job page, updated dispatcher and assistant postings to match Indeed listings
  • 30-APR-2026: Replace hardcoded copyright year in footer with dynamic script across all pages