Тренировка NotSoEasy

10 марта 2021 г. – 15 июля 2024 г. 253

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

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

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

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

Стэк

  • MVVM, Clean Architecture. Вью модели на сервис локаторе;
  • стейт менеджмент сначала делал на InheritedWidget, ChangeNotifier и ListenableBuilder. Потом переписал на Bloc;
  • GoRouter -> HyperRouter -> GoRouter;
  • Hive для хранения пользовательских настроек;
  • для форм FocusNode, FormState, FormFieldState и валидаторы;
  • для темы ThemeData, ColorScheme, ThemeExtension и кастомные виджеты;
  • Markdown для текста с сервера;
  • SDK PocketBase;
  • локальные нотификации;
  • Mocktail для тестов.

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

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

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

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

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

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

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

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

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

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

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

dark_min_FwOVLUuGBf.png

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

4_min_ArQrm4QvbW.png
5_min_2VFPX1z96C.png
6_min_MPIS4ZTs79.png
7_min_6wUBMGU03O.png
8_min_Kda8XMOtyj.png
9_min_dVJHmWSwfw.png
Все проекты
Следующий проект Чевостик — развивающая платформа для детей
Чевостик — развивающая платформа для детей