seahaven-site/eula/index.njk
Adam Moussa 5ee640074c
Migrate to thin Eleventy build + a11y/SEO/perf/CI hardening (#20)
* 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.
2026-06-12 17:02:06 -04:00

86 lines
7.4 KiB
Text

---
layout: base.njk
title: "End User License Agreement — Sea Haven Industries"
description: "End User License Agreement for Sea Haven Industries QuickBooks application."
pageCss: legal
robots: "noindex, nofollow"
---
<!-- ── Page Hero ── -->
<section class="page-hero">
<div class="container">
<nav class="breadcrumb" aria-label="Breadcrumb">
<a href="/">Home</a>
<span aria-hidden="true">/</span>
<span>End User License Agreement</span>
</nav>
<h1>End User License Agreement</h1>
</div>
</section>
<!-- ── Content ── -->
<section class="prose-section">
<div class="container">
<div class="prose">
<p><em>Last updated: April 13, 2026</em></p>
<p>This End User License Agreement ("Agreement") is a legal agreement between you ("User" or "you") and Sea Haven Industries, Inc. ("Company," "we," "us," or "our") governing your use of our QuickBooks-integrated application (the "App"). By installing, accessing, or using the App, you agree to be bound by the terms of this Agreement. If you do not agree, do not install or use the App.</p>
<h3>1. License Grant</h3>
<p>We grant you a limited, non-exclusive, non-transferable, revocable license to use the App solely for your internal business purposes in connection with your authorized QuickBooks account. This license does not include any right to sublicense, sell, distribute, or otherwise make the App available to third parties.</p>
<h3>2. QuickBooks Integration</h3>
<p>The App integrates with Intuit QuickBooks and may access, read, or modify data within your QuickBooks account as necessary to provide its functionality. By using the App, you authorize us to access your QuickBooks data in accordance with the permissions you grant during the connection process. Your use of QuickBooks is also subject to Intuit's own terms of service and privacy policies.</p>
<h3>3. Account and Access</h3>
<p>You are responsible for maintaining the confidentiality of your account credentials and for all activity that occurs under your account. You agree to notify us immediately of any unauthorized use of your account. We reserve the right to suspend or terminate access to the App at any time, with or without notice, for any reason, including if we reasonably believe you have violated this Agreement.</p>
<h3>4. Data Use and Privacy</h3>
<p>Our collection, use, and protection of your data is governed by our <a href="/privacy-policy/">Privacy Policy</a>. By using the App, you consent to the data practices described therein. We will not sell your QuickBooks data to third parties. We may access your data only as necessary to provide, maintain, and improve the App's functionality.</p>
<h3>5. Restrictions</h3>
<p>You agree not to:</p>
<ul>
<li>Copy, modify, distribute, sell, or lease any part of the App</li>
<li>Reverse engineer, decompile, or disassemble the App</li>
<li>Use the App for any unlawful purpose or in violation of any applicable laws or regulations</li>
<li>Attempt to gain unauthorized access to any systems or networks connected to the App</li>
<li>Remove, alter, or obscure any proprietary notices or labels on the App</li>
<li>Use the App in a manner that could damage, disable, or impair our servers or networks</li>
</ul>
<h3>6. Intellectual Property</h3>
<p>The App and all related content, features, and functionality are and will remain the exclusive property of Sea Haven Industries, Inc. and its licensors. This Agreement does not transfer any ownership rights to you. All trademarks, service marks, and trade names used in the App are the property of their respective owners.</p>
<h3>7. Disclaimer of Warranties</h3>
<p>THE APP IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. WE DO NOT WARRANT THAT THE APP WILL BE UNINTERRUPTED, ERROR-FREE, OR SECURE, OR THAT ANY DEFECTS WILL BE CORRECTED. YOUR USE OF THE APP IS AT YOUR SOLE RISK.</p>
<h3>8. Limitation of Liability</h3>
<p>TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL SEA HAVEN INDUSTRIES, INC., ITS DIRECTORS, EMPLOYEES, PARTNERS, AGENTS, OR AFFILIATES BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, INCLUDING WITHOUT LIMITATION LOSS OF PROFITS, DATA, OR BUSINESS OPPORTUNITIES, ARISING OUT OF OR IN CONNECTION WITH YOUR USE OF OR INABILITY TO USE THE APP, EVEN IF WE HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. OUR TOTAL LIABILITY TO YOU FOR ALL CLAIMS ARISING FROM OR RELATED TO THIS AGREEMENT SHALL NOT EXCEED THE AMOUNT YOU PAID US, IF ANY, IN THE TWELVE (12) MONTHS PRECEDING THE CLAIM.</p>
<h3>9. Indemnification</h3>
<p>You agree to indemnify, defend, and hold harmless Sea Haven Industries, Inc. and its officers, directors, employees, and agents from and against any claims, liabilities, damages, losses, or expenses (including reasonable attorneys' fees) arising out of or in any way connected with your use of the App, your violation of this Agreement, or your violation of any rights of a third party.</p>
<h3>10. Termination</h3>
<p>This Agreement is effective until terminated. We may terminate or suspend your access to the App at any time without prior notice or liability. Upon termination, your right to use the App will immediately cease. You may terminate this Agreement at any time by disconnecting the App from your QuickBooks account and ceasing all use. Sections 6 through 9 and 11 through 13 shall survive any termination of this Agreement.</p>
<h3>11. Governing Law</h3>
<p>This Agreement shall be governed by and construed in accordance with the laws of the State of New York, without regard to its conflict of law provisions. Any disputes arising under this Agreement shall be subject to the exclusive jurisdiction of the courts located in Suffolk County, New York.</p>
<h3>12. Changes to This Agreement</h3>
<p>We reserve the right to modify this Agreement at any time. If we make material changes, we will update the "Last updated" date at the top of this page. Your continued use of the App after any changes constitutes your acceptance of the revised Agreement. We encourage you to review this Agreement periodically.</p>
<h3>13. Severability</h3>
<p>If any provision of this Agreement is found to be unenforceable or invalid, that provision shall be limited or eliminated to the minimum extent necessary so that this Agreement shall otherwise remain in full force and effect.</p>
<h3>14. Entire Agreement</h3>
<p>This Agreement, together with our Privacy Policy, constitutes the entire agreement between you and Sea Haven Industries, Inc. regarding your use of the App and supersedes all prior or contemporaneous agreements, understandings, or communications, whether written or oral.</p>
<h3>Contact Us</h3>
<p>If you have questions or concerns about this Agreement, please contact us:</p>
<p>Sea Haven Industries, Inc.<br>
710 Koehler Ave, Ronkonkoma, NY 11779<br>
Email: <a href="mailto:work-orders@seahaven.com">work-orders@seahaven.com</a><br>
Phone: (631) 776-5102</p>
</div>
</div>
</section>