The post has been translated automatically. Original language: Russian
Shred Labs is a Los Angeles—based startup founded in 2018 by two personal trainers. Charlie Hale and Adam Summer wanted to develop online fitness, so they launched a mobile app with workout recordings for classes at home and in the gym.
At the start, the client's company focused on developing an iOS app. The startup proved successful and attracted about two million users. Two years later, the company decided to launch an Android app to reach users of another platform.
The Android team at Shred initially consisted of three people, as did the iOS team. For various reasons, Android developers took turns leaving for other companies, and eventually there were no Android experts left at Shred. At the same time, the Android app was still lagging behind the iOS version in terms of functionality. For example, only one type of training was available instead of three. The client turned to Resolventa as a trusted partner with a request to promptly take up the development of the application.
Together with the client, we formulated exactly what tasks need to be solved when developing an Android application.:
- to catch up with the functionality of the iOS app, first of all, add video classes and various programs based on them;
- to ensure the release of new functionality simultaneously with iOS;
- if possible, update and refine the legacy code.
Resolventa provided an experienced Kotlin developer who took over all the tasks of the Android team. He understood the existing code without help, since by that time there were no Android specialists left at Shred. There was no one to clarify how the already implemented functionality works. In addition, there was a lack of detail and decomposition of tasks. Because of this, the client often did not understand what the development team was doing and why. Due to the lack of communication, the entire project suffered. We have set up processes, worked through documentation and detailed tasks, which made development more transparent, faster and more convenient for the client.
In addition, the application was built on the basis of two architectural approaches at once. Some of the old code was written using Android View, and the other part was written using Jetpack Compose. Back then, it was a rapidly gaining popularity framework, the most modern development tool for Android. When Resolventa joined the project, it was logical to write new functions immediately on Jetpack Compose, and to update legacy as necessary and gradually rewrite it to a new style.
Our developer took care of the missing features of the application. The fact that we were already developing a backend for Shred helped speed up the work. If there were difficulties, colleagues from the PHP team suggested how the backend works and how exactly the iOS version interacts with it. Back then, an Android developer used a similar solution. Some functions could not be adapted for various reasons, for example, due to errors in the documentation or features of the solution on iOS. Sometimes it was easier to tweak the backend code than to try to adapt the Android version to an existing API.
It was the well-established communication between the teams that made it possible to catch up with the iOS version very quickly and maintain a high pace of development.
First, we added a second type of training to the app: a video session with a trainer (Classes). Most of the recordings were prepared by professional fitness trainers, but users can also upload their own videos to the app.

Classes differ from regular workouts in that you can start an online broadcast and practice at the same time with other users, or record and share the video later. This is a free and largely key functionality that has long been available only to users of the iOS version. It increases interest and trust in the product, as it turns an ordinary fitness app into a real social network.
Many users are interested to see how friends or strangers train. In the app, you can mark entries, search for like-minded people, train together, and compare results. You can also share your progress and send workout recordings to Facebook via your Google account.

After that, a third type of workout appeared in the Android application: full-fledged programs made up of several Classes from professional fitness trainers.

A new feature that has appeared simultaneously on iOS and Android is the calculation of the load on a muscle group and a board of leaders on this indicator for each type of training. This functionality is available to users by subscription, it arouses interest and desire to train more often.

We have also completely redesigned the interface of the main screen, making it more convenient and understandable for users. Finally, we rewrote part of the application to integrate the latest version of the Google payment system.

