Case study
Quick facts
- Role: Launch-readiness reviewer, iOS/backend engineer, Stripe and Apple Pay implementer
- Timeframe: February-April 2026
- Platform: Native iOS app plus PHP/CodeIgniter backend
- Status: Public App Store launch completed
- Team: Solo launch engineer working directly with the founder
Context
Blackville is a marketplace for discovering and shopping from Black-owned brands. The product already had an iOS app and backend, but it was not quite ready for real users: category navigation could crash, empty states stayed stuck, unfinished features were still visible, product images were unreliable, and checkout needed a stronger foundation.
I started with a launch-readiness review, then moved into implementation support so the app could go through TestFlight, App Store review, and early customer orders with less risk.
What I changed
- Fixed category and state issues that were causing crashes and stale “Product not found” behavior.
- Hid not-ready beta features so testers saw a focused shopping experience.
- Integrated Firebase Crashlytics for post-launch crash visibility.
- Improved product and store image handling, including products with variants but missing variant-level images.
- Added Sign in with Apple in a tightly coupled legacy auth flow.
- Rebuilt checkout around backend-created Stripe PaymentIntents, Stripe PaymentSheet, Apple Pay, and server-side payment verification.
- Added delivery address selection, order confirmation, order emails, and fulfillment-ready shipping data.
- Improved My Orders and order detail navigation.
- Documented local schema and deployment workflows so backend changes became more reproducible.
Security response
During active development, I discovered a malicious Xcode build phase that had been injected before I joined the project. I removed the injected build phase and settings, explained the risk to the client, recommended rotating project secrets, revoked older TestFlight builds as a precaution, and continued release work from a clean build process.
Specific private indicators and payload details are intentionally excluded here.
Outcome
Blackville reached public App Store release, real orders started coming through the platform, Apple Pay was confirmed working, and the order flow became much more reliable for both customers and fulfillment.
The work turned a fragile inherited marketplace into a safer launchable product with monitoring, a stronger checkout architecture, cleaner order data, and a better path for future iteration.
Technical notes
The iOS app mixed older storyboard MVC with newer programmatic UIKit and MVVM. The backend was a CodeIgniter/PHP application with buyer APIs, vendor/admin panels, MySQL data models, Stripe integration, and email delivery through PHPMailer.
The most important architecture change was moving payment authority to the server. The backend now creates and verifies PaymentIntents instead of trusting client-submitted totals, which reduces payment/order mismatch risk and gives webhook recovery a path if the app fails after payment succeeds.