shredbx logo
shredbx shredbx shredbx shredbx Personal
  • Home
  • Lab
  • Portfolio
  • Experience
  • Services
  • Profile
  • Contact
AClaude
  • Home
  • Lab
  • Portfolio
  • Experience
  • Services
  • Profile
  • Contact
Andrei Solovev
Projects
Search projects... ⌘K
  • Projects
    • All 57
    • Web 13
    • Mobile 35
    • macOS 6
    • Packages 2
    • Dev Tools 4
// Omise

Omise Payment iOS SDK

Reusable iOS SDK packages: networking, storage, analytics, and auth for the Omise payment platform

Platform
ios
Stage
live
Year
2021
Team
3
Omise @ Omise (2021-2024)
A Andrei Solovev Source
Omise Payment iOS SDK screenshot 1
Omise Payment iOS SDK screenshot 2
Omise Payment iOS SDK screenshot 3

// Built with

swift swift-package-manager WKWebView XCGLogger Security Carthage

01 Problem

A payment platform ecosystem needed reusable iOS packages shared across multiple apps. The SDK had to provide networking with SSL pinning, Keychain-backed storage, analytics logging, WebView-based authentication with PKCE flow, and a reference architecture for onboarding new apps.

02 Approach

Chose a layered SPM architecture over a monolithic framework because consuming apps needed different subsets of functionality. Evaluated CocoaPods and Carthage — selected SPM for zero-config integration and Apple-native dependency resolution. Designed four layers (Core → Common Services → Data → UI) with strict upward-only dependencies, so networking and storage could be used independently of auth or analytics. Insisted on zero third-party dependencies in core packages to minimize integration risk for consuming teams.

03 Solution

Designed and built 6 reusable Swift Package Manager packages forming a layered SDK architecture. The network layer provides HTTP with SSL pinning and retry logic. The storage layer offers Keychain property wrappers and FileCache. GCPUserKit SDK handles WebView-based authentication with PKCE flow and token management. WebViewBridge enables native-web communication with topic-based pub-sub. Published reference architecture sample for new app onboarding.

04 Outcomes

Qualitative

  • 6 reusable SPM packages shared across multiple apps
  • Layered SDK with explicit dependency graph
  • Custom property wrappers for secure persistence
  • Reference architecture for new app onboarding

05 Trade-offs

Zero third-party dependencies meant writing custom SSL pinning and retry logic instead of using Alamofire — more code to maintain but eliminated version conflicts across consuming apps. SPM at the time (Swift 5.5) had limited binary distribution support, which complicated distribution to teams using older Xcode versions. The strict layering occasionally forced awkward API boundaries where a cross-cutting concern like logging had to be injected rather than imported directly.

06 Constraints

  • Must support iOS 11+ for broad compatibility
  • Zero third-party dependencies in core packages
  • SSL pinning mandatory for network layer
  • SDK must be independently testable

07 Innovation

Layered SDK: UI Layer → Data Layer → Common Services → Core (Network/Storage). Each layer is a separate SPM package with explicit dependencies. Published reference architecture sample for onboarding new apps to the ecosystem. Custom property wrappers for Keychain and UserDefaults access.

Novelty: high

08 Reflection

The layered SDK pattern proved its value when the platform expanded to new apps — each could cherry-pick exactly the packages they needed without pulling in unrelated code. The zero-dependency constraint, initially seen as overly strict, prevented multiple integration issues that other teams experienced with transitive dependency conflicts. This project crystallized my approach to SDK design: explicit layers, minimal dependencies, and reference architectures for onboarding.

09 Links

omise-ios — Public Omise iOS SDK github

// Related Projects

PKG
IN PROGRESS 03 / shots

SBX — AI-Augmented Framework

Go CLI and protocol layer that turn AI-augmented coding into a governed SDLC

MOBILE
IN PROGRESS 05 / shots

7Tree

A private family tree that syncs across your devices — no account, no server

MACOS
06 / panels

Whisperbar

Privacy-first macOS menubar voice-to-text powered by local WhisperKit

MOBILE
06 / shots

Motomoto — Motorcycle Network

Motorcycle social network with GPS tracking and community features

NO IMAGE
MOBILE

Payment Wallet App

Enterprise modular payment wallet with KYC and MiniApp support

NO IMAGE
MOBILE

Cinema Booking App

Full-featured cinema booking with seat selection and payments

shredbx logo shredbx shredbx shredbx shredbx Andrei Solovev

Solution Architect & Lead Software Engineer

ExperiencePortfolioResearch & ExperimentsEducationCertificationSkills
GitHub ↗LinkedIn ↗Email ↗
AVAILABLE FOR NEW PROJECTS
// MY LATEST BEATS
Hobby & Interests

Lab

  • The Lab
  • Framework
  • Components
  • Packages
  • Games
  • Process (SDLC)
  • Knowledge
  • Blog

Andrei

  • Portfolio
  • Experience
  • Services
  • Profile
  • Contact
  • Lifestyle

Team

  • Team
  • Andrei
  • Claude

Legal

  • Privacy
  • Terms
  • Cookies
© 2026 shredbx.com. All rights reserved. — Andrei Solovev |