Надоели онлайн-тренировки в мессенджере, и я написал свое удобное приложение — оно пока бесплатно

Оленка Пилипчак

Highload продолжает публиковать истории о pet-проектах, вошедших в топ-20 лучших по итогам голосования наших читателей. Параллельно эти проекты оценивает жюри из опытных разработчиков и инвесторов. Победителей конкурса мы планируем объявить 10 июля.

Лучшие проекты получат призы от компании Genesis: занявший первое место — Apple iPhone 12 64GB, второе место — наушники Marshall Monitor II ANC Black, третье — набор Arduino.

Дальше — рассказ разработчика Игоря Филиппова о его pet-проекте — приложении для коммуникации с онлайн-тренером Train Me.

Идея

Игорь Филиппов — разработчик приложения Train Me

Раньше я занимался с тренером онлайн — он присылал мне тренировки в мессенджер. В этот момент я задумался, насколько такой вариант неэффективен для обеих сторон. 

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

Следить за прогрессом веса или объемов тела вообще практически невозможно, особенно на длительном отрезке времени.

Мой проект призван упростить коммуникацию между тренером и его подопечными и дать возможность следить за прогрессом веса и объемов тела для обеих сторон.

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

Также тренер может добавить собственное видео выполнения каждого упражнения. С одной стороны, это необходимо для того, чтобы не было нужды объяснять технику выполнения, с другой — для более эксклюзивной подачи материала.

Приложение Train Me удобно и для тренера, и для подопечного

Реализация и технологии

Об этапе планирования рассказать сложно — я просто начал делать. Единственное, что могу отметить: вначале использовался бекенд на Elixir (Phoenix Framework), но потом я заменил его на NestJS в связи с тем, что слишком много времени тратилось на освоение незнакомой экосистемы и подходов. Тогда как JavaScript куда проще и понятнее, и можно было сосредоточиться на реализации функциональности приложения.

Клиент:

  • TypeScript — благодаря типизации (хотя она только в компайл-тайме) можно тратить меньше когнитивных усилий на код и больше — на реализацию идей.
  • Svelte — выбирал из того, что уже умею. Angular мне показался чересчур тяжелым, а со Svelte можно довольно просто и быстро строить нужные интерфейсы, имея при этом минимальный JS-бандл. В будущем планирую добавить код-сплиттинг, чтобы еще больше снизить нагрузку на пользователя.
  • PWA —  чтобы пользователи могли установить приложение на телефон и использовать почти как нативное.

Сервер:

  • NestJS — во-первых, TypeScript — «из коробки», а типизация для бэкенда очень важна. Во-вторых, «умные дяди» уже все собрали за тебя, остается только внимательно читать документацию и делать фичи. Тогда как при обычном подходе, через express и дополнительные библиотеки, приходится собирать свой собственный фреймворк прямо на месте.
  • PostgreSQL — реляционная база данных, у которой хорошая поддержка в Node.js-экосистеме.
  • AWS S3 и CloudFront — для загрузки и раздачи картинок и видео.
  • Heroku — хостинг с удобным процессом деплоя и настройки.

В инди-хакинге предпочитаю решать проблемы по ходу их возникновения. Поэтому фронтенд, который не имеет SSR и не требует собственного веб-сервера, просто раздается через NestJS, который  проксируется через cowboy, который, в свою очередь, использует Heroku.

В проекте на данный момент задействован только один человек — это я.

Возможно, именно поэтому выбор технологий обусловлен практичностью применения сразу. Все это время я работал в JavaRush — сервисе для обучения людей Java. Проектом занимался уже в свободное время.

Основные трудности были связаны с тем, что изначально я фронтенд-разработчик, и приходилось на ходу разбираться с различными концепциями работы на бэкенде (аутентификация, миграции баз данных, загрузка и раздача картинок и видео, реализация связей между юзерами) и при деплое (работа с хостингом, собственный домен и так далее).

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

В какой стадии проект

В принципе, основная функциональность, которую я задумывал, уже реализована. Так что можно сказать, что проект готов примерно на 80% (с учетом того, что есть новые идеи и баги).

Можно заходить и пользоваться: https://train-me.cc/

Планирую в будущем покрыть весь проект автотестами, скорее всего, на Cypress.js.

Раскруткой проекта хочу активно заниматься, когда сделаю мобильные клиенты под iOS и Android (сейчас — в процессе).

Приложение Train Me поможет комфортно проводить тренировки онлайн

Монетизация

Бизнес-составляющая проекта планируется следующим образом:

  • В проекте возможно зарегистрироваться только как тренер. Далее тренер присылает ссылки-приглашения своим подопечным, по которым они регистрируются как его подопечные. Другие тренеры их не видят.
  • В данный момент приложение бесплатное полностью для всех. Я планирую набрать первую волну пользователей, проверить проект под минимальной нагрузкой и проработать возможные неучтенные кейсы и баги.
  • Далее этап монетизации: ввести подписку для подопечных и оставить продукт бесплатным для тренеров.
  • Смысл в том, что привлекая одного бесплатного юзера-тренера, можно было привлечь неограниченное количество платных юзеров-подопечных.

Честно говоря, не знаю, насколько эта модель работоспособна. Никаких объективных фактов и метрик она под собой не имеет. Но интересно проверить!

Как будут оценивать проект

В рамках конкурса pet-проектов разработчики и инвесторы оценят проект Creatly по таким критериям:

1. Оригинальность идеи.

2. Качество кода.

3. Технический уровень.

4. Жизнеспособность идеи.

5. Перспективы проекта как бизнеса.

6. Инвестиционная привлекательность.

Победителей среди 20 кейсов определят на основе оценок инвесторов (45%), разработчиков (45%) и голосов читателей Highload (10%).

Более подробно, кто и как будет оценивать кейсы, можно прочитать здесь: статья об экспертах, критериях и правилах конкурса

Проект Train Me оценивают:

Дмитрий Грищенко

Full-stack Software Engineer (JavaScript, TypeScript), Innovecs.

Оценивает проекты по Frontend JavaScript и TypeScript. Его коммерческий опыт с JavaScript – около пяти лет. Начинал как фронтенд-девелопер, со временем освоил Node.js и таким образом перешел на full-stack.

Виталий Пономаренко

Lead Software Developer, Uklon.

Инженер-программист с 16-летним опытом разработки программных решений разной степени сложности. За плечами — 8 лет разработки и развертывания embedded systems, CRM и сопутствующих модулей. А последние 8 лет занимается разработкой и внедрением веб-сервисов.

Елена Мажуга

Старший инвестиционный аналитик Genesis Investments.

Роман Бабицкий

Основатель инвесткомпании Babitskyi Investment, глава совета по вопросам иностранных инвестиций и экономического развития Украины.

Дмитрий Томчук

Основатель инвестиционного фонда Fison.

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023