POMPKINS Food iOS

Native iOS food ordering app built with SwiftUI and Clean Architecture — featuring real-time order tracking via SSE, Live Activity Widget for Dynamic Island and lock screen, PompkinsShorts short-video feed, and an AI chatbot.

Sole iOS DeveloperProfessional WorkIn Production
swiftswiftuifirebasegoogle-mapsalamofirelottiewidgetkit
15+
Feature Modules
4
Auth Methods
5
Cache Policies
Published
App Store

View on App Store →

My Role

Sole iOS developer — designed and built the entire native app from scratch. The app is the consumer-facing mobile client for the POMPKINS food ordering platform, published on the App Store and handling the full ordering lifecycle from discovery to delivery.

What I Built

  • Home & discovery — merchant feed with categories, spotlight sections, and nearby merchant map (Google Maps)
  • Ordering flow — merchant detail, menu browsing with item options, cart management, checkout, and Reservepay payment integration
  • Real-time order tracking — live status updates via SSE with automatic reconnection and exponential backoff
  • Live Activity Widget — order status on the Dynamic Island and lock screen throughout the delivery lifecycle
  • Multi-auth — OTP (phone + SMS), LINE, Google, and Apple Sign In
  • PompkinsShorts — short vertical video feed (TikTok-style) embedded in the food discovery experience
  • Pomp Pomp chatbot — in-app AI assistant for order help and FAQs
  • Address management — saved addresses with Google Maps location picker
  • User features — order history with pagination, favorites, reviews, notifications inbox, profile

Technical Highlights

  • Clean Architecture + MVVM — features organized into domain modules with protocol-based repositories; @MainActor ViewModels with @EnvironmentObject injection for app-wide state (location, address, session)
  • SSE real-time trackingSSEManager with automatic reconnection and exponential backoff; properly tears down connections during app lifecycle transitions
  • Live Activity Widget — WidgetKit integration for Dynamic Island and lock screen order tracking, updating through each delivery stage
  • Multi-level API cache — five cache policies (cacheFirst, networkFirst, cacheOnly, networkOnly, networkAndCache) with memory + 7-day disk cache; CachedAsyncImage for image caching throughout
  • Auth interceptorAuthIntercepter automatically refreshes expired JWT tokens on 401 responses, transparent to the rest of the app
  • Secure storage — all tokens and sensitive data stored in Keychain via KeychainService; CryptoService encrypts sensitive API payloads; certificate pinning in production

Screenshots

Home feed and merchant discovery

Home

Merchant detail and menu

Merchant & Menu

Checkout flow

Checkout

Real-time order status

Order Status

Live Activity Widget on Dynamic Island and lock screen

Live Activity Widget

PompkinsShorts short video feed

PompkinsShorts

Pomp Pomp AI chatbot

Pomp Pomp Chatbot