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

71 lines
No EOL
5.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Main Website for Sea Haven Industries
![HTML](https://img.shields.io/badge/HTML-E34F26?logo=html5&logoColor=white)
![Eleventy](https://img.shields.io/badge/Eleventy-000?logo=eleventy&logoColor=white)
![JavaScript](https://img.shields.io/badge/JavaScript-F7DF1E?logo=javascript&logoColor=black)
![Deploy](https://github.com/Sea-Haven-Industries/seahaven-site/actions/workflows/deploy.yaml/badge.svg)
A clean static website for Sea Haven Industries — authored as [Eleventy](https://www.11ty.dev/) 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
```bash
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