Skip to content

Conversation

@elukashova
Copy link
Owner

@elukashova elukashova commented Feb 27, 2023

  1. Task: https://github.com/rolling-scopes-school/tasks/blob/master/tasks/rsclone/rsclone.md
  2. Screenshot:
    Screenshot 2023-02-27 alle 19 35 07
  3. Deploy: https://the-big-bug-theory.onrender.com
  4. Done 27.02.2023 / deadline 28.02.2023
  5. Score: 620/620

По всем возникающим вопросам, можно обратиться в Discord: elukashova#9219

Приложение Strivers разработано по мотивам Strava: сервиса для отслеживания активности, а также спортивной сети для спортсменов.

ВНИМАНИЕ
В данном приложении используются апишки Google Maps. К сожалению, там есть ограничения по количеству запросов в минуту, что может вызывать ошибки в работе приложения при бесконечных кликах :) Убедительно просим тестить гуманно, спасибо!

Back-end

Backend repository: https://github.com/elukashova/rs-clone-be

Бек написан с нуля на NestJS, и задеплоен.
Примеры запросов через Postman можно найти тут: https://github.com/elukashova/rs-clone-be/blob/develop/postman-requests.md

Оценка за бек:

  • Реализована регистрация и аутентификация пользователя: 20 баллов
  • При попытке регистрации по уже зарегистрированному email, сервер отдает ошибку 409 (Conflict), а при попытке входа по незарегистрированному и/или по неправильному паролю, сервер отдает ошибку 401 (Invalid credential), которые в последующем обрабатываются на стороне клиента: 10 баллов
  • Реализована авторизация через JWT: 20 баллов
  • Реализованы методы для изменения информации о пользователе, а также удаления аккаунта: 10 баллов
  • Реализованы методы по добавлению в друзья других пользователей, и удалению их из друзей: 10 баллов
  • Реализованы методы по созданию, изменению и удалению спортивных активностей (тренировок) пользователя: 20 баллов
  • Реализованы методы по созданию, изменению и удалению комментариев к постам с активностями: 10 баллов
  • Для хранения всех данных пользователя, подключена база данных PostgreSQL: 10 баллов
  • Для работы с базой данных, используется ORM Prisma: 20 баллов

Итого за бек: 130 баллов

Front-end

UI:

  • Возможность переключения 2 языков (хедер): 20 баллов
  • Реализован routing без перезагрузки страницы приложения: 10 баллов
  • Реализована возможность логаута (данная фича находится в выпадающем меню в хедере, под аватаркой пользователя): 10 баллов
  • Реализовано сохранение сессии (при закрытии вкладки с приложением, и открытии его в новой вкладке, нет необходимости заново вводить данные для входа): 10 баллов
  • Реализована возможность смены темы приложения (хедер): 10 баллов
  • Сделан loading circle (в виде идущего хайкера) для ожидания загрузки данных на страницах: 10 баллов
  • Адаптивный дизайн до 320px: 20 баллов

Итого за бек: 90 баллов

Авторизация / страницы регистрации и логина

  • Возможность регистрации/логина через имейл и пароль, с обязательным указанием имени и страны: 10 баллов
    Обращаем ваше внимание, что названия стран также реагируют на перевод страницы: для активации выпадающего списка при вводе страны, необходимо переключить клавиатуру на соответствующую раскладку.
  • Возможность регистрации/логина через аккаунт Google (через соответствующую кнопку): 20 баллов
  • В случае ответа с сервера о попытке регистрации по уже зарегистрированному email, или попытке входа по незарегистрированному и/или по неправильному паролю, появляется соответствующее сообщение со ссылкой на нужную форму: 10 баллов

Итого за авторизацию: 40 баллов

Dashboard/личная страница

