Найти тему
Александр Соловьёв

Как я делал praktika.school

praktika.school
praktika.school

Я не привык создавать портфолио и хвастаться проектами. Но тут обстоятельства вынудили. Оказалось, это совсем не муторно и скучно, а даже очень интересно! И меня так затянуло, что вместо сухого описания и написал историю работы над проектом praktika.school. Приятного чтения!

О проекте

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

Работа над онлайн-школой велась в несколько этапов и продолжается до сих пор, т.к. нет предела совершенству (как и задумкам, сейчас будет умное слово, стэйкхолдеров 😅).

Предыстория

Изначально онлайн-школа была сделана на Тильде с использованием только внутренних инструментов. То есть к каждому курсу прилагалась своя группа в личном кабинете, а для тех, кто покупал подписку, была отдельная группа со всеми курсами. Это было неудобно, т.к. приходилось вручную отслеживать всех, кто перестал оплачивать подписку. При этом каждый курс был сделан на отдельной странице, которая могла иметь структуру, отличающуюся от других. И существовали как лендинг для продажи, так и страница для обучения. В общем, куча ручной работы у менеджеров.

Стоит сразу показать, как выглядит сайт и его основные функции 👆

Этапы

1. Управление доступом

На первом этапе был добавлен достаточно простой функционал с динамическим доступом: пока есть подписка в CloudPayments, доступ есть, а как только подписка пропадала, доступ прекращался. Но это нужно было совместить с возможностью покупать курсы навсегда, что уже вызвало некоторые трудности. Пришлось усложнить сценарий в Integromat и дописать JavaScript-код, чтобы показывать пользователю, что он купил тот или иной курс. Так как личный кабинет был один для всех пользователей (без подписки, с подпиской, купившие курсы навсегда), необходимо было показывать на одной странице разные блоки, которые только выглядят одинаково, а на деле отображают разный контент.

Помимо прочего была подготовлена почва для реферальной программы. Всё было настроено, но так и не запустилось. Однако эти наработки пригодятся в будущем...

2. Вакансии

Следующим этапом стало создание нового раздела, в который должны были публиковаться вакансии из различных телеграм-каналов. Работать с ботами в nocode-инструментах достаточно легко, очень многие сервисы имеют их нативную поддержку. Но проблема в том, что никакой канал не согласится добавить к себе телеграм-бота и выдать ему определенные права, чтобы тот парсил вакансии. Пришлось пойти на хитрость и, воспользовавшись языком Python, написать простой скрипт, который запускается на сервере от имени пользователя, а не телеграм-бота.

Скрипт отправляет в наш специальный закрытый телеграм-канал сообщение с текстом вакансии, когда в один из чужих телеграм-каналов приходит новое сообщение. Сообщения фильтруются от спама и рекламы автоматически по заданным критериям. Дальше оно отправляется в AirTable. Перед окончательной публикацией на сайте подобные вакансии проходят ещё и ручную проверку менеджером. Если всё ок, менеджер ставит галочку, и вакансия попадает на сайт в личный кабинет пользователю.

3. Стажировки

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

Это отдельный личный кабинет с двумя ролями: соискатель и HR. Соискатель может бесплатно просматривать список всех стажировок, но не видит контакты. Для отклика (или просмотра контактов) ему необходимо зарегистрироваться и подписаться на сервис. HR может в своем личном кабинете размещать, редактировать и архивировать стажировки.

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

4. Демо-доступ + новый тип контента

Летом 2022 года praktika.school перезапустилась. Во-первых был разработан новый фирменный стиль, что означало, что предстоит переделать существующую структуру под новый дизайн. Учитывая дизайнерские задумки, некоторые элементы было сложно переделать, но все-таки удалось.

Во-вторых появился новый тип контента – лекция. Если для курса изначально были созданы отдельные страницы (или несколько страниц), которые могли ещё и отличаться друг от друга по структуре, то с лекциями было всё проще, но интереснее. Для лекций должна была появиться динамическая страница с одной структурой, на которой меняется только контент: тема, описание, информация об авторе, само видео лекции, таймкода к видео, похожие материалы и чат.

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

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

В итоге всё это было реализовано, и теперь школа совсем не похожа на то, что из себя представляла в начале 2021 года.

Что по итогу?

Сейчас проект функционирует, но видно, что огромное количество сервисов и тонкие настройки мешают ему. По сути мы упёрлись в потолок. Дальше нужно либо успокоиться, либо переходить на более сложные решения – а это либо разработка с нуля полноценного ресурса, либо один очень инетересный low-code инструмент, который по сути и сделает эту полноценную разработку, но упростит процесс работы. В первом случае нужно привлекать некоторое количество разработчиков, верстальщика, возможно ещё кого-то. Во втором случае я могу справиться в одиночку. Посмотрим, возможно, скоро praktika.school станет ещё круче, и к этому я снова смогу приложить свою руку.

Отзыв заказчицы

Снежана Иванова
Снежана Иванова
Работала с Сашей над тремя проектами, везде были разные задачи и разный функционал, компетенции в разработке у Саши железные, реализует любую идею/функцию.
По ходу реализации Саша может предложить улучшения или какие-то классные идеи, о которых ты сам не подумал. Это безумно ценное качество, которое оценят заказчики, имеющие опыт работы с командами разработки, бездушно отрабатывающими свои часы.
С Сашей работать одно удовольствие.
Если есть какие-то недопонимания в процессе работы, что всегда бывает, проблема разрешается переговорами, Саша идёт навстречу.
Отдельно отмечу поддержку проектов после реализации и возможность практически 24/7 быть на контакте с Сашей.
Кто начнёт работать с Сашей, не пожалеет.