Тренировка NotSoEasy

10 марта 2021 г. – 20 мая 2024 г. 117

Немного истории соло-девелопера

Идея приложения зародилась после того, как я растерял все свои заметки по тренировкам, которые вручную заполнял пару лет.

Первый прототип быстро собрал в Godot. Потом начал писать бэк на Go (классный язык, кстати). Написал api сервер, отдельный сервер под админку, саму админку тоже написал. И уже начал было прикручивать еще один сервер аутентификации, но наткнулся на PocketBase и завернул все свои самописные сервера. Зато укрепил знания по бэкенду, изучил Go и Docker, в общем не зря потратил время 🥲.

Само приложение решил писать на Flutter потому что планировал кроссплатформ. Сделал два захода, не понравилось и решил писать нативно на Swift (классный язык, кстати). Написал MVP и решил сделать еще один заход на Flutter. С третьего раза распробовал и все пошло как по маслу.

Техническое описание

Писал на MVVM, архитектурно получилось чисто и масштабируемо — очень легко добавить новые экраны. DRY, KISS, SOLID и другие модные слова. Для стейт менеджмента использовал только InheritedWidget, ChangeNotifier и ListenableBuilder. Для вью моделей написал провайдер на дженериках, резолверы на миксинах, а для моделей компараторы и дата провайдер. Для роутера делегаты. Для форм FocusNode, FormState, FormFieldState и валидаторы. Для темы ThemeData, ColorScheme, ThemeExtension и кастомил некоторые виджеты. SDK PocketBase. Локальные нотификации.

Бэкенд сделал на PocketBase с написанием некоторых кастомных эндпоинтов api на Go и SQL. Всю бизнес логику старался оставить на бэке, фронт в основном просто отрисовывает json.

Нарисовал логотип и иллюстрации, написал весь текст, задизайнил UI, подготовил ASO и залил в сторы.

Функционал на момент написания (версия 1.3.5):

  • регистрация/аутентификация как по почте так и с помощью OAuth провайдеров, восстановление пароля
  • лента тренировок с деталями прошлых тренировок
  • гибкое выполнение тренировки с удобными инпутами
  • информация с техникой выполнения
  • список программ, плюс предустановленные шаблоны
  • гибкая настройка программы
  • изменение уровня и других пользовательских данных
  • настройка нотификаций и времени отдыха
  • документы и обратная связь

Так как делал для себя, то догфудил приложение. Постоянно вношу правки, добавляю новые фичи и итерирую дизайн. Планирую добавить статистику, лидерборд, сконнектить пользователей и премиум фичи.

Дизайн и Приложения

Дмитрий Поярков

Дмитрий Поярков

UI дизайнер, UX дизайнер, Бэк-энд, Графический дизайнер, Иллюстратор и Фронт-энд

Тренировка NotSoEasy
1_min_gOMI9pmDhc.png
light_min_cYALTAzlae.png

Цветовая схема для светлой темы

dark_min_FwOVLUuGBf.png

Цветовая схема для темной темы

3_min_NB6OTXmUYM.png
5_min_Aghq1dF4p6.png

До и после тренировки

6_min_JLGwNA4nyd.png

Упражнения и подходы можно выполнять в любом порядке

7_min_akUsUDpXbM.png

Комфортные инпуты

8_min_NPTYNTM6aT.png

Детальное описание техники выполнения с наглядными иллюстрациями

9_min_xf2cAT9ICa.png

Программы можно создавать самому или просто скопировать один из шаблонов

10_min_wqIUQMZpOT.png

Расписание очень гибко настраивается под себя

Все проекты
Следующий проект Чевостик — развивающая платформа для детей
Чевостик — развивающая платформа для детей