Profile
In numbers
- App Store releases shipped
- 20+
- XCTest unit tests, written from zero
- 465+
- SwiftLint violations in strict mode, 500+ files
- 0
Case study · BuyBuddy
Rebuilding a production iOS app in SwiftUI
BuyBuddy's staff app pairs, arms and disarms retail security tags over NFC and Bluetooth LE. The existing app was a large UIKit/VIPER codebase. I rebuilt it from scratch in SwiftUI with MVVM.
17
feature modules
On top of 3 independent Swift Packages: design system, networking and hardware.
465+
XCTest unit tests
A test suite that grew from zero.
0
SwiftLint violations
Strict mode, as the codebase grew past 500 files.
1
command
verify.shruns the simulator build, the device build, all tests and lint, and stops at the first failure.
The old code is the real spec
The written spec was wrong in several places: endpoints that did not exist, commands that worked differently, a feature that was not what its name said. So every feature started by reading the old app and its SDK and writing down what they actually did. The Bluetooth and NFC protocol was checked byte by byte against the old SDK.
Pipeline
How I work
I use AI coding agents (Claude Code, Codex) every day. Their code is only as good as the checks around it, so most of my effort goes into those checks.
Split the work
Every feature is a written spec with a clear definition of done.
Read the old code first
Find out what the system really does, not what the document says.
Agents implement, I own
Agents write code in isolated branches. Architecture, integration and review stay with me.
One gate
verify.shmust pass: simulator build, device build, tests, strict lint.Use the app
Drive the running app in the simulator, then test on a real device.
Log decisions
Every product decision made without the product owner goes into a log for review.
The Gate
Why the device build is part of the gate
One feature passed every check: build, 141 tests, lint. On my phone, it did not compile.
The camera code was inside #if !targetEnvironment(simulator), so the simulator build never compiled it at all. Every check had passed over code that was never type-checked.
I added a device build to verify.sh, then tested the gate itself: I reverted the fix, and the simulator build stayed green while the device build failed. The blind spot was real, and now it is closed.
./verify.sh with the fix reverted
Simulator build passed
Device build failed
Defects
Bugs the green checks missed
42 defects documented across 10 development cycles. A defect is counted only if it was found after build, tests and lint were already green. Some examples:
- #1Delete account asked the user to type "SİL". Uppercasing produced a dotless "I" instead of the Turkish "İ", so the button never enabled.
- #2Tag IDs were lowercased before being sent to the server. Against the real backend, every nearby tag would have looked like an unknown product.
- #3A failed Bluetooth pairing showed every step as completed.
- #4Retry after a network error sent the user back to write to a tag that was already disarmed.
What I do not delegate: architecture, protocol verification and product decisions.
History
Experience
Sep 2024 – Present
iOS Developer · BuyBuddy
- Rebuilt the staff iOS app from scratch in SwiftUI/MVVM (see above).
- Developed and maintained features across nearly all modules of a production VIPER/UIKit app, with REST APIs and third-party SDKs.
- Shipped and maintained 20+ App Store releases.
Jan 2024 – Sep 2024
Software Developer · WediaCorp
- Built a Google index-control automation system in Go with MySQL and a scraping API; about 5x faster processing through concurrency.
- Delivered end-to-end web features across backend (Go, PHP, MySQL) and frontend (Vue.js).
Nov 2023 – Dec 2023
iOS Developer Intern · BuyBuddy
- Built screens, reusable UI components and REST API data flows in Swift/UIKit with MVVM.
Jul 2022 – Aug 2022
iOS Developer Intern · Mobillium
- Mentor-guided iOS program (Swift, UIKit, MVVM); built a note-taking app.
Skills
- Swift
- SwiftUI
- UIKit
- MVVM
- VIPER
- Swift Package Manager
- XCTest
- SwiftLint
- REST APIs
- Git
- CI/CD
- App Store Connect
- TestFlight
- Claude Code
- Codex
- Go
- PHP
- MySQL
- Vue.js
- Node.js
Education
B.Sc. Computer Engineering
Istanbul University-Cerrahpaşa · 2023
Ship
Build succeeded.
Open to new roles: remote or on-site.