Supporting native iOS product case study

Endless Activity

A tactile activity deck for the moment when someone wants to do something but does not know what to search for. Native, local, deterministic, and deliberately smaller than the obvious roadmap.

Endless Activity Discover deck on iPhone
SwiftUI50 curated activitiesLocal persistenceDeterministic rankingVoiceOver actionsReduce Motion

The product opportunity

Built for the momentbefore search.

Endless Activity app icon

Immediate utility beats onboarding.

The first launch opens on one concrete activity. A user can act, save, skip, or inspect details before learning anything about the system behind it.

Endless Activity detail view with metadata and action steps

A complete loop in five moves.

Open, react, filter, revisit, relaunch. Each move is represented in persistence and covered by a golden-path test.

Restraint is part of the architecture.

No account, location requirement, backend, marketplace, live event feed, or generated activity is needed to prove the idea.

The scope decision that shaped every layer

Engineering decisions

Small surface. Clear boundaries.

Each decision keeps presentation playful while the underlying state remains explicit, testable, and recoverable.

01

The deck owns presentation, not truth.

Save and skip remove cards from the active deck while the bundled catalog remains immutable. Ranking can rebuild the experience without repairing mutated source data.

Catalog loader + pure ranker + presentation state

02

Local state is enough for version one.

Saved IDs, skipped IDs, completed IDs, and practical preferences live in one Codable UserDefaults payload that survives relaunch without an account or sync layer.

Fast, private, offline after install

03

A gesture never becomes a gate.

Right-save and left-skip gestures have visible buttons and named VoiceOver actions. Accessibility-size layouts scroll, while Reduce Motion removes the swipe-off animation.

Equivalent controls + adaptive native behavior

Verification rail

50

A catalog that can be audited

Fifty unique activities follow the locked schema, balanced category targets, concrete step rules, and explicit safety guidance where needed.

Recorded evidence1 / 3

Current product captures

One flow, shown honestly.

Real iPhone 17e simulator captures. No synthetic dashboard, backend state, or unimplemented social behavior is implied.

Endless Activity Discover screen showing a five-sense reset card with Save and Skip controls
Discover starts with a usable suggestion, not onboarding.
Endless Activity detail sheet showing activity metadata and a concrete three-step plan
Details add the practical steps without making the card dense.
Endless Activity Saved screen containing a persisted five-sense reset activity
Saving turns browsing into a short, durable list.
Endless Activity Preferences screen with duration, cost, energy, and setting controls
Filters stay practical: time, cost, energy, setting, company, category.
EvidenceCase-study record

Locally verified

What the work proves.

Help someone move from an unfocused moment of boredom to one realistic activity without requiring a search query, onboarding, account, location permission, or network connection.

Role

  • Independent product direction, native iOS UX, SwiftUI implementation, catalog and ranking architecture, accessibility, testing, and portfolio release preparation

User

  • People between plans or low on ideas who want a fast, private suggestion they can save, skip, filter, and return to later.

Key decisions

  • Opened directly into a tactile card deck and made save and skip available as both gestures and visible controls.
  • Separated the immutable bundled catalog, pure ranking rules, persisted signals, and presentation deck so interaction state never corrupts source data.
  • Used practical constraints and saved-category signals instead of opaque personalization or generated content.
  • Kept the complete version-one loop local and deterministic, with explicit recovery for exhausted decks and destructive history reset.

Verification

  • Fifty bundled activities pass unique ID, unique title, schema, tagging, step-count, and content-quality validation.
  • Twelve unit tests and seven UI tests passed on the iPhone 17e simulator, covering ranking, persistence, swipes, details, filters, Saved, and relaunch state.
  • The large-device build passed on iPhone 17 Pro Max, with recorded checks for accessibility-size text, VoiceOver actions, Reduce Motion, and current presentation captures.

Limitations

  • The latest full simulator verification is dated 28 June 2026; the current audit environment has no full Xcode installation for a fresh rerun.
  • The project is a polished local MVP and portfolio proof point, not an App Store release or evidence of real-world retention or recommendation quality.
  • Accounts, cloud sync, live events, required location, booking, payments, social planning, and AI-generated activities are intentionally outside version one.
MoreEarlier / Archived case studies

Earlier work remains available for context and does not represent my current technical scope.

Supporting work, specific proof

Product judgment that reaches the code.

Endless Activity complements the flagship work with a compact example of native interaction, local architecture, accessibility, and knowing where a version one should stop.