Security

Drivant security and compliance posture

Security posture and compliance.

What we've built, what we're building, and what we rely on upstream providers for. No security theater — just the facts, documented against our own code.

Last reviewed: April 27, 2026

Security at a glance

The short version. Each item below links back to a detailed section further down.

TLS everywhere

Cloudflare Full SSL terminates TLS and re-encrypts to origin. All traffic, every endpoint.

Bcrypt + passkeys

Passwords hashed with bcrypt cost 12. WebAuthn passkey support (Touch ID, Windows Hello, hardware keys).

Short-lived JWTs

15-minute access tokens with 7-day refresh rotation. Family-based reuse detection revokes the whole chain on replay.

AES-256-GCM exports

Encrypted .dvnt project files use AES-256-GCM with PBKDF2-SHA256 (100,000 iterations). Client-side only — we never see the passphrase.

Parameterized SQL + Zod

100% parameterized queries via mysql2. Zod schemas validate request bodies on 12 POST/PUT endpoints.

Helmet + CSP

Helmet default headers (HSTS, X-Frame-Options, nosniff). Electron renderer runs under a strict Content Security Policy with an exact-provider allowlist.

Authentication

Single-factor password auth, phishing-resistant passkeys, and a short-lived JWT flow. Rate-limited and enumeration-resistant by design.

Passwords

Passkeys (WebAuthn)

JWT access + refresh

Cookie transport

Email verification

Account suspension

Data handling

Where your data lives and how it gets there.

DataStorageAt-rest protection
Project data Wasabi S3 (US), gzip-compressed with dvntz: prefix AES-256 at rest (Wasabi) + optional client-side AES-256-GCM on export
Driver photos Wasabi S3, JPEG, 2 MB per-photo cap, label allowlist AES-256 at rest (Wasabi)
Relational data MySQL on our VPS Daily mysqldump backups, gzip-compressed, written to Wasabi S3 under backups/. 30-day retention.
Payment information Stripe — we never receive full card numbers Stripe is PCI DSS Level 1; we hold a customer ID, not card data
Email (transactional) Mailgun — verification, password reset, billing, trial expiry TLS in transit. No marketing lists. No promotional sends to non-users.

Project isolation

.dvnt file format

GDPR & CCPA compliance

Rights we support today, backed by real endpoints — not a policy page with no teeth.

Every subprocessor we use (Stripe, Mailgun, Mapbox, Wasabi, Cloudflare) operates under a DPA or equivalent contractual commitment covering GDPR-compliant data handling.

Electron desktop security

The desktop app follows Electron's current hardening guidance — renderer isolation, no Node, restricted file access.

SettingValue
contextIsolationtrue
nodeIntegrationfalse
sandboxtrue
enableRemoteModulefalse
IPC surfaceExposed via contextBridge only, under a single window.drivant namespace
Navigationwill-navigate blocks everything outside localhost dev + file://. setWindowOpenHandler denies all popups.

File I/O is sandboxed

Build integrity

Renderer CSP

Electron applies a custom Content Security Policy via onHeadersReceived. connect-src allowlists our own API, Mapbox, HERE, OSRM, Nominatim, LocationIQ, Stripe, and Wasabi — no wildcards to arbitrary origins.

Network security

Cloudflare edge

Server

Rate limiting

ScopeLimitWindow
Auth (login, register, forgot-password)20 requests15 min / IP
Telemetry, error reports, waitlist500 requests15 min / IP
Public support tickets5 requests15 min / IP
Global1,000 requests15 min / IP

HTTP hardening

WebSocket auth

Subprocessors

Every third party that touches customer data, what it does, and what it sees. Each one is named in our Data Processing Agreement; sub-processor changes are notified 30 days in advance.

SubprocessorPurposeData
StripeSubscription billingEmail, name, payment method (card tokens — we never see cards)
MailgunTransactional emailEmail address, first name
MapboxMap tiles, geocoding, directionsAddresses, coordinates, tile requests
HERE TechnologiesCommercial truck routing (Pro and above)Route waypoint coordinates
OSRMDefault driving directionsRoute waypoint coordinates
Nominatim (OpenStreetMap)Geocoding fallbackAddresses
LocationIQGeocoding fallback (overflow)Addresses
WasabiProject data, driver photos, database backupsProject JSON, JPEG photos, SQL dumps
CloudflareDNS, CDN, WAF, TLS terminationHTTP request/response metadata

What we don't yet offer

We'd rather name the gaps than paper over them. Here's what we can't promise today.

  • SOC 2. Not pursued yet. It's on the Fleetfully roadmap for when we have the revenue and headcount to do it properly rather than as a checkbox exercise.
  • HIPAA BAA. Not available today. If you're in healthcare and need one, email [email protected] so we can understand whether the fit makes sense before you commit.
  • SAML / OIDC SSO. Planned for our Fleetfully enterprise tier (Q3–Q4 2026). Not available on current tiers.
  • Customer-managed encryption keys (BYOK). Not today. Data at rest is protected by Wasabi's AES-256 plus optional client-side AES-256-GCM on export.
  • Audit log export. We log admin actions server-side but do not yet expose a structured, customer-facing audit log. Planned alongside Fleetfully.
  • Account lockout on failed login. We rely on the 20-per-15-minute auth rate limit. A dedicated lockout mechanism is not implemented.
  • Server-side token revocation list. Access tokens are short-lived (15 minutes) and refresh tokens support family-wide revocation on reuse — but there is no global JWT blocklist. A leaked access token is valid for up to its 15-minute lifetime.
  • Public bug bounty. No formal program yet. Responsible disclosures are welcomed at [email protected] and we respond.

Contact and disclosure

Security reports, DPA requests, ROPA requests, and compliance questionnaires all go to a single inbox. We monitor it and respond.