← back to Costa Rica
Add public /privacy + /support pages before basic-auth gate for App Store listing URLs
471a89638edf9ee690f2f8e0d04c92cc68d8ee39 · 2026-08-09 10:42:55 -0700 · Steve Abrams
Files touched
A public/legal/privacy.htmlA public/legal/support.htmlM server.js
Diff
commit 471a89638edf9ee690f2f8e0d04c92cc68d8ee39
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Sun Aug 9 10:42:55 2026 -0700
Add public /privacy + /support pages before basic-auth gate for App Store listing URLs
---
public/legal/privacy.html | 84 +++++++++++++++++++++++++++++++++++++++++++++++
public/legal/support.html | 79 ++++++++++++++++++++++++++++++++++++++++++++
server.js | 8 +++++
3 files changed, 171 insertions(+)
diff --git a/public/legal/privacy.html b/public/legal/privacy.html
new file mode 100644
index 0000000..61c107c
--- /dev/null
+++ b/public/legal/privacy.html
@@ -0,0 +1,84 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>Privacy Policy — Costa Rica: Stay, Tour & Book</title>
+<meta name="robots" content="index,follow">
+<style>
+ :root{--ink:#14261d;--muted:#5b6b62;--line:#e3e9e5;--brand:#0b7a4b;--bg:#f7faf8}
+ *{box-sizing:border-box}
+ body{margin:0;font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
+ .wrap{max-width:760px;margin:0 auto;padding:40px 22px 80px}
+ header{border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:28px}
+ .kicker{color:var(--brand);font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-size:12px}
+ h1{font-size:28px;margin:6px 0 4px;line-height:1.2}
+ .updated{color:var(--muted);font-size:13px}
+ h2{font-size:18px;margin:34px 0 8px}
+ ul{padding-left:20px}
+ li{margin:4px 0}
+ a{color:var(--brand)}
+ .foot{margin-top:48px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}
+</style>
+</head>
+<body>
+<div class="wrap">
+ <header>
+ <div class="kicker">Costa Rica · Stay, Tour & Book</div>
+ <h1>Privacy Policy</h1>
+ <div class="updated">Last updated: August 9, 2026</div>
+ </header>
+
+ <p>This Privacy Policy explains what information the Costa Rica: Stay, Tour & Book app
+ (“the app,” “we,” “us”) collects, how we use it, and the
+ choices you have. By using the app you agree to this policy.</p>
+
+ <h2>Information we collect</h2>
+ <ul>
+ <li><strong>Contact information</strong> (name, email, phone number) — to create and secure your account and let you communicate with hosts.</li>
+ <li><strong>User content</strong> (messages you send) — to deliver in-app messaging between you and hosts.</li>
+ <li><strong>Identifiers</strong> (account ID) — to operate your account and keep you signed in.</li>
+ <li><strong>Location</strong> (coarse, optional) — only when you allow it, to show listings near you on the map.</li>
+ <li><strong>Contacts</strong> (optional, user-initiated) — only when you choose to invite friends. Your contacts are used solely on your device to show which friends are already here; we do not upload, store, sell, or message your contacts.</li>
+ <li><strong>Purchases</strong> (booking history) — to show your trips and process bookings.</li>
+ </ul>
+
+ <h2>How we use your information</h2>
+ <ul>
+ <li>To provide the core app functions: browsing listings, booking stays/tours/services, and messaging hosts.</li>
+ <li>To process payments made by international card or SINPE Móvil through our payment processors.</li>
+ <li>To secure your account and prevent fraud and abuse.</li>
+ <li>To respond to your support requests.</li>
+ </ul>
+
+ <h2>Tracking & advertising</h2>
+ <p>We do <strong>not</strong> use your data to track you across other companies’ apps or
+ websites, and we do <strong>not</strong> share your personal information with third parties for
+ their own advertising.</p>
+
+ <h2>Sharing</h2>
+ <p>We share information only as needed to run the service — for example, with payment processors
+ to complete a transaction, and with a host when you contact or book with them. We may disclose
+ information if required by law.</p>
+
+ <h2>Data retention & deletion</h2>
+ <p>We keep your information for as long as your account is active. You can request deletion of your
+ account and associated personal data at any time by emailing us at the address below; we will delete
+ it except where we are required to retain records (for example, transaction records) by law.</p>
+
+ <h2>Security</h2>
+ <p>Data is transmitted over encrypted HTTPS/TLS connections and stored on access-controlled servers.</p>
+
+ <h2>Children</h2>
+ <p>The app is rated 4+ and is intended for a general audience. It is not directed to children under 13,
+ and we do not knowingly collect personal information from them.</p>
+
+ <h2>Contact us</h2>
+ <p>Questions or requests (including data deletion): <a href="mailto:costarica@agentabrams.com">costarica@agentabrams.com</a></p>
+
+ <div class="foot">
+ Costa Rica: Stay, Tour & Book · <a href="/support">Support</a> · © 2026 Agent Abrams.
+ </div>
+</div>
+</body>
+</html>
diff --git a/public/legal/support.html b/public/legal/support.html
new file mode 100644
index 0000000..7041b9f
--- /dev/null
+++ b/public/legal/support.html
@@ -0,0 +1,79 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="utf-8">
+<meta name="viewport" content="width=device-width, initial-scale=1">
+<title>Support — Costa Rica: Stay, Tour & Book</title>
+<meta name="robots" content="index,follow">
+<style>
+ :root{--ink:#14261d;--muted:#5b6b62;--line:#e3e9e5;--brand:#0b7a4b;--bg:#f7faf8}
+ *{box-sizing:border-box}
+ body{margin:0;font:16px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}
+ .wrap{max-width:760px;margin:0 auto;padding:40px 22px 80px}
+ header{border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:28px}
+ .kicker{color:var(--brand);font-weight:700;letter-spacing:.04em;text-transform:uppercase;font-size:12px}
+ h1{font-size:28px;margin:6px 0 4px;line-height:1.2}
+ .sub{color:var(--muted);font-size:14px}
+ h2{font-size:18px;margin:34px 0 8px}
+ a{color:var(--brand)}
+ .card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px 20px;margin:18px 0}
+ .contact{font-size:18px;font-weight:600}
+ details{border-bottom:1px solid var(--line);padding:12px 0}
+ summary{cursor:pointer;font-weight:600}
+ details p{margin:8px 0 0;color:var(--muted)}
+ .foot{margin-top:48px;padding-top:18px;border-top:1px solid var(--line);color:var(--muted);font-size:13px}
+</style>
+</head>
+<body>
+<div class="wrap">
+ <header>
+ <div class="kicker">Costa Rica · Stay, Tour & Book</div>
+ <h1>Support</h1>
+ <div class="sub">We’re here to help you discover, book, and enjoy Costa Rica.</div>
+ </header>
+
+ <div class="card">
+ <div class="contact">Email support</div>
+ <p>Reach us any time at <a href="mailto:costarica@agentabrams.com">costarica@agentabrams.com</a>.
+ We reply within 1–2 business days.</p>
+ </div>
+
+ <h2>Frequently asked questions</h2>
+
+ <details open>
+ <summary>How do I book a stay, tour, or service?</summary>
+ <p>Browse or search listings, open the one you like, choose your dates or time, and tap Book.
+ You’ll see the full price — rate, fees, and total — before you pay.</p>
+ </details>
+ <details>
+ <summary>How do I pay?</summary>
+ <p>Pay by international card (USD) or locally with SINPE Móvil (colones). Your booking is
+ confirmed the moment payment clears.</p>
+ </details>
+ <details>
+ <summary>How do I contact a host?</summary>
+ <p>Every listing shows the best way to reach the host — WhatsApp, phone, email, or our in-app
+ messenger. Your whole conversation stays in one thread.</p>
+ </details>
+ <details>
+ <summary>How do I manage or cancel a booking?</summary>
+ <p>Open <strong>My Trips</strong> to see all your bookings. To change or cancel, message the host
+ or email us and we’ll help.</p>
+ </details>
+ <details>
+ <summary>How do I list my property or service?</summary>
+ <p>Tap your profile and choose to become a host. You can list a stay, tour, or service and get
+ paid to your SINPE Móvil number (Costa Rica) or linked bank (international).</p>
+ </details>
+ <details>
+ <summary>How do I delete my account or data?</summary>
+ <p>Email <a href="mailto:costarica@agentabrams.com">costarica@agentabrams.com</a> and we’ll
+ delete your account and personal data. See our <a href="/privacy">Privacy Policy</a> for details.</p>
+ </details>
+
+ <div class="foot">
+ Costa Rica: Stay, Tour & Book · <a href="/privacy">Privacy Policy</a> · © 2026 Agent Abrams.
+ </div>
+</div>
+</body>
+</html>
diff --git a/server.js b/server.js
index e654090..d8b6a76 100644
--- a/server.js
+++ b/server.js
@@ -57,6 +57,14 @@ app.get('/api/app/health', (_req, res) => {
whatsapp_live: require('./lib/whatsapp').liveMode, plaid_live: require('./lib/plaid').liveMode });
});
+// Public legal/support pages — mounted BEFORE the site basic-auth gate so the
+// App Store listing's Privacy Policy URL and Support URL are reachable by
+// Apple's reviewers and the public (a 401 there rejects the app submission).
+app.get(['/privacy', '/privacy.html'], (_req, res) =>
+ res.sendFile(path.join(__dirname, 'public', 'legal', 'privacy.html')));
+app.get(['/support', '/support.html'], (_req, res) =>
+ res.sendFile(path.join(__dirname, 'public', 'legal', 'support.html')));
+
// Whole-site Basic Auth gate (in-development; remove when ready for public)
const BA_USER = process.env.BASIC_AUTH_USER;
const BA_PASS = process.env.BASIC_AUTH_PASS;
← b0232a1 costa-rica: add docs/GO-LIVE.md operator runbook — TK-10346
·
back to Costa Rica
·
add creds-in-URL fetch guard to gated pages (TK-10984) a9a77cb →