A lightweight iOS app for creating passport and visa photos. Users select a country preset (or custom size), align their photo using a visual guide, and export a submission-ready image with correct dimensions and DPI.
Overview
Visa Photo is a lightweight iOS app for creating passport and visa photos in common consulate-friendly sizes. It was the first fully branded app built on top of my shared iOS template and backend, used to validate the end-to-end app factory workflow (manifest + overlay + automated builds).
The core user flow is intentionally minimal: capture or upload a photo, choose a preset (visa/passport) or enter a custom size, align the face using a cropping guide with zoom/drag controls, and export the final image at the target dimensions.
Built with
Idea:
I talked through the concept and scope with ChatGPT, focusing on a minimal, offline-first photo utility and avoiding upsell-heavy flows common in similar apps.
Graphic Design:
I used ChatGPT to keep branding intentionally minimal and consistent with the shared template’s theming system (manifest-driven colors and a small set of assets).
Architecture Design:
Inherited directly from the shared App Platform. The app is implemented as a brand overlay on top of the existing SwiftUI template, reusing the platform’s navigation shell, configuration model, and backend integration without redesigning architecture.
Requirements:
I used ChatGPT to define a tight requirements set: a small preset library (mm + DPI), a custom size option, an alignment guide with zoom/drag controls, deterministic exports, and an offline-friendly experience.
Development:
I used the VS Code + OpenAI Codex extension (GPT-5) to implement the full photo workflow end to end, including the step-based UI, crop/zoom/drag behavior, export pipeline, and integration as a brand repo (manifest + overlay).
Testing:
I used the VS Code + OpenAI Codex extension (GPT-5) to iteratively run the app, validate edge cases, and fix issues discovered during end-to-end flow testing (capture/import → crop → export → save).
Deployment:
Deployment is provided by the shared App Platform. The app is built by applying its manifest and overlay to the template and running the platform’s reusable CI workflow to produce a signed artifact for TestFlight or App Store submission.
AI inside
None. The app is intentionally non-AI and focused on deterministic photo sizing and cropping.
As a follow-up experiment, I plan to explore building an Android version of this app using Lovable, applying the same product requirements and flow to compare workflows and outcomes across platforms.