Skip to content
Moein Sadraei

Moein Sadraei

iOS developer · Tehran

PRODUCT. PLATFORM. CRAFT.

Thoughtful apps.
Built to last.

I build for Apple platforms. Considered interfaces, dependable systems, and care for the details that matter.

SwiftSwiftUIUIKitApp Attest
FROM IDEA TO APP STORE
CyloStack running on iPhone
SpriteKit
+ App Attest
SELECTED PROJECT / 01

CyloStack

Thoughtful on the surface. Reliable underneath.SCROLL TO EXPLORE

01 / Selected work

Selected work.
Considered details.

From a game on the App Store to the systems behind a reliable app. Explore the product and the decisions that shaped it.

CyloStack product screenshot
01 / Swift · MIT

iOS Game · On the App Store

CyloStack

A 2.5D neon stacking game for iOS, and a case study in hardware-backed API security.

Behind the build

Time a sliding disc and stack it; miss the centre and the overhang is sliced away. Two coupled difficulty dials produce 25 distinct modes, each keeping its own personal best, with a global leaderboard that weights every setting by how hard it genuinely plays.

A released game where gameplay, configuration, and server trust had to work together.

My role

  • ↳ Product concept & game loop
  • ↳ iOS / SpriteKit implementation
  • ↳ App Attest + Worker boundary
  • ↳ App Store release
SwiftSpriteKitApp AttestCloudflare WorkersiOS 15.6+

MXRAY / PACKET TUNNEL

▣Your app
↔XrayBridge
◌Xray-core
Network Extension
gVisor tun engine
Batched packet I/O
Memory tuning
02 / Swift · Apache-2.0

Swift Package · Apple-platform networking

MXray

A batteries-included Swift package for building Xray-powered VPNs on iOS and macOS.

Behind the build

Building a VPN on Apple platforms normally means gluing together a static Go library, an NEPacketTunnelProvider, a hand-rolled packet bridge, geo-file management and a fragile memory budget — then discovering the Network Extension gets killed under load. MXray packages all of that into one dependency.

Apple-platform networking packaged into something another iOS developer can actually ship.

My role

  • ↳ Package API & architecture
  • ↳ Packet-tunnel bridge
  • ↳ Memory / performance tuning
  • ↳ Developer documentation
Swift 6NetworkExtensionPacket TunnelingSwiftPMiOS 15+ / macOS 12+

APP ATTEST / REQUEST FLOW

○single-use
challenge
→
◇Secure Enclave
key
✓assertion verified
counter advanced
03 / Swift · MIT

Swift Package · Device security

AppAttestClient

Prove your requests come from your real app — with a key that cannot be extracted.

Behind the build

The usual way a server recognises its own app is a secret compiled into the binary, and that does not survive a disassembler. App Attest answers it properly with a key generated inside the Secure Enclave. The flow is fiddly, and this package handles it — including the failure modes that only surface in production.

A difficult Apple security flow turned into a focused, testable Swift package.

My role

  • ↳ Security-flow design
  • ↳ Swift package API
  • ↳ Secure Enclave lifecycle
  • ↳ CI and package documentation
SwiftApp AttestSecure EnclaveDeviceCheckiOS 14+ · macOS 11+ · tvOS · visionOS
ScoreWise product screenshot
04 / Swift · MIT

iOS App · SwiftUI

ScoreWise

A SwiftUI exam-score calculator that handles negative marking and charts progress over time.

Behind the build

Enter the number of correct, incorrect and unanswered questions, choose whether the exam applies a negative penalty, and get a percentage, a plain-language verdict and a chart of how results have moved.

A Persian-first utility that makes a recurring exam calculation clear and usable.

My role

  • ↳ Product idea & interaction design
  • ↳ RTL SwiftUI interface
  • ↳ Score logic & Swift Charts
  • ↳ Preferences and local persistence
SwiftUISwift Charts@AppStorageiOS 17+

02 / What I can help with

iOS work that holds up beyond the happy path.

I can join a product at the interface, architecture, reliability, or release stage—and connect the decisions across those stages.

SwiftUI & UIKit

Build clear, responsive iOS interfaces while choosing the right framework for the product and its deployment target.

Networking & platform systems

Design dependable network behaviour, asynchronous flows, packet tunnels, and the operational details that sit beyond a screen.

Performance & reliability

Find memory pressure, device-only failures, and release risks before they become a user-facing problem.

App Store delivery

Take an iOS product from implementation through TestFlight, App Review, configuration, and a maintainable release path.

03 / Engineering notes

Small details.
Real consequences.

Short notes from the decisions behind the projects—not generic technology claims.

01

Network Extension memory is a hard boundary

For MXray, I treated the extension's memory budget as part of the package design: a tuned Go heap ceiling, batched packet I/O, and a bridge that keeps the packet flow deliberate instead of unbounded.

02

Trust the hardware, not a secret in the app

AppAttestClient is built around Secure Enclave keys, single-use server challenges, and per-request assertions. It also handles the operational edge cases—restores, reinstallations, counter drift, and rejection—not only the happy path.

03

Release control needs a real boundary

CyloStack keeps remote configuration and release gating behind a Cloudflare Worker. Requests are signed and responses encrypted, allowing product changes without treating the app binary as the only control plane.

04 / The journey

A progression through real constraints.

I do not think of these as disconnected repositories. Each project made the next question more interesting: from a clear user problem, to platform reliability, to proof of trust, to a product in people's hands.

01

Start with the person using it

Read the story

ScoreWise began with a familiar problem in Iranian multiple-choice exams: negative marking turns a quick question—“how did I do?”—into repetitive arithmetic. I built the interface around that moment, with a Persian right-to-left experience, two marking schemes, clear feedback, and a score history instead of a bare percentage.

SwiftUI · Swift Charts · RTL interface

02

Learn where the platform pushes back

Read the story

MXray is the result of working beyond a normal app screen. Building an Xray-powered VPN on Apple platforms means dealing with a Packet Tunnel extension, packet flow, geo files, a static Go binary, and memory limits that can kill the extension under load. The challenge was not just making it connect; it was packaging those constraints so another iOS developer does not need to relearn them.

NetworkExtension · gVisor tun · memory tuning

03

Make the safer path the easier path

Read the story

AppAttestClient came from questioning the usual API “secret in the app” approach. A compiled secret can be extracted, so I worked with App Attest, Secure Enclave keys, one-time challenges, assertions, and the production failure cases around registration and key recovery. The output is a small Swift package whose job is to make that correct flow approachable.

App Attest · Secure Enclave · SwiftPM

04

Bring it together in a shipped product

Read the story

CyloStack is where product, platform, and security meet. It is a game that had to be fun on the first tap, reliable across its modes, ready for App Store distribution, and protected at the API boundary. Its configuration and release gating live behind a Cloudflare Worker, while requests are tied back to real app hardware using App Attest.

App Store · Cloudflare Workers · App Attest

Good software earns trust. Every day.

I'm Moein, an iOS developer in Tehran with a computer hardware engineering background. I work with Swift, SwiftUI, UIKit, networking, and application security—usually where the product layer meets the platform underneath it.

More about my approach

That interest comes from paying attention to what users notice only when it goes wrong: an app that stops responding on a bad connection, a VPN extension that disappears under memory pressure, a score calculation that is difficult to trust, or an API that cannot tell a real app from a copied request.

For me, a polished interface is necessary but not sufficient. The better question is whether the product remains clear, quick, and safe when it reaches real devices, real conditions, and a real release process. That is why my work repeatedly returns to reliability, observability, performance limits, and security boundaries.

I share this work publicly because it is the most direct way to show how I think. The repositories include the implementation, the tradeoffs, and the documentation—not just a visual outcome. If you are looking for an iOS developer who cares about both the experience and the system behind it, that is the work I want to do.

06 / Start a conversation

Something in mind?
Let’s build it well.

An iOS product, a platform challenge, or a thoughtful collaboration. I’d like to hear about it.

Let’s talk