datewise/app/routes/privacy.tsx
metatroncubeswdev 1d2d943d54 feat(security): encrypt customer personal data at rest
- Prisma extension seals booking name/email/phone/address and waitlist contacts with
  AES-256-GCM on write and opens them on read (incl. nested reads)
- keyed-hash columns for exact email/phone lookups (privacy webhooks, booking search,
  waitlist de-duplication); migration 0002
- tests prove only ciphertext is stored; privacy/terms/SECURITY.md updated to match

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 18:56:05 -04:00

66 lines
3.5 KiB
TypeScript

// Public privacy policy (required for the App Store listing): https://<app domain>/privacy
// Keep every statement true to the code: update this page whenever data handling changes.
import type { MetaFunction } from "react-router";
export const meta: MetaFunction = () => [{ title: "Privacy policy · Datewise" }];
const CONTACT = "info@metatroncubesolutions.com";
export default function Privacy() {
return (
<main style={{ maxWidth: 720, margin: "48px auto", padding: "0 20px", font: "16px/1.6 Inter, 'Segoe UI', system-ui, sans-serif", color: "#1f2937" }}>
<p><a href="/">Datewise</a></p>
<h1>Privacy policy</h1>
<p>
Last updated: October 14, 2026. This policy explains what the Datewise app (by Metatroncube Software Solutions) collects
when a merchant installs it on a Shopify store, and when that store's customers choose a delivery or pickup time.
</p>
<h2>What we collect</h2>
<ul>
<li><strong>Store information:</strong> shop domain, currency, time zone, locations and the plan you choose.</li>
<li><strong>Your settings:</strong> opening hours, time slots, capacity, cutoffs, holidays, product rules, delivery zones and fees.</li>
<li>
<strong>Bookings:</strong> for each scheduled order, the order ID and number, the chosen method, location, date and time,
the items, and the customer's name, email, phone number and delivery address, taken from the Shopify order.
</li>
<li><strong>Waitlist entries:</strong> the email address or phone number a customer gives to join a waitlist for a full date.</li>
<li><strong>Postal codes</strong> a customer enters to check delivery, used only to find their delivery zone.</li>
</ul>
<h2>How we use it</h2>
<p>
Only to provide the app: show available times, hold and record bookings, show bookings and driver run sheets to you, send the
reminders and waitlist messages you switch on, and let customers change their own booking. We don't sell data or use it for
advertising, profiling or training AI models.
</p>
<h2>Who processes it</h2>
<ul>
<li>Our hosting provider, for servers and the database.</li>
<li>Resend, to send reminder and waitlist emails.</li>
<li>Twilio and Meta (WhatsApp), only if you connect your own accounts for SMS or WhatsApp reminders.</li>
<li>Google Maps, to turn delivery postal codes and addresses into distances, if you use distance-based delivery zones.</li>
</ul>
<h2>Security</h2>
<p>
Data is encrypted in transit (HTTPS). Customers' names, emails, phone numbers and addresses, and the messaging credentials
you enter, are encrypted at rest (AES-256-GCM); lookups use keyed hashes, never the plain values. Database backups are
encrypted. Access to our systems is limited to authorised staff. Our data processing terms are in
the <a href="/terms">terms of service</a>.
</p>
<h2>Retention and deletion</h2>
<p>
When a customer asks Shopify to erase their data, we remove their name, email, phone and address from bookings and delete
their waitlist entries. When you uninstall the app, pending reminders stop at once, and we delete all data about your store
48 hours later, when Shopify sends the shop redaction request.
</p>
<h2>Contact</h2>
<p>Questions or requests: <a href={`mailto:${CONTACT}`}>{CONTACT}</a></p>
</main>
);
}