Nord Security · 2021 — 2023
NordLocker — Encrypted Cloud Storage
Senior iOS Engineer
The iOS client for an end-to-end encrypted cloud storage product, covering client-side AES-256 encryption, sync, and a StoreKit 2 subscription system.

Problem
NordLocker's promise to users was zero-knowledge storage — the company itself should never be able to read a user's files. That promise had to hold up not just in marketing copy but in the actual client implementation, while still delivering the sync reliability and subscription experience users expect from a mainstream cloud product.
Approach
I built the iOS encryption layer using CryptoKit to encrypt files with AES-256 before they ever left the device, with keys derived and managed client-side. On top of that, I built sync and conflict-resolution logic that could operate correctly on encrypted blobs without the server ever needing plaintext, and a StoreKit 2 subscription system covering trials, entitlements, and family sharing.
Architecture
The client is layered into an encryption module (key derivation, AES-256 file encryption via CryptoKit), a sync engine that tracks file state and resolves conflicts using encrypted metadata, and a StoreKit 2 entitlement layer that gates features locally with a design biased toward availability — a lapsed receipt check fails toward access, not lockout, until it can be safely reconciled.
Technical Decisions
Client-side encryption, no exceptions
Every file is encrypted before it leaves the device, meaning the server architecture itself was never a variable in whether the zero-knowledge promise held — it simply never had access to plaintext or usable keys.
Fail-safe entitlement checks
StoreKit 2 receipt validation is designed to favor the user during ambiguous states like poor connectivity, because losing access to your own encrypted files due to a subscription check timing out is a worse failure than a brief grace period.
Challenges
- Implementing correct, auditable client-side AES-256 encryption for a security-critical consumer product.
- Resolving sync conflicts on encrypted data without server-side visibility into file contents.
- Handling StoreKit 2 edge cases — trials, family sharing, refunds — without support tickets becoming the safety net.
Results
- Shipped the iOS encryption layer underpinning NordLocker's zero-knowledge storage guarantee.
- Reduced subscription-related support tickets by hardening entitlement handling around trials and family sharing.
Lessons learned
- Security-critical code deserves a different review bar — more eyes, more tests, more paranoia about edge cases than typical feature work.
- Trust-based products live or die on how gracefully they handle failure states, not just the happy path.
More projects
All projectsIndependent · 2021 — Present
Momena
A privacy-first consumer app I designed, built, and shipped entirely by myself — from Figma to SwiftUI, CloudKit sync, and weekly AI-powered insights — without operating a traditional backend.
Magnosco · 2023 — Present
Magnosco — Diagnostic Imaging Platform
The iOS application connecting a dermatological imaging device to an on-device CoreML diagnostic pipeline, built in close collaboration with imaging scientists.
Diconium (for Volkswagen Group) · 2018 — 2021
Volkswagen — Connected Owner App
The companion iOS app connecting Volkswagen drivers to their vehicles — remote status, trip data, and configuration — rebuilt module by module inside a large, long-lived, multi-brand codebase.