At the start, more than 70% of the application was written using Android view. Currently, the old architecture occupies no more than 15%, and all new functions are implemented on Jetpack Compose.
Over the past year, we have caught up with the functionality of the iOS app, and with the help of a single developer. He put the development processes in order, added to the Android application the most important functionality that had previously been available only on iOS — the ability to study online (Classes) and share successes with friends.
Currently, the Android application is not inferior to iOS in terms of development speed, and all new features appear simultaneously on both platforms.
Kotlin, Android SDK, Dagger/Hilt, Room, MVI, Jetpack Compose, Android View, Coil, Retrofit, okHttp3
Shred Labs — стартап из Лос-Анджелеса, созданный в 2018 году двумя персональными тренерами. Чарли Хейл и Адам Саммер хотели развивать онлайн-фитнес, поэтому запустили мобильное приложение с записями тренировок для занятий дома и в тренажерном зале.
На старте компания клиента сосредоточилась на разработке iOS-приложения. Стартап оказался успешным и привлек около двух миллионов пользователей. Через два года компания решила запустить приложение на Android, чтобы охватить пользователей другой платформы.
Команда Android в Shred поначалу состояла из трех человек, так же как и команда iOS. По разным причинам Android разработчики поочередно уходили в другие компании и со временем Android-экспертов в Shred не осталось. При этом по функционалу Android-приложение все еще отставало от iOS-версии. Например, был доступен только один вид тренировок вместо трех. Клиент обратился к Resolventa как к проверенному партнеру с просьбой оперативно подхватить разработку приложения.
Вместе с клиентом мы сформулировали, какие именно задачи нужно решить при разработке Android-приложения:
- догнать по функционалу iOS-приложение, в первую очередь добавить видео-классы (Classes) и различные программы на их основе;
- обеспечить выпуск новой функциональности одновременно с iOS;
- по возможности обновить и доработать legacy-код.
Resolventa предоставила опытного Kotlin-разработчика, который взял на себя все задачи Android-команды. Он разбирался в существующем коде без помощи, так как к этому времени в Shred не осталось специалистов по Android. Уточнить, как работает уже реализованная функциональность, было не у кого. К тому же, не хватало детализации и декомпозиции задач. Из-за этого клиент часто не понимал, чем и для чего занимается команда разработки. Из-за недостаточной коммуникации страдал весь проект. Мы наладили процессы, проработали документацию и детализировали задачи, что сделало разработку более прозрачной, быстрой и удобной для клиента.
Кроме того, приложение строилось на базе сразу двух архитектурных подходов. Часть старого кода была написана с использованием Android View, а другая часть — на Jetpack Compose. Тогда это был быстро набирающий популярность фреймворк, наиболее современный инструмент разработки под Android. Когда Resolventa подключилась к проекту, логично было новые функции писать сразу на Jetpack Compose, а legacy обновлять по необходимости и постепенно переписывать его на новый стиль.
Наш разработчик занялся недостающими возможностями приложения. Ускорить работу помогло то, что мы уже разрабатывали бэкенд для Shred. Если возникали сложности, коллеги из команды PHP подсказывали, как работает бэкенд и как именно с ним взаимодействует iOS-версия. Тогда Android-разработчик использовал аналогичное решение. Некоторые функции невозможно было адаптировать по разным причинам, например, из-за ошибок в документации или особенностей решения на iOS. Иногда проще было подправить код бэкенда, чем пытаться подстроить Android-версию под уже существующий API.
Именно налаженная коммуникация между командами позволила очень быстро догнать iOS-версию и удерживать высокий темп разработки.
Вначале мы добавили в приложение второй тип тренировок: видео-занятие с тренером (Classes). Основную часть записей подготовили профессиональные фитнес-тренеры, но кроме того пользователи могут загрузить в приложение собственные видео.

Classes отличаются от обычных тренировок тем, что можно запустить онлайн-трансляцию и заниматься одновременно с другими пользователями, или сделать запись и поделиться роликом позже. Это бесплатная и во многом ключевая функциональность, которая долгое время была доступна только пользователям iOS-версии. Она повышает интерес и доверие к продукту, поскольку превращает обычное фитнес-приложение в настоящую социальную сеть.
Многим пользователям интересно посмотреть, как тренируются друзья или незнакомые люди. В приложении можно отмечать записи, искать единомышленников, тренироваться вместе и сравнивать результаты. Также можно поделиться успехами и отправить записи тренировок на Facebook через аккаунт Google.

После этого в Android-приложении появился и третий тип тренировок: полноценные программы, составленные из нескольких занятий типа Classes от профессиональных фитнес-тренеров.

Новая возможность, которая появилась одновременно на iOS и Android, — подсчет нагрузки по группе мышц и доска лидеров по этому показателю для каждого вида тренировок. Эта функциональность доступна пользователям по подписке, вызывает интерес и желание тренироваться чаще

Еще мы полностью переработали интерфейс главного экрана, сделали его удобнее и понятнее для пользователей. Наконец, переписали часть приложения, чтобы интегрировать свежую версию системы оплаты от Google.

На старте больше 70% приложения было написано с использованием Android view. Сейчас старая архитектура занимает не более 15%, а все новые функции реализованы на Jetpack Compose.
За год мы догнали по функционалу iOS-приложение, причем силами одного разработчика. Он привел в порядок процессы разработки, добавил в приложение на Android важнейшую функциональность, которая до этого была только на iOS — возможность заниматься онлайн (Classes) и делиться успехами с друзьями.
Сейчас по скорости разработки Android-приложение не уступает iOS, а все новые возможности появляются одновременно на обеих платформах.
Kotlin, Android SDK, Dagger/Hilt, Room, MVI, Jetpack Compose, Android View, Coil, Retrofit, okHttp3