Mini Pomodoro Timer app designed for the  Watch. Written in Swift.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
Cherry WatchKit App Updated to compile under xcode6.3 Apr 9, 2015
Cherry WatchKit Extension
Cherry.xcodeproj double checked appID and app group ID used for storing the coredata a… Mar 3, 2015
Cherry Updated to compile under xcode6.3 Apr 9, 2015
CherryTests Initial check in Feb 25, 2015
Resources/provisioning_profiles sharing my provisioning profiles Mar 3, 2015
.gitignore added back shared settings bundle Feb 25, 2015
Cherry-storyboard.png storyboard screenshot Feb 26, 2015
LICENSE Initial commit Feb 25, 2015
cherry-screencaps.gif added screen caps Feb 26, 2015
screenshot_2.png screenshots Feb 26, 2015
screenshot_3.png screenshots Feb 26, 2015
screenshot_4.png screenshots Feb 26, 2015


Cherry is a miniscule Pomodoro Timer app designed for the  Watch. It started off as KTPomodoro but I decided to re-start the project in Swift once I had a firmer grasp of WatchKit's APIs and limitations. There is a Storyboard which is the Watchkit app, and a set of Interface Controllers that contain the logic.




  • Add new Activity right from the watch.
  • Start/Stop Activity.
  • Persisting of Activities data in CoreData: shared in App Container between App Extension and App.
  • Provides Glances that show thew status of an in-progress activity.
  • Jump straight to the WatchApp by tapping on the Glances.

##How to build with app container support

  1. Select the Cherry project in the Xcode project navigator
  2. Update all three targets below to use your own Team:
    • Cherry - the Cherry app for iOS
    • Cherry WatchKit Extension - the WatchKit extension for Apple Watch
    • Cherry WatchKit App - the WatchKit app for Apple Watch
  3. Now switch to Cherry target and select the Capabilities tab. Enable App Groups by flicking the switch to On.
    Make sure the App Groups section is expanded, and tap the + button to add a new group.
    Name it group.<YOUR_DOMAIN>.<GROUP_NAME>. ex:
    then slelect the group you just created.
  4. Next, enable app groups by repeating the same steps for the Cherry WatchKit Extension target. This time, all you have to do is select the App Group you just created.
  5. Update the Bundle Identifier of all three targets, such as:
    • Cherry - com.somegroup.KTPomodoro
    • Cherry WatchKit Extension - com.somegroup.KTPomodoro.watchkit
    • Cherry WatchKit App - com.somegroup.KTPomodoro
      Then tap "Fix Issue" to let Xcode help you!
  6. Update KTCoreDataStack.swift & KTSharedUserDefaults.swift,
    set shouldUseAppGroupsForStorage to true, then use App Group ID you created.
  7. Update KTWatchActivitiesListInterfaceController.swift, replace com.corgitoergosum.KTPomodoro.select_activity to your own Bundle Identifier, ex: com.somegroup.KTPomodoro.select_activity
  8. Select WatchKit Extension's info.plist, then change NSExtension/NSExtensionAttributes/WKAppBundleIdentifier to Cherry WatchKit App's Bundle Identifier.
  9. Select Product -> Clean, then change Schema to Cherry Watchkit App and you are ready to run!


  • Fix WKInterfaceTable issue when beta 6 is released.
  • Allowing selection of theme colors.
  • Add sending of notifications on Pomo end and Activity End.
  • Test Notifications on a real device? (As of Xcode6.2beta5, Watch simulator does not support receiving local notifications)
  • Make Breaks between pomodoros optional.
  • Make interruptions useful.
  • Build an app component.

##License Cherry is available under the MIT license.

##Feedback File an issue or pull request. Or ping me at @kenshin03.