The API Learnings
Every API I've integrated has taught me something different about building real products. These aren't tutorial APIs — they're production integrations that power shipped products and handle real data.
Dtone DVS API (Simplifly)
The Dtone DVS API is how Simplifly sources and distributes eSIM data plans globally. It's an enterprise-grade API that provides access to a massive catalog of eSIM products, mobile recharges, and gift cards across dozens of countries.
What I learned:
- Enterprise APIs have enterprise complexity. The documentation is thorough but dense. Sandbox environments behave differently from production. Rate limits exist and matter.
- Product cataloging is hard. Dtone offers hundreds of products across hundreds of destinations. Building a user-friendly interface on top of that catalog — filtering, searching, presenting the right options — is a product challenge, not just a technical one.
- B2B API design. When Simplifly pivoted to B2B, I had to think about API design from the other side — building a developer portal, API keys, and documentation for businesses integrating Simplifly into their systems. Learning from how Dtone structured their API informed how I structured mine.
StoreKit 2 (LockIn)
Apple's StoreKit 2 handles LockIn's in-app purchases and subscription model. It's the modern replacement for the original StoreKit framework, and while it's better than what came before, it's still Apple — which means it's still complicated.
What I learned:
- Sandbox testing is pain. Subscriptions renew in minutes instead of months. Sandbox accounts get stuck. Transactions appear and disappear. Testing IAP requires maintaining mental models of two different realities simultaneously.
- Receipt validation matters. You can't just trust that a purchase happened. Server-side verification, transaction listeners, and proper state management are non-negotiable for a real subscription product.
- Apple takes 30%. Or 15% for small developers. Either way, the App Store tax is a real factor in pricing decisions.
Screen Time API / FamilyControls (LockIn)
The FamilyControls and DeviceActivityMonitor frameworks are what make LockIn actually work — they control which apps get blocked and when. This is one of Apple's most restricted APIs.
What I learned:
- Entitlements gate everything. You can't just import the framework. Apple has to manually approve your entitlement request. This added weeks to development.
- Privacy-first architecture. Apple doesn't let you see which specific apps a user has installed. You work with opaque tokens. This is good for privacy but challenging for building features around specific apps.
- The ShieldConfigurationExtension lets you customise the block screen — what users see when they try to open a blocked app. Getting this right is crucial for user experience.
Stripe Connect (GoTagIt / Simplifly)
Stripe Connect handles payment processing for projects that involve moving money between parties. The connected accounts model — where Stripe handles compliance, payouts, and tax reporting — is powerful but complex.
What I learned:
- Payment infrastructure has layers. It's not "add a payment button." It's connected accounts, platform fees, payout schedules, currency conversion, and dispute handling.
- UAE-specific considerations. Stripe works in the UAE, but Tap Payments exists for a reason. Different regions have different payment norms, and "just use Stripe" isn't always the answer.
CloudKit (LockIn)
Apple's CloudKit powers LockIn's leaderboard — syncing push-up counts and streaks across users for the competitive layer.
What I learned:
- Apple's cloud is free but opinionated. CloudKit has a generous free tier for iOS apps, but it works Apple's way. Schema design, record types, and query limitations are all Apple-specific.
- Sync is hard. Conflict resolution, offline handling, and real-time updates across devices — cloud sync sounds simple until you implement it.
Vision Framework (LockIn)
Apple's Vision framework with body pose estimation is how LockIn detects push-ups in real-time through the camera.
What I learned:
- Computer vision is practical now. Detecting body poses in real-time on a phone was science fiction five years ago. Now it's a framework import.
- False positives are the enemy. Walking, standing up, shifting position — all of these can trigger false push-up counts. Building anti-shake logic to distinguish real push-ups from noise was a significant engineering challenge.
The Meta-Learning
Across all these APIs, the deeper lesson is this: APIs aren't just technical connections. They're business decisions. Choosing Dtone determined Simplifly's product catalog. Choosing StoreKit 2 determined LockIn's monetization model. Choosing FamilyControls determined what LockIn could and couldn't do.
Every API integration is a commitment — to a vendor, a platform, a set of constraints. Understanding those constraints before writing code saves more time than any debugging session.
See Also
- Technical Skills -- the full API and framework list
- LockIn -- StoreKit, FamilyControls, Vision, CloudKit
- Simplifly -- Dtone DVS, Stripe
- App Store Nightmares -- the other side of Apple APIs