ROBODORO: time tracker for iOS by red_mad_robot
All about how the red_mad_robot R&D initiative group created a concise and beautiful time management app using Live Activity and Dynamic Island. It is already available for download in the AppStore.
Who is R&D
An initiative group that tracks, researches and tests technology trends, helps project teams, strengthens projects and creates new ones based on fresh platform features.
In the fall of 2022, the R&D team was working through the new iOS 16 features and thinking about how they could be used.
"We decided it was time to learn what Live Activity and Dynamic Island were. And ended up going so deep that we hooked the entire WidgetKit. The first thing we realized on its basis was ROBODORO, an app that would help users test themselves as personal time managers and try the Pomodoro Technique", — Artyom Kovalev, iOS developer at red_mad_robot
A timer based on Pomodoro Technique was not the first idea that the team came up with. The guys were brainstorming and coming up with ideas of what could be displayed on the widget. Among the ideas were:
1. Display the fundraiser for gifts in Live Activity. The widget would show the amount and a progress bar.
2. Track cryptocurrency quotes.
3. Track the status of tasks. A task board hangs on the screen, showing what stage it is at — for example, analytics, waiting for approval, etc.
But the Pomodoro timer seemed to be the most convenient and understandable option with Live Activity. The team decided to make a full-fledged app based on it. After that, Alina Ignatieva began to sketch out the concept of the app.
How we worked and what we got
Designers and developers worked closely together, but first of all they worked on the design concept. It was important to find a balance between ease of implementation and usefulness. So that the functions are sufficient for ease of use, but at the same time the implementation is not very complicated and time-consuming.
"First, Christina and I worked out the UX/UI, and then we called Petya and clarified what the limitations were — what could be done and what could not. We did the same when we had questions about the features of Live Activity and Dynamic Island — we also asked the developers", — Alina Ignatieva. ex-interface designer at red_mad_robot
At first it was a simple timer, consisting of a single screen with a time display and buttons — start, pause, stop.
"But we wanted to make life easier for our colleagues, so we settled on a full-fledged activity tracker, where they could enter their tasks and then accurately record them in Watcher — our local program for working time tracking. And therefore it was necessary to select tasks", — Petya Tartynskikh, iOS developer at red_mad_robot
It was important to make it not too simple, but also not too complicated, so the team was looking for working solutions. For example, this was the case with data storage. Data in ROBODORO is only stored for a week — and that's unusual.
"Of course, it would be great to store all your tasks for all periods, but this would require special filters, and it would require more work in terms of design, UX and development", — Kristina Shirokova, ex-interface designer at red_mad_robot
That's why the app has a warning for the user that the data is only stored for a week:
There's a screen with two indicators:
- average time spent on tasks per week,
- total amount of time at the current moment.
All the timers we looked at as references have a huge complex backend. And we decided to get off easy and display these two widgets — average daily focus and total number of focus minutes. We hope that in the future the statistics module will expand and acquire more informative forms.
Unlike working projects, the color solution for the app was chosen not by thinking out the meaning to the smallest detail, but based on the taste of the designer. The underlays with patterns for distinguishing focus, break and long break were taken from another project where they were not useful.
The work took about two months. At the end of December we agreed on all the layouts, and at the end of January 2023 we rolled out the beta version.
When you launch the app, there is a small onboarding in English, which explains who we are, what we have done and why we have done it.
After onboarding, there are settings for the timer parameters, the number of sessions and the size of "tomatoes". You can also specify the name of the task.
"For example, I enter the name "Making layouts", set the timer, and it shows how long you were focused specifically on this task. And it will be easier to enter this information into Watcher — you can see that you were engaged in a specific project for a whole hour" — Alina Ignatieva, ex-interface designer at red_mad_robot
If you made a mistake or typo in the task name, you can delete it. Deletion occurs not by swiping, as usual, but by tap: there is a special signature for the user about this — it appears when the app is launched for the first time.
While working on the app, we discovered two significant limitations in the interactive operation of widgets. The first was that any button press on Live Activity and Dynamic Island opened the main app. Although Apple's standard timer or player provides for this, at that time we had no way to bypass it. The second limitation is related to changing the state of widgets.
"Changes occur in two cases: either there are signals coming from the main app, which implies that it's active and deployed right now, or there's a special push from the server. Right now we don't have a server side, and the whole point of Activity is that it shows up on a lock screen when iOS pauses signals from active apps. So we had to put up with the fact that when the timer in Activity reaches zero, the background color doesn't automatically change in any way", — Petya Tartynskikh, iOS developer at red_mad_robot
Probably in the future we will add features to update Live Activity and Dynamic Island states.
The timer works in minimized mode, and the remaining time is displayed in Live Activity and Dynamic Island. There are interactive buttons that pause it.
When the timer reaches zero, the phone beeps and vibrates — this is optional and can be turned off.
What's next
In mid-January 2024, we rolled out the app to the AppStore. Everyone is happy with both the process and the result. Typically, projects have many restrictions, but the R&D team’s tasks require complete freedom of action, enthusiasm and inspiration.
There is a small backlog of tasks that we plan to implement. For example, we plan to make it possible to plunge into a task card or start those tasks that have already been started. And make a separate statistics module — by day and week. And there is also an idea to make a whole set of mini-apps from red_mad_robot and post them in a hub — stay tuned for updates.
What’s a Rich Text element?
The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.
Static and dynamic content editing
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!
How to customize formatting for each rich text
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
- иждлжтджт
-