Cluckwork is a Mac productivity app that keeps you on track when you're studying, working, or just trying to avoid distractions. Users can specify permitted apps and websites, and the duration that they would like to be productive for (eg. 30 minutes). Cluckwork will keep the user on track by issuing a desktop notification alerting them when they open anti-productive apps or websites.

What it does

Cluckwork works by watching what webpage or native application is currently being used. Cluckwork has two main components: browser extensions and the Mac application. The browser extensions (we support Safari and Chrome) notify the Mac app of what website is currently active. Similarly, the Mac app monitors what application is currently being used. Cluckwork maintains a whitelist (or blacklist if you prefer) of which applications and websites are permitted. If you try to open a distracting website or app, you will receive a notification warning you to switch back to a permitted application or website.

As an added incentive, your goal is to nurture a baby chick throughout your productivity session. Any time you diverge from the permitted applications or websites, your chick's life will be put in danger. If you fail to return to a productive state, the poor chick will die. However, if you make it all the way though your productivity session, your chick will fully come out of his egg and express his gratitude for your dedication to a distraction free work session.

How I built it

For the OS X app, we created a native application using Swift and Cocoa / AppKit. For the browser extensions, we created a Safari and Chrome extension using Javascript and the provided extension APIs. We also used Firebase for near instantaneous communication between the browser extensions and native OS X app.

Challenges we ran into

AppKit's APIs definitely have a more legacy feel than UIKit on iOS. Things that are simple on iOS - like animations - are much more difficult to achieve on the Mac. Despite this, we were able to make our first OS X app look and feel nice to use. While trying to set up native messaging between the Safari Extension and Mac app, we were blocked by a bug in the Safari Extension API. One of the Apple engineers recommended we use Firebase, which turned out to be an amazing and likely better alternative.

Built With

Share this project: