Same client as Certilife, different vertical. Brightmall is the commerce side — a web-first storefront wrapped in an iOS app so it can sit on a phone home screen, ship through the App Store, and carry the platform-specific responsibilities the web alone cannot.
The application is written in Swift with UIKit, Combine, and SPM-only dependencies. The native shell handles login, push notifications, file download, deep links, and App Store compliance; the storefront itself is a WebView surface served from the web origin.
The web and native code communicate through a defined message protocol. The storefront calls into the shell through a set of named messages — sign-in, sign-out, placing a phone call, handing over the session token — and the shell answers by invoking typed functions back on the page. The token is stored on the native side, in the iOS Keychain, and gets re-injected into the web layer on every page load, so the storefront stays signed in no matter where the user navigates.
Commerce documents coming out of the web layer are intercepted and saved as native downloads, with a toast to say so. A connectivity monitor watches the network and reloads the storefront — token included — the moment a dead connection comes back. Every storefront tab shares a single web process pool, so login state stays coherent across the whole shop. Before requesting push permission, a native screen explains why notifications matter before iOS ever shows its system prompt. I built that screen in SwiftUI within the UIKit app.
The same source ships against several server environments, switched at compile time, so internal testers walk the staging storefront while the App Store build points at production.
