mirror of
https://github.com/Sea-Haven-Industries/seahaven-site.git
synced 2026-09-30 07:43:16 +00:00
* chore(build): add Eleventy scaffold
Thin Eleventy build (v3.1.6, pinned) — passthrough-copies assets/,
robots.txt, sitemap.xml; outputs flat HTML to _site/. _data/site.json
holds site-wide constants; _data/images.json maps image keys to
src+width+height for the {% image %} shortcode (CLS fix). Output stays
flat HTML served from the same S3 bucket + CloudFront.
* refactor(templates): base layout, partials, shared JS, CSS extraction
- _includes/base.njk + nav/mobile-menu/footer partials reproduce the
shared chrome once (was hand-duplicated across 13 pages). Adds a
skip-link and <main> landmark (WCAG 2.4.1), aria-expanded/role=dialog
hooks on the menu, and a {% year %} shortcode replacing document.write.
- assets/js/nav.js: extracted sticky-nav + accessible mobile-menu dialog
(focus trap, Escape, focus return) + rAF-throttled hero parallax.
- assets/js/form.js: Basin AJAX submit with an accessible status region.
- assets/css/*.css: per-page inline <style> extracted into page CSS files
(home/about/services/careers/jobs/contact/social/legal/404); skip-link
+ :focus-visible added to main.css.
- index.njk: homepage converted as the reference page.
* fix(css): make hero-bg url root-relative after extraction
Inline CSS used a document-relative url('assets/...') that resolves
correctly from / but breaks once moved into /assets/css/home.css.
Rewrite to /assets/images/.
* refactor(pages): convert 12 pages to Eleventy templates
Convert about, services, careers (listing + 3 jobs), contact, social-
accountability, privacy-policy, terms-of-service, eula, and 404 from
standalone HTML to .njk against base.njk. Each page now carries only
front-matter (title/description/SEO) + its <main> content; shared head/
nav/footer/scripts come from the layout. JobPosting + LocalBusiness
JSON-LD preserved. Images use the {% image %} shortcode (width/height).
Contact gets an accessible #form-status region. form.js generalized to
wire BOTH the contact form and the .apply-form job application forms
(was contact-only), preserving each submit button's own label.
* fix(a11y): footer contrast to WCAG AA + scope services .form-group
Raise footer text colors (footer-bottom/col/brand/social/contact) and
darken --text-muted so muted text clears 4.5:1 on the dark footer and
warm-gray surfaces. Scope services' flex .form-group override to
.contact-form .form-group so it can't leak to the global rule.
* perf(seo): og-cover image, webp logos, hero preload
Add a real 1200x630 og-cover.jpg (was a 153x49 favicon) wired site-wide
via base.njk og:image/twitter:image. Convert nav/footer logos to webp
(nav 58KB->22KB); PNGs kept as passthrough so old URLs still resolve.
Preload the LCP hero image on the homepage (fetchpriority=high). All
<img> carry width/height via the image shortcode (CLS).
* ci(deploy): build-then-sync, cache headers, safe concurrency
Rename main.yml -> deploy.yaml (org convention). Build with Eleventy
(npm ci && npm run build) and sync _site/ instead of the repo root, so
only built output ships (no source/templates/node_modules). Split
Cache-Control (1-day assets, no-cache HTML) and keep /* invalidation
since filenames are not yet fingerprinted. concurrency cancel-in-progress
false so a deploy is never cut mid sync. ci.yaml validates _site/ via
ci-static build mode.
* docs: README for the Eleventy build and structure
* fix(security): wire services form, guard build, harden deploy
Fable build-review findings:
- BLOCK: services puts .contact-form on the <form> itself (contact uses a
wrapper div), so form.js selector '.contact-form form' never matched it
— the services lead form submitted natively with an empty reCAPTCHA
token. Selector now also matches form.contact-form.
- Guard the build before the --delete S3 sync: require index/contact/404
and >=40 files, so a silently-empty build can never wipe the live bucket.
- npm ci --ignore-scripts on deploy (build verified to pass) to shrink the
supply-chain window on the OIDC-credentialed runner.
- Escape quotes in the image shortcode alt text.
312 lines
14 KiB
Text
312 lines
14 KiB
Text
---
|
|
layout: base.njk
|
|
title: "Sea Haven Industries — Construction & Facilities Services"
|
|
description: "Sea Haven Industries is a trusted construction and facilities services company with years of experience in electrical, plumbing, HVAC, and general contracting."
|
|
heroNav: true
|
|
pageCss: home
|
|
permalink: /index.html
|
|
---
|
|
<!-- ── Hero ── -->
|
|
<section class="hero">
|
|
<div class="hero-bg" id="hero-bg"></div>
|
|
<div class="container">
|
|
<div class="hero-content">
|
|
<div class="hero-eyebrow">
|
|
<div class="hero-eyebrow-line"></div>
|
|
<span>Construction & Facilities Services — Ronkonkoma, NY</span>
|
|
</div>
|
|
<h1>Built on<br><em>integrity,</em><br>delivered with<br>precision.</h1>
|
|
<p class="hero-sub">With 20 years of experience, Sea Haven Industries provides responsive and reliable construction management solutions, ensuring every project meets the highest standards of quality and professionalism.</p>
|
|
<div class="hero-actions">
|
|
<a href="/services/" class="btn btn-primary">
|
|
Explore Services
|
|
<svg viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75"><path d="M3 8h10M9 4l4 4-4 4"/></svg>
|
|
</a>
|
|
<a href="/contact/" class="btn btn-ghost-light">Request a Quote</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="hero-scroll">Scroll</div>
|
|
</section>
|
|
|
|
<!-- ── Stats Bar ── -->
|
|
<div class="stats-bar">
|
|
<div class="container">
|
|
<div class="stats-grid">
|
|
<div class="stat-item">
|
|
<div class="stat-num">2,500<span>+</span></div>
|
|
<div class="stat-label">Projects Annually</div>
|
|
</div>
|
|
<div class="stat-item">
|
|
<div class="stat-num">1,000<span>+</span></div>
|
|
<div class="stat-label">Customers</div>
|
|
</div>
|
|
<div class="stat-item">
|
|
<div class="stat-num">120<span>+</span></div>
|
|
<div class="stat-label">Expert Technicians</div>
|
|
</div>
|
|
<div class="stat-item">
|
|
<div class="stat-num">40<span>+</span></div>
|
|
<div class="stat-label">Branch Offices</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ── Services ── -->
|
|
<section class="section services-section">
|
|
<div class="container">
|
|
<div class="services-intro">
|
|
<div class="services-intro-left">
|
|
<p class="label">What We Do</p>
|
|
<h2 class="display-lg">Comprehensive facilities expertise, under one roof.</h2>
|
|
</div>
|
|
<div class="services-intro-right">
|
|
<p>We combine deep technical knowledge across multiple trades with a self-performing model — so you work with one trusted partner, not a rotating cast of subcontractors. No middlemen, no inconsistencies, just reliable results.</p>
|
|
<a href="/services/" class="btn btn-outline">View All Services</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="services-grid">
|
|
<div class="service-card">
|
|
{% image "electrical", "Electrical installation work", 'loading="lazy"' %}
|
|
<div class="service-card-overlay">
|
|
<div class="service-card-num">01 — Electrical</div>
|
|
<h3>Electrical Systems</h3>
|
|
<p>Installation, maintenance, and repair for commercial and residential electrical systems.</p>
|
|
<a href="/services/" class="service-card-link">
|
|
Learn more
|
|
<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75"><path d="M3 8h10M9 4l4 4-4 4"/></svg>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="service-card">
|
|
{% image "plumbing", "Professional plumbing services", 'loading="lazy"' %}
|
|
<div class="service-card-overlay">
|
|
<div class="service-card-num">02 — Plumbing</div>
|
|
<h3>Plumbing</h3>
|
|
<p>From minor repairs to major installations, our experienced plumbers are ready to handle all your plumbing needs.</p>
|
|
<a href="/services/" class="service-card-link">
|
|
Learn more
|
|
<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75"><path d="M3 8h10M9 4l4 4-4 4"/></svg>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="service-card">
|
|
{% image "hvac", "HVAC air conditioning service", 'loading="lazy"' %}
|
|
<div class="service-card-overlay">
|
|
<div class="service-card-num">03 — HVACR</div>
|
|
<h3>HVACR Services</h3>
|
|
<p>Expert installation, efficient repair, and maintenance of heating, ventilation, and air conditioning systems.</p>
|
|
<a href="/services/" class="service-card-link">
|
|
Learn more
|
|
<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75"><path d="M3 8h10M9 4l4 4-4 4"/></svg>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="service-card">
|
|
{% image "handyman", "Handyman services", 'loading="lazy"' %}
|
|
<div class="service-card-overlay">
|
|
<div class="service-card-num">04 — Handyman</div>
|
|
<h3>Handyman Services</h3>
|
|
<p>Our expert team handles a variety of repair and maintenance tasks, ensuring your facility always remains in prime condition.</p>
|
|
<a href="/services/" class="service-card-link">
|
|
Learn more
|
|
<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75"><path d="M3 8h10M9 4l4 4-4 4"/></svg>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="service-card service-card-wide">
|
|
{% image "garage-door", "Garage door repair service", 'loading="lazy" style="object-position: center 60%"' %}
|
|
<div class="service-card-overlay">
|
|
<div class="service-card-num">05 — Garage Door Repair</div>
|
|
<h3>Garage Door Repair</h3>
|
|
<p>Expert repair and maintenance services to ensure the smooth operation and extended longevity of your garage doors.</p>
|
|
<a href="/services/" class="service-card-link">
|
|
Learn more
|
|
<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.75"><path d="M3 8h10M9 4l4 4-4 4"/></svg>
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ── About ── -->
|
|
<section class="section about-section">
|
|
<div class="container">
|
|
<div class="about-grid">
|
|
<div class="about-img-wrap">
|
|
{% image "team-on-site", "Sea Haven Industries team on site", 'class="about-img-main" loading="lazy"' %}
|
|
<div class="about-img-badge">
|
|
<strong>20</strong>
|
|
<span>Years of<br>Experience</span>
|
|
</div>
|
|
</div>
|
|
<div class="about-content">
|
|
<p class="label">Who We Are</p>
|
|
<h2 class="display-md">A contractor that treats your project like their own.</h2>
|
|
<p>With 20 years of experience, Sea Haven Industries was built on the conviction that facilities work should be done right the first time. As a self-performing company, we maintain direct control over every project — no subcontractors, no surprises.</p>
|
|
<p>Every project, regardless of size, gets the same attention to safety, code compliance, and craftsmanship that our clients have come to expect.</p>
|
|
<div class="about-pillars">
|
|
<div class="pillar">
|
|
<h4>Rapid Response</h4>
|
|
<p>Emergency and standard crews dispatched at a moment's notice — minimal downtime, maximum efficiency.</p>
|
|
</div>
|
|
<div class="pillar">
|
|
<h4>Quality</h4>
|
|
<p>Industry best practices and 120+ licensed technicians on every job.</p>
|
|
</div>
|
|
<div class="pillar">
|
|
<h4>Safety</h4>
|
|
<p>OSHA-compliant processes and a zero-incident culture across all trades.</p>
|
|
</div>
|
|
<div class="pillar">
|
|
<h4>Innovation</h4>
|
|
<p>Custom solutions — from retrofitting facilities with bespoke equipment to solving unique client challenges.</p>
|
|
</div>
|
|
</div>
|
|
<div style="margin-top: 2rem;">
|
|
<a href="/about/" class="btn btn-primary">Our Story</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ── Process ── -->
|
|
<section class="section process-section">
|
|
<div class="container">
|
|
<div class="process-header section-header">
|
|
<p class="label">How We Work</p>
|
|
<h2 class="display-lg" style="color:#fff; max-width: 500px;">A proven process from first call to final inspection.</h2>
|
|
</div>
|
|
<div class="process-steps">
|
|
<div class="process-step">
|
|
<div class="process-step-bar"></div>
|
|
<h3>Discovery & Assessment</h3>
|
|
<p>We listen first. A site visit or detailed consultation helps us understand scope, constraints, and your specific objectives.</p>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="process-step-bar"></div>
|
|
<h3>Proposal & Planning</h3>
|
|
<p>A clear, itemized proposal with realistic timelines. No vague estimates — just a detailed plan you can hold us to.</p>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="process-step-bar"></div>
|
|
<h3>Execution</h3>
|
|
<p>Licensed crews, managed schedules, and regular progress updates. We keep the site clean and communication consistent.</p>
|
|
</div>
|
|
<div class="process-step">
|
|
<div class="process-step-bar"></div>
|
|
<h3>Sign-Off & Support</h3>
|
|
<p>We don't consider a job done until you do. Walk-throughs, documentation, and ongoing support for any follow-up needs.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ── Testimonials ── -->
|
|
<section class="section testimonials-section">
|
|
<div class="container">
|
|
<div class="testimonials-header">
|
|
<div>
|
|
<p class="label">Client Feedback</p>
|
|
<h2 class="display-md">What our clients say.</h2>
|
|
</div>
|
|
<a href="/contact/" class="btn btn-outline" style="flex-shrink:0">Work With Us</a>
|
|
</div>
|
|
<div class="testimonials-grid">
|
|
<div class="testimonial-card">
|
|
<div class="testimonial-stars">
|
|
<span>★</span><span>★</span><span>★</span><span>★</span><span>★</span>
|
|
</div>
|
|
<blockquote>"Sea Haven Industries did an amazing job on our commercial addition. Their team was not only skilled but also very respectful of our space. They completed the project on time, and the result is stunning."</blockquote>
|
|
<div class="testimonial-author">
|
|
<div class="testimonial-author-initials">LG</div>
|
|
<div>
|
|
<div class="testimonial-author-name">Laura G.</div>
|
|
<div class="testimonial-author-role">Commercial Property Manager</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="testimonial-card featured">
|
|
<div class="testimonial-stars">
|
|
<span>★</span><span>★</span><span>★</span><span>★</span><span>★</span>
|
|
</div>
|
|
<blockquote>"From start to finish, Sea Haven Industries provided excellent service. Their team was prompt, courteous, and incredibly skilled. The quality of their work speaks for itself."</blockquote>
|
|
<div class="testimonial-author">
|
|
<div class="testimonial-author-initials">JD</div>
|
|
<div>
|
|
<div class="testimonial-author-name">John D.</div>
|
|
<div class="testimonial-author-role">Real Estate Investor</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="testimonial-card">
|
|
<div class="testimonial-stars">
|
|
<span>★</span><span>★</span><span>★</span><span>★</span><span>★</span>
|
|
</div>
|
|
<blockquote>"I was impressed with the professionalism and skill of the team at Sea Haven Industries. They managed our commercial renovation with minimal disruption and delivered exceptional results."</blockquote>
|
|
<div class="testimonial-author">
|
|
<div class="testimonial-author-initials">ES</div>
|
|
<div>
|
|
<div class="testimonial-author-name">Emily S.</div>
|
|
<div class="testimonial-author-role">Facilities Director</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- ── CTA ── -->
|
|
<section class="cta-section">
|
|
<div class="container">
|
|
<div class="cta-inner">
|
|
<div class="cta-text">
|
|
<p class="label">Start Your Project</p>
|
|
<h2 class="display-md">Ready to get it done right?</h2>
|
|
<p>Whether it's a repair call, a maintenance contract, or a full construction project — Sea Haven is ready to help. Get a detailed, no-obligation quote from our team.</p>
|
|
</div>
|
|
<div class="cta-actions">
|
|
<a href="/contact/" class="btn btn-primary">Request a Free Quote</a>
|
|
<div class="cta-phone">
|
|
<svg width="14" height="14" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M2 3.5C2 2.67 2.67 2 3.5 2h1.586a1 1 0 0 1 .707.293l1.414 1.414a1 1 0 0 1 0 1.414L6.12 6.207A10.003 10.003 0 0 0 9.793 9.88l1.086-1.086a1 1 0 0 1 1.414 0l1.414 1.414A1 1 0 0 1 14 11v1.5c0 .83-.67 1.5-1.5 1.5C6.596 14 2 9.404 2 3.5z"/></svg>
|
|
Or call us: <strong>(631) 776-5102</strong>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "LocalBusiness",
|
|
"name": "Sea Haven Industries",
|
|
"description": "Construction and facilities services company specializing in electrical, plumbing, HVACR, handyman, and garage door services.",
|
|
"url": "https://seahaven.com",
|
|
"telephone": "+16317765102",
|
|
"email": "work-orders@seahaven.com",
|
|
"address": {
|
|
"@type": "PostalAddress",
|
|
"streetAddress": "710 Koehler Ave",
|
|
"addressLocality": "Ronkonkoma",
|
|
"addressRegion": "NY",
|
|
"postalCode": "11779",
|
|
"addressCountry": "US"
|
|
},
|
|
"image": "https://seahaven.com/assets/images/seahaven-logo-nav-new.png",
|
|
"numberOfEmployees": {
|
|
"@type": "QuantitativeValue",
|
|
"minValue": 120
|
|
},
|
|
"foundingDate": "2006",
|
|
"serviceType": ["Electrical Work", "Plumbing", "HVACR Services", "Handyman Services", "Garage Door Repair"]
|
|
}
|
|
</script>
|