Inspiration
Actually I've got inspired by two things:
- A German podcast I've listened to mentioned existing apps to block other apps. I got curious and checked them out. However, I quickly got lost and found the UI overwhelming.
- I've always wanted to strictly block my work related apps on my phone to calm down during the weekend and vacations. I've always had the urge to quickly check in what my teammates do and if there is something urgent where I could help out.
What it does
Otium allows you to select apps on your iPhone which you want to either block right now for a certain period or on a recurring schedule (e.g. each weekend) with the option for two "protection modes":
Loose: just adds a short but increasing delay before you can access the blocked app. This prevents unconscious use because you have time to reflect for a couple of seconds on the action.
Strict: the selected apps are blocked. There is no way to access them before the set timeframe is over.
How we built it
I've started prototyping already some months ago but then need to pause since I had to wait several weeks for the Family Controls Entitlement. I've iterated multiple times over the UI and early involved some friends via TestFlight to get feedback in order to make it as easy as possible. The underlying main technologies are Swift and SwiftUI + TCA. Writing the UI in SwiftUI was such a breeze since it allowed me to quickly prototype stuff in the beginning while trying out the Family Controls API.
Challenges we ran into
The underwhelming documentation of the Family Controls API. Did you know that there is even a Discord Server just for discussing the broken / unexpected behavior of it? I've struggled multiple days to communicate between the extensions and the main app since some of the needed extensions are heavily sandboxed, i.e. read-only disk access.
Accomplishments that we're proud of
To be honest to actually publish the app to the App Store. I've worked on another "side-project" before in parallel to my regular job but in the end was just too afraid to actually release it or even show it to other people. The same happened in between for Otium as well where I just postponed the work because the remaining stuff got less and less and the potential release came closer and closer. After I read about the Ship-a-Ton on Twitter during my vacation I've finally decided to just get things done.
What we learned
That releasing an app you built is actually quite cool. Also this was the first time where I've touched the Family Controls API.
I've also learned to properly use Figma and not just consume finished designs there as I'm used to during work. It helped me a lot to think more creatively since I was not busy building stuff with SwiftUI as I did it initially.
I also should've planned in more time for marketing assets since making nice videos takes a really long time.
What's next for Otium
I want to add a third mode which lets you customize a lot! You can for example block apps until you reached a certain daily health goal like n steps.
Additionally I've already started working on a Live Activity which shows the user the current active rule or pause from the rule.
I've also plan to spend multiple hours per week for marketing the app. I want to try out TikTok videos for it since it has so many different use cases which can be promoted separately one by one.
Built With
- grdb
- swift
- swiftui
- tca
Log in or sign up for Devpost to join the conversation.