SB/serdar
All projects

Independent · 2021 — Present

Momena

Founder, Designer & Engineer

A privacy-first consumer app I designed, built, and shipped entirely by myself — from Figma to SwiftUI, CloudKit sync, and weekly AI-powered insights — without operating a traditional backend.

SwiftUISwiftDataCloudKitStoreKit 2AES-256LLM
Momena — screenshot

Problem

Most personal data tools ask users to trust a company they'll never meet with their most private information, in exchange for features that could just as easily run on-device — and most also mean standing up and operating a server just to sync data across a person's own devices. I wanted to prove that a small, independent team — one person — could build something people trust with sensitive personal data, without the surveillance-driven business model or backend overhead that usually comes with this category.

Approach

Momena is a privacy-first app built around a simple rule: data stays on the user's device unless encryption makes leaving it safe, and no traditional server ever needs to exist. Core functionality runs on SwiftData for local persistence, with CloudKit handling cross-device sync entirely within Apple's own infrastructure and AES-256/CryptoKit encrypting anything sensitive before it syncs. Weekly AI-powered insights — generated from a carefully scoped, on-device-first prompt — turn a user's own data into something genuinely useful, without retaining conversation history server-side.

Architecture

The app is built in SwiftUI on a SwiftData persistence layer, with CloudKit as the only sync backend — no custom server, no database to operate, no infrastructure to maintain. StoreKit 2 handles subscriptions end-to-end, with entitlement checks that fail toward giving users access rather than locking them out during a network hiccup. WidgetKit and ActivityKit power Home Screen widgets and Live Activities that stay useful without a server pushing updates, and the entire UX was designed in Figma before a line of SwiftUI was written.

Technical Decisions

SwiftData over a custom Core Data stack

SwiftData's schema migrations and Swift-native model definitions let me move faster as a solo developer, at the cost of working around a few early rough edges — a trade I'd make again for a project this size.

CloudKit instead of a custom backend

Standing up and operating a server for a one-person product is a maintenance burden and a privacy liability I didn't want. CloudKit gave me cross-device sync backed by Apple's infrastructure, with no server code of my own that could ever see a user's plaintext data.

LLM features scoped narrowly, by default

Rather than bolting on a general-purpose assistant, I designed each AI-powered feature — including the weekly insights — around a specific, well-understood task, which made it possible to reason about, and explain to users, exactly what data a prompt actually contains.

Challenges

  • Owning the entire product surface — product design, engineering, App Store operations, support, and marketing — without a team to distribute the load across.
  • Designing CloudKit sync and encryption that a non-technical user never has to think about, but that holds up under real scrutiny.
  • Building Widgets and Live Activities that stay accurate and battery-friendly with no server actively pushing state changes.
  • Writing StoreKit 2 entitlement logic that never punishes a paying user for being offline at the wrong moment.

Results

  • Shipped a complete privacy-first product — onboarding, encrypted sync, subscriptions, widgets, and Live Activities — without operating a single backend server.
  • Launched weekly AI-generated insights as a core feature, built on the same narrowly-scoped prompt architecture used across the rest of the app.
  • Runs the entire support, App Store, and release process as a team of one, end to end.

Lessons learned

  • Constraints are a feature: building alone forced ruthless prioritization that the product is better for.
  • Privacy-first isn't a marketing line if it changes real architecture decisions — it has to show up in how data is modeled, not just in a policy page.
  • Shipping the marketing site, documentation, and support flow is as much part of 'the product' as the Swift code.