Личная страница разделена на три блока: левый, центральный и правый.

  1. Левый блок
  • Возможность изменять аватарку (при этом, при первом входе в приложение, пользователю назначается дефолтная аватарка с котиком): 10 баллов
  • Возможность изменить имя (при этом, применяются те же правила валидации, что и при регистрации): 5 баллов
  • Возможность добавить краткую био: 5 баллов
  • Отображается текущее количество подписчиков и друзей, а также количество сохраненных активностей (тренировок): 5 баллов
  • Отображается последняя активность и ее дата: 5 баллов
    Обратите внимание: последней является активность, дата в которой указана наиболее близко к текущему времени, а не последняя опубликованная пользователем (т.к. в приложении разрешено публиковать старые тренировки)
  • Возможность изменять избранные виды спорта, отображаемые в блоке статистики. При этом, предоставляется возможность выбрать максимум 3 вида спорта из 4х: 10 баллов

По каждому из избранных видов спорта (при клике на соответствующую иконку), отображается статистика тренировок, исходя из данных на сервере, а именно:

  • за текущую неделю (итого км, часов и метров набора высоты): 10 баллов
  • отображается график статистики по километрам, насчитанным за каждый день текущей недели, при этом оранжевым цветом выделен текущий день недели: 10 баллов
  • итого км за текущий год: 5 баллов

При добавлении новой тренировки, чтобы увидеть статистику по ней, необходимо переключить блок статистики на нужный вид спорта, кликнув на соответствующую иконку. Если соответствующей иконки нет среди избранных видов спорта, ее необходимо добавить.

Итого за левый блок дашборда: 65 баллов

  1. Правый блок
  • Отображаются максимум три случайных пользователя, из числа уже зарегистрированных на платформе и не добавленных в друзья. Этих пользователей можно добавить в собственные подписки. При добавлении, пользователя можно сразу удалить из подписок. Добавление и удаление пользователей в правом блоке отображается в количестве подписок в левом блоке. Также, если у нового друга есть добавленные тренировки, они отобразятся в центральной части. Если пользователь добавил всех возможных друзей - блок с предложенными друзьями не отображается при загрузке страницы: 10 баллов
  • Отображены первые 3 добавленных пользователем челленджей/испытаний с процентом их выполнения. Если пользователь не добавлял испытания - блок с ними не отображается: 10 баллов
    Добавление испытаний/челленджей происходит на соответствующей странице.
  • Под испытания с прогрессом ("Покорите свой Эверест", "Несгибаемый дух", "Тур de Valiance" и "Ваш час") созданы отдельные методы просчета их выполнения в зависимости от условий: даты начала и окончания испытания, участвующего вида спорта, цели испытания: 20 баллов (5 за каждый)
    Пожалуйста, если вы добавили испытание и тренировки и у вас не меняется прогресс, убедитесь, что тренировки добавлены в пределах даты проведения испытания и вид спорта соответствует видам спорта на странице Challenges.

Итого за правый блок дашборда: 40 баллов

  1. Центральный блок
  • При отсутствии добавленных спортивных активностей друзей и/или собственных, в блоке отображается соответствующее сообщение с предложением добавить первую тренировку и друзей. В обратном случае, выводятся посты с последними активностями в хронологическом порядке по дате, указанной при заполнении тренировки: 10 баллов
  • Возможность отписываться от другого пользователя через соответствующую иконку в правом верхнем углу поста. При этом, все его активности удаляются из ленты, и обновляется количество подписок: 5 баллов
  • Возможность удалить собственную тренировку через соответствующую иконку в правом верхнем углу поста: 5 баллов
  • В посте отображается актуальная информация о маршруте, а также карта (если пользователь добавил ее при создании тренировки). В случае наличия карты, она создается с помощью Google Maps Static API: 15 баллов
    Google Api создает скриншоты карты, поэтому она не будет реагировать на смену языка. Помимо этого, если линия маршрута не показывается на карте, то причина - в количестве запросов к апи (там есть определенные ограничения), и необходимо перезагрузить страницу.

Возможность ставить лайк (в данном приложении, именованный "kudos" или "респект") на пост с тренировкой, при этом:

  • при активном/неактивном лайке меняется цвет иконки: 5 баллов
  • слева отображаются общее количество лайков: 5 баллов
  • слева отображаются миниатюры аватарок пользователей, поставивших три последних лайка (верхняя аватарка - самый последний лайк): 5 баллов

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

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

