Security at MapleNorth

Built for the data you'd
never want leaked.

Guest names, phone numbers, booking calendars, channel credentials — this is sensitive operational data. Here's exactly how we handle it today, what we're not yet certified on, and what we're building toward.

Last updated: 2026-05-27

At a glance

Data residency
EU region (Supabase / Postgres)
Encryption in transit
TLS 1.2+ everywhere
Encryption at rest
AES-256 (Supabase default)
Authentication
Supabase Auth (bcrypt + JWT)
Authorization
PostgreSQL Row-Level Security per user
Webhook integrity
HMAC-SHA256 signature verification
Backups
Daily, point-in-time recovery (7 days)
Operator entity
Shape d.o.o. · Slovenia · EU

Infrastructure

MapleNorth runs on a modern, audit-friendly stack with all production data hosted in the European Union:

  • Database: Managed PostgreSQL via Supabase (EU region). Point-in-time recovery for 7 days. Automated daily snapshots.
  • Application backend: FastAPI deployed behind HTTPS-only endpoints with auto-renewing certificates.
  • Frontend & edge: Vercel with automatic HTTPS via Let's Encrypt, HTTP/2, and edge caching for static assets.
  • No customer data in source control. Secrets live in deployment environment variables only.

Encryption

  • In transit: TLS 1.2 or higher for every request to maplenorth.org, our API, and the database. Insecure HTTP is auto-redirected.
  • At rest: AES-256 disk encryption on the database (Supabase default) and on all storage volumes hosting application logs.
  • Passwords: Hashed with bcrypt by Supabase Auth — your password never touches MapleNorth's codebase or logs in cleartext, ever.
  • API tokens: Issued as signed JWTs with short expirations; refreshed via Supabase's refresh-token flow.

Authentication & access control

  • Sign-in: Email + password via Supabase Auth, or OAuth (Google) when enabled.
  • Session tokens: JWTs validated server-side on every API request. We never accept tokens we haven't verified.
  • Service keys: Supabase service-role keys are stored only in server-side environment variables. They never leave the backend, never appear in client bundles, and never get logged.
  • Internal access: Only the founder has production database access today. As the team grows, access will be issued on a least-privilege basis with audit logs.

Database & row-level security

Every table holding customer data has PostgreSQL Row-Level Security (RLS) enabled. RLS policies are enforced by the database itself — not application code — so a bug in the API can't accidentally leak another user's rows.

Concretely, every properties, bookings, message_threads, and messages row carries a user_id that's checked against the authenticated session at query time.

Webhook security

Inbound webhooks from third parties (Resend Inbound, Meta WhatsApp Cloud API) are signature-verified before any database write:

  • Email (Resend / Postmark / SendGrid): HMAC-SHA256 verification against a provider-issued signing secret.
  • WhatsApp (Meta Cloud API): X-Hub-Signature-256 verification against our Meta App secret.
  • Deduplication: Every inbound message is keyed by provider message ID; replays are silently dropped at the database constraint level.

Data retention & deletion

  • Active accounts: Data is retained while your account is active.
  • Closed accounts: All personal data is deleted within 30 days of account closure, except where law requires retention (e.g., invoice records under tax law).
  • Guest data: Booking history and message threads tied to deleted properties are anonymized after 90 days.
  • Backups: Encrypted snapshots are retained for 7 days then rotated.
  • GDPR rights: Export, correction, and deletion requests can be sent to privacy@maplenorth.org — we respond within 30 days.

Incident response

If we detect or are notified of a security incident:

  1. The on-call engineer (currently the founder) is paged within minutes.
  2. Affected systems are isolated; access tokens are rotated.
  3. Root cause is identified and a fix is deployed.
  4. Affected customers are notified by email within 72 hours of confirming the incident, with what data was involved and what we've done about it.
  5. A post-incident write-up is published at /security/incidents when applicable.

We have not had a reportable incident to date.

Compliance roadmap

We're being deliberately transparent about what's in place today vs. what we're building toward. No security theater.

HTTPS everywhere (TLS 1.2+)
Today
AES-256 encryption at rest
Today
Row-Level Security on all customer tables
Today
HMAC-verified inbound webhooks
Today
Daily encrypted backups + 7-day PITR
Today
EU data residency
Today
Public Privacy Policy + Terms + DPA template
Privacy policy live; DPA template available on request
In progress
Documented incident response runbook
Draft in place; formal publication Q3 2026
In progress
External penetration test
Targeting Q3 2026
Planned
SOC 2 Type I report
Vanta or Drata starter; targeting Q4 2026
Planned
SOC 2 Type II report
Targeting H2 2027 (after Type I)
Planned
ISO 27001 certification
Long-term goal; tied to enterprise customer requirements
Planned

Responsible disclosure

Found something? Please tell us before posting publicly. We're a small team and we'll respond fast.

security@maplenorth.org

Initial reply within 2 business days. We don't currently offer a paid bounty, but we'll publicly credit researchers in our changelog (with your permission) and we'll work with you on responsible disclosure timing.

Machine-readable contact at /.well-known/security.txt.

Have a security question we haven't answered, or want our DPA template for review?

security@maplenorth.org

MapleNorth is operated by Shape d.o.o., a Slovenia-registered EU entity established 2014. Privacy policy.