Skip to content

Data Privacy & Security

Privacy is a core value at DevLingo. Here we explain in detail how data flows, where it’s stored, and who can access it.

Step 1: You select "idempotent" in Slack
Step 2: Press ⌘⇧D
Step 3: Mac app checks local database and cache
Step 4: If no match, sends query to Cloudflare Workers (HTTPS encrypted)
Request includes:
• Selected text: "idempotent"
• Context (surrounding text)
• App identifier (Slack)
• Mode: Word
Step 5: Workers calls Claude API
Step 6: Claude returns structured JSON result
Step 7: Mac app receives the result
Step 8: Unless the user clicks "Save," the result is not stored
(data disappears when the floating window is closed)
Steps 1-7: Same as above
Step 8: User clicks "Save to Word Book"
Step 9: Data is stored in local SwiftData
(completely on-device, not uploaded to the cloud)
Step 10: Word Book sync toggle OFF → done (local only)
Word Book sync toggle ON → Step 11
Step 11: User device syncs to Cloudflare D1
(private user database, with authentication)

Important: Any text sent by DevLingo through the Claude API will not be used to train Claude or any other model. We follow Anthropic’s default policy.

✓ Your text is used once and discarded
✓ Claude discards it immediately after processing (no storage)
✓ Not used for any form of data mining

:::note Verification All Anthropic Claude API requests are tagged with “user=,” indicating “this is end-user data and should not be used for training.” :::

Local Storage with Cloud Sync Disabled by Default

Section titled “Local Storage with Cloud Sync Disabled by Default”

The Word Book is saved only on your Mac by default, using SwiftData:

~/Library/Containers/com.devglish.com/Data/
└── default.store/
└── word_entries.db (local SQLite)

This database is device-private and only accessible by the DevLingo app.

If you want to sync your Word Book across multiple Macs, you can explicitly enable cloud sync:

Settings → iCloud Sync → Toggle ON

Once enabled, the Word Book is encrypted and uploaded to Cloudflare D1:

Encryption: Client-side encryption (Curve25519) → server storage
Authentication: User's JWT token (security token)
Access control: Each user can only access their own data
Isolation: Row-level database isolation prevents cross-user access

:::caution Data Transfer After enabling cloud sync, if you cancel your subscription or delete your account, cloud data is automatically deleted after 30 days. Local SwiftData is unaffected and remains on your device. :::

DevLingo strictly follows the “minimize collection” principle:

✗ Code content (even though you may use DevGlish in Xcode)
✗ Full browsing history or app usage history
✗ Chat logs or email content
✗ Your Git history
✗ Other private files on your device
✓ The text you selected for lookup
✓ 50 characters of surrounding context (used only for AI understanding)
✓ Current app's Bundle Identifier (helps AI adjust style)
✓ Your native language setting (for L1 interference tips)
✓ Word Book content (only when cloud sync is explicitly enabled)

The DevLingo backend (Cloudflare Workers) holds the Claude API key. Your Mac app never needs to expose the key directly — all API requests are proxied through Workers.

Mac App Workers (edge)
↓ (HTTPS) ↓
│── Bearer: user_jwt ────────→ │
│ │
│ (1-hour expiry) │ (Claude API Key)
│ │
│← Structured Response ←────── Claude API

Benefits:

  • Key is not stored locally (cannot be leaked)
  • All API calls are processed at Cloudflare’s trusted edge
  • Even if your Mac is compromised, the key remains safe

Users receive a short-lived JWT token (1-hour expiry) upon sign-in:

Algorithm: HS256 (HMAC SHA-256)
Signing key: Cloudflare Secret (not stored locally)
Storage location: macOS Keychain (system-encrypted)
Refresh: Token is automatically refreshed before expiry

Keychain security level:

Tied to the Mac's iCloud unlock key
System prompts user confirmation on each access
Even if someone steals your hard drive, it cannot be read

All communication from Mac to Cloudflare Workers is HTTPS encrypted:

TLS 1.3 (latest protocol)
Certificate: LetsEncrypt (auto-renewed)
Perfect Forward Secrecy

DevLingo’s tiered lookup system ensures you can use it offline:

Select "idempotent" in airplane mode
Query local technical vocabulary (85+ terms) → success!
Result displayed instantly, no network required

Network is only needed for:

✓ Looking up new vocabulary not in the local database
✓ Syncing Word Book to the cloud
✓ Fetching latest TTS audio cache

The other 95% of lookups can be completed entirely offline.

If you decide to delete your DevLingo account:

Step 1: Settings → Account → Delete Account
Step 2: System will ask you to confirm again
Step 3: Cloudflare deletes:
• User account
• Cloud Word Book
• Login history
• API usage logs
(completely deleted after 30 days)
Step 4: Local data is unaffected
(still on your Mac, to be deleted by you manually)

:::caution Data Permanence Once an account is deleted, cloud data cannot be recovered. However, you can export your local Word Book as CSV for permanent storage. :::

DevLingo complies with the following regulations:

RegionRegulationStatus
EUGDPR (General Data Protection Regulation)✓ Compliant
USCCPA / CPRA✓ Compliant
ChinaData localization✓ Local storage only; cloud sync uses Cloudflare (optional)

:::note Data Protection Officer For privacy inquiries, contact [email protected]. We respond within 24 hours. :::

The DevLingo engineering team regularly conducts:

• Code security audits (OWASP Top 10)
• Dependency scanning (npm audit, Xcode security)
• Penetration testing (third-party)
• Database access auditing (who accessed what)

Audit reports are transparently published to users every quarter.


Summary: DevLingo’s privacy design follows the “zero trust” principle — assuming the network is being monitored, assuming the device is compromised, but through encryption, authentication, and minimum data collection, ensuring your data always remains under your control.