Итого за центральный блок дашборда: 75 баллов

Settings / страница настроек

Для перехода на другие страницы, в хедере присутствуют два выпадающих меню: под аватаркой и иконкой "+".

  • Возможность изменить аватарку (повтор фичи дашборд, баллы не просим)
  • Возможность изменить email: 5 баллов
  • Возможность указать дату рождения: 5 баллов
  • Возможность указать пол: 5 баллов
  • Возможность изменить страну: 5 баллов
  • Возможность изменить био (повтор фичи дашборд, баллы не просим)
  • Возможность удалить аккаунт. После удаления, пользователя перебрасывает на страницу signup: 5 баллов

Итого за страницу настроек: 25 баллов

Add activity / страница добавления тренировки

Реализована возможность добавления тренировки как с, так и без добавления маршрута на карте, при этом:

  • Возможность добавить вручную данные о дистанции, времени, наборе высоты, типе спортивной деятельности, времени и дате, а также задать имя и описание тренировке: 10 баллов
  • Все поля необязательны для заполнения: при клике на кнопку сохранения, создается дефолтная тренировка типа "walking/ходьба" длительностью 1 час, которой присваиваются текущие дата и время, а также дефолтное название, которое меняется в зависимости от времени суток: "morning walk/утренняя прогулка" в случае создания активности утром, "afternoon walk/дневная прогулка" в случае ее создания днем, и так далее: 5 баллов
  • При изменении вида спорта и времени (времени суток, не длительности) тренировки, динамически меняется дефолтное название тренировки: 5 баллов
  • Добавлена динамическая картa Google Maps API. Есть возможность построения маршрута: добавление стартовой и конечной точки с кастомными маркерами, создание маршрута через Google Maps Directions. Для тестирования выбирайте, пожалуйста, Европу или Америку: 30 баллов
  • Добавлена возможность удаления созданного маршрута (очищения карты): 10 баллов
  • Добавлена возможность определения геолокации и перемещения центра карты на нее: 10 баллов
  • Добавлено всплывающее окно о невозможности построить маршрут, когда API возвращает соответствующий ответ, и предложением стереть и попробовать заново: 15 баллов
  • Добавлена диаграмма изменения высоты через Google Maps Elevation и Google Visualization: 15 баллов
  • При выборе маршрута на карте инпуты дистанции, длительности и подъема в метрах заполняются автоматически. При удалении маршрута данные очищаются. При изменении вида спорта - перезаполняются актуальными данными: 15 баллов
  • При изменении типа маршрута с бега, хайкинга или ходьбы на велозаезд и обратно меняется тип передвижения для карты: для велозаезда включается отображение навигации для велосипедистов в виде зеленых дорожек на карте. При этом маршрут перестраивается (если есть более удобный маршрут для данного вида передвижения): 10 баллов

Итого за страницу добавления активности: 125 баллов

Find friеnds / страница поиска и добавления друзей

  • Сделан вывод списка для поиска друзей и списка текущих друзей. В каждом реализована кнопка подписки и отписки, чтобы можно было сразу изменить решение, если юзер был добавлен или удален по ошибке: 5 баллов
  • Добавленный / удаленный юзер перемещается в список при обновлении страницы. Также, количество друзей изменяется на странице Dashboard: 5 баллов

Итого за страницу добавления поиска друзей: 10 баллов

Challenges / страница спортивных испытаний

  • Отображен список доступных пользователю челленджей. На челлендж можно подписаться и отписаться. При подписке и отписке данные обновятся на странице Dashboard: 5 баллов
  • В челлендже отображаются аватарки не более 3 друзей, которые в нем участвуют: 5 баллов
  • В челлендже указано общее количество друзей, участвующих в челлендже: 5 баллов
  • Сделан подсчет дней до окончания челленджа: 5 баллов

Итого за страницу испытаний: 20 баллов

elukashova and others added 30 commits February 16, 2023 20:46
elukashova and others added 30 commits February 27, 2023 22:21
fix: fix bug with user avatar
fix: fix bugs with post reactions
fix: solve bug with stats counting
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants