zwuck

На Пикабу
Дата рождения: 11 ноября
105 рейтинг 9 подписчиков 3 подписки 16 постов 0 в горячем
Награды:
10 лет на Пикабу
2

Сторонние сервисы на страже вашего приложения. Регистрация и авторизация

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

  • Необходимость отправки пользователю на почту, которую он указывал при регистрации, ссылки для подтверждения почты. Для реализации такого функционала в проекте необходимо было настраивать SMTP (почтовый протокол) и настраивать свою почту для рассылки таких сообщений;

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

На момент реализации такого функционала, у меня совершенно не было опыта работы с фреймворком Spring Boot, который позволяет реализовать бэкенд на языке программирования Java, поэтому на реализацию у меня ушло сильно больше времени, чем я хотел. Да, сейчас есть опыт и для других проектов можно просто использовать готовые куски кода, что сильно упрощает разработку, даже с использованием другого фреймворка для бэкенда.

Но, есть альтернативный вариант, а именно, использование сторонних сервисов (гугл, яндекс и даже телеграм) для регистрации и авторизации пользователей. Именно такой вариант я решил реализовать для браузерной версии своего мини-приложения в ТГ t.me/Socionyx_Bot/socionyx, который реализует простой функционал чат-рулетки, присоединяйтесь и общайтесь с случайными людьми.

Давайте на примере яндекса расскажу про все этапы.

Необходимо выполнить следующие этапы:

  • Иметь аккаунт на яндексе;

  • По ссылке https://oauth.yandex.ru/ зарегистрировать приложение и сохранить ClientID и Client secret, которые в дальнейшем понадобятся на бэкендовской части проекта.

Сторонние сервисы на страже вашего приложения. Регистрация и авторизация Telegram, IT, Приложение, Программирование, Сайт, Длиннопост

Зарегистрированные мною приложения

В самом приложении заходите в настройки (справа с верху рисунок ручки/карандаша), где в первую очередь настраиваем Redirect URI (адрес, куда будет стучаться почтовый сервис, в моем случае https://socionyx.ru/yandex-callback).

Сторонние сервисы на страже вашего приложения. Регистрация и авторизация Telegram, IT, Приложение, Программирование, Сайт, Длиннопост

Можно указывать несколько адресов

Ниже указываем информацию, которую у почтового сервиса хотим получить.

Сторонние сервисы на страже вашего приложения. Регистрация и авторизация Telegram, IT, Приложение, Программирование, Сайт, Длиннопост

Нам обязательно нужен login:email и login:info

Сохраняем.

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

Сторонние сервисы на страже вашего приложения. Регистрация и авторизация Telegram, IT, Приложение, Программирование, Сайт, Длиннопост

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

На бэке мы стучимся, через кнопку на фронте, на этот метод контроллера:

@Get('/yandex-url')

getYandexAuthUrl() {

const scope = "login:email login:info";

const yandexAuthUrl = `https://oauth.yandex.ru/authorize?client_id=%24%7Bthis.YANDE...}` +

`&redirect_uri=${this.REDIRECT_URI_YANDEX}` +

`&response_type=code` +

`&scope=${encodeURIComponent(scope)}` +

`&access_type=offline`;

return { url: yandexAuthUrl };

}

В методе, кроме YANDEX_CLIENT_ID, обязательно необходимо указать REDIRECT_URI_YANDEX, совпадает с тем, что указывали в настройках приложения. Непосредственно метод, который принимает ответ от почтового сервиса яндекс, выглядит следующим образом:

@Get('/yandex-callback')

async handleYandexCallback(@Query('code') code: string) {

try {

const params = new URLSearchParams();

params.append('code', code);

params.append('client_id', this.YANDEX_CLIENT_ID);

params.append('client_secret', this.YANDEX_CLIENT_SECRET);

params.append('redirect_uri', this.REDIRECT_URI_YANDEX);

params.append('grant_type', 'authorization_code');

const tokenResponse = await firstValueFrom(

this.httpService.post(this.YANDEX_TOKEN_URL, params.toString(), { headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, }), );

if (tokenResponse.status !== HttpStatus.OK) { throw new HttpException({ error: 'Invalid token response' }, HttpStatus.UNAUTHORIZED); }

const accessToken = tokenResponse.data.access_token;

if (!accessToken) { throw new HttpException({ error: 'Access token not found' }, HttpStatus.UNAUTHORIZED); }

const userInfoResponse = await firstValueFrom(

this.httpService.get(this.YANDEX_USER_INFO_URL, {

headers: { Authorization: `Bearer ${accessToken}`, }, }),);

if (userInfoResponse.status !== HttpStatus.OK) {throw new HttpException({ error: 'Unable to fetch user info' }, HttpStatus.UNAUTHORIZED);}

const email = userInfoResponse.data.default_email;

const username = userInfoResponse.data.real_name;

if (!email) { throw new HttpException({ error: 'Email not found in user info' }, HttpStatus.UNAUTHORIZED); }

const existingUser = await this.userService.findUserByEmail(email);

let token: string;

if (existingUser) {

token = this.jwtTokenUtil.generateToken(existingUser, 8); } else {

const newUser = {email: email,username:username}; 

await this.userService.createUserFromAnotherServiceAccount(newUser.email, newUser.username);

token = this.jwtTokenUtil.generateToken(newUser, 8);}

return { token };

} catch (error) {

throw new HttpException(

{ error: 'Authorization failed: ' + error.message },

HttpStatus.INTERNAL_SERVER_ERROR,

);}}

Для YANDEX_USER_INFO_URL у меня указано 'https://login.yandex.ru/info'.

Непосредственно именно этот метод (handleYandexCallback) создает пользователя, если его еще нет, и отправляет на фронтенд токен, из которого уже достается вся необходимая информация.

Непосредственно вот так это выглядит после того, как все сделано. После нажатия на кнопку «Войти через Yandex» вы увидите следующую картинку и просто выполняете авторизацию через вашу почту яндекс.

Сторонние сервисы на страже вашего приложения. Регистрация и авторизация Telegram, IT, Приложение, Программирование, Сайт, Длиннопост

Не обязательно указывать номер, можно и другие варианты выбрать

И все, теперь в вашем приложении можно регистрироваться и авторизовываться через существующую почту яндекс. Для гугла все абсолютно аналогично, только процедура настройки и получение ClientID и Client secret выглядит по-другому. В самом мини-приложении регистрация и авторизация реализуются уже через саму телегу, о чем, и не только, я уже расскажу в следующем посте.

Если интересно, you are welcome в мой тг канал t.me/socionyxchannel, где я пишу о разработке мини приложения и в целом делюсь мыслями о буднях разработчика.

Показать полностью 5

Telegram-боты: зачем их создают, как использовать и когда они не работают

В предыдущих постах я писал о том, почему и для чего разработал мини приложение для ТГ (t.me/Socionyx_Bot/socionyx), дабы не засорять, оставлю только последний пост, где указаны ссылки на предыдущие:

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

Telegram-боты: зачем их создают, как использовать и когда они не работают Telegram, Программирование, IT юмор, Длиннопост

Так кто жеж?

Давайте для начала дадим определение, от которого и будем плясать. Telegram-бот — это автоматизированная программа, созданная для взаимодействия с пользователями внутри мессенджера Telegram. Ну как бэ и все, но все равно не понятно, откуда такое засилие этими ботами. А истина кроется в том, что телеграмм бот может взаимодействовать с вашей программой (или просто кодом) через токен, который вы получите, создав такого бота через, опять же бота, BotFather. И вот тут открывается огромный простор для вашей фантазии, что и как должен ваш бот делать при взаимодействии с ним обычного пользователя. То есть, для некоторых сервисов телеграм бот по факту заменяет функционал фронтенда с его браузером, фреймворками, доменными именами, ssl сертификатами и иже с ними.

Давайте расскажу про тот функционал, который я реализовывал через тг бота:

  • Оповещение для гитхаба/гитлаба. Кто-то из разработчиков пушнул свои изменения, мне пришло сообщение о данном действии, удобно, можно оперативно отслеживать изменения.

Telegram-боты: зачем их создают, как использовать и когда они не работают Telegram, Программирование, IT юмор, Длиннопост

Очень удобно, особенно, если в команде больше 3 разработчиков

  • Автоматизация обработки вакансий для HR. К боту была подключена языковая модель, которая обрабатывала вакансии, писала сильные и слабые стороны кандидата;

Telegram-боты: зачем их создают, как использовать и когда они не работают Telegram, Программирование, IT юмор, Длиннопост

Самое главное, MVP было реализовано достаточно быстро

  • Конечно же запуск мини приложения;

Telegram-боты: зачем их создают, как использовать и когда они не работают Telegram, Программирование, IT юмор, Длиннопост

Реализуется в пару строчек кода, не считая самой настройки проекта

  • Оповещение через бот, который запускает мини приложение, например, о новом функционале или временных работах;

Telegram-боты: зачем их создают, как использовать и когда они не работают Telegram, Программирование, IT юмор, Длиннопост

Какая милота)))

И это лишь малый пласт того, что можно реализовывать с использованием тг ботов, плохо чтоль?

Telegram-боты: зачем их создают, как использовать и когда они не работают Telegram, Программирование, IT юмор, Длиннопост

Хорошо!

Как и любой инструмент, который всегда заточен под решение конкретной задачи (или группы задач), тг боты заняли определенную нишу — будь то автоматизация рутинных задач, сбор обратной связи или первичное тестирование гипотез. Их сила в простоте внедрения и скорости запуска: за считанные часы можно создать MVP, который проверит жизнеспособность идеи без значительных ресурсов. Однако важно помнить: бот — не замена полноценного продукта, а временный мост к нему. Если ваша концепция требует сложной логики, глубокой интеграции или масштабных пользовательских сценариев, бот станет лишь отправной точкой. Но когда задача позволяет урезать функционал до минимума, именно Telegram-бот становится оптимальным выбором для старта — дешево, быстро и с возможностью гибко адаптироваться под обратную связь.

Если интересно, you are welcome в мой тг канал t.me/socionyxchannel, где я пишу о разработке мини приложения и в целом делюсь мыслями о буднях разработчика.

Показать полностью 6
3

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Немного итогов и мюслей

Не ждали? А вот он я!!!

Рубрика «в предыдущих сериях»:

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

За этот месяц (и 5 статей) в чат зашло 26 человека и возникает вопрос, а много это потенциальных пользователей или мало? Результат то хороший или плохой? Давайте поразмышляем.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Немного итогов и мюслей Telegram, Telegram (ссылка), Веб-разработка, IT юмор, Программирование, IT, Блогеры, Длиннопост

Хмм…

Я уже писал в первой части, что у меня был опыт разработки «не успешных» продуктов. По одному из них есть статистика по результатам рекламной компании:

- реклама была показана нескольким тысячам пользователей;

- на сайт зашло примерно 10 человек;

- зарегистрировалось всего лишь 3 пользователя.

И да, рекламная компания стоила несколько тысяч, как итог, просто ужасная конверсия и «стоимость» привлечения пользователей. Если сравнить тех 3 пользователей и текущих 26, то это, определенно, успех. Главное не останавливаться, развивать продукт и писать об этом.

Перейдем непосредственно к мини-приложению, по нему высветились следующие проблемные области:

1) Пустой чат. Увы и ах, проблема любых сервисов, где необходимо взаимодействие между людьми. Заметил даже такую ситуацию, так как я стараюсь периодически в чате сидеть, то зашедший пользователь пытается переключаться на другой чат и снова попадает на меня, так как я единственный (кроме зашедшего пользователя) в данный момент пользователь и других комнат попросту нет;

2) Не красивый/удобный интерфейс. Здесь я получил следующие замечания:

2.1) Буквы не по центру кнопок;

2.2) Кнопка «Выйти» розового цвета;

2.3) Нет автоматического пролистывания диалога;

2.4) Присутствует английский язык в интерфейсе.

Абсолютно все замечания приняты и запущены в работу.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Немного итогов и мюслей Telegram, Telegram (ссылка), Веб-разработка, IT юмор, Программирование, IT, Блогеры, Длиннопост

Пон прин))

Кроме того, собираюсь сделать следующее:

  • Отображать на стартовой странице количество пользователей (комнат всего или пустых комнат), чтобы было понятно, есть вообще в чате кто-либо или пусто;

  • Писать через бота оповещения о каких-либо изменениях в функционале или дизайне чата;

  • Продолжать писать новые статьи как на различных ресурсах (пикабу, vc), так и в своем телеграм канале.

  • На этом на сегодня все, пацантре.

Не забываем, мини-приложение уже готово и ждет своих пользователей, как говорится welcome t.me/Socionyx_Bot/socionyx.

Ссылка на telegram канал t.me/socionyxchannel, you are welcome too.

Буду премного благодарен за обратную связь и замечания по работе текущего мини-приложения.

Показать полностью 2
1

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть ай ноу ю вонт ми

Штош, я только начал и не собираюсь сдаваться!!!!!!!!!!

Рубрика «в предыдущих сериях»:

Для связи telegram бота и функционала, который вы хотите ему придать, необходимо реализовать соответствующий функционал с использованием языка программирования. Как я уже писал в первой части, для реализации бота был выбран фреймворк nestJS (язык программирования typescript) и кроме базовых файлов, которые автоматом устанавливаются при установке проекта, нам понадобится всего лишь два дополнительных файла.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть ай ноу ю вонт ми Telegram, Telegram каналы, Микросервисы, IT юмор, Разработка, Продвижение, Длиннопост

Практически базовая структура nestJS проекта

Для бота написанными лично мною являются файлы bot.module.ts и bot.update.ts. Наполнение bot.update.ts следующее.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть ай ноу ю вонт ми Telegram, Telegram каналы, Микросервисы, IT юмор, Разработка, Продвижение, Длиннопост

Ссылка на приложение, текст и кнопка запуска

Наполнение bot.module.ts следующее.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть ай ноу ю вонт ми Telegram, Telegram каналы, Микросервисы, IT юмор, Разработка, Продвижение, Длиннопост

По сути просто связующий файл для импортов

В самом telegram боте после его «активации» вы увидите следующее.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть ай ноу ю вонт ми Telegram, Telegram каналы, Микросервисы, IT юмор, Разработка, Продвижение, Длиннопост

Ну прювет, дорогой

В самом же списке контактов вы увидите следующее.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть ай ноу ю вонт ми Telegram, Telegram каналы, Микросервисы, IT юмор, Разработка, Продвижение, Длиннопост

Красивенький какой)))

Ну вот и все, дорогие мои, все этапы создания мини-приложения для telegram пройдены, можете все это повторить, но уже для других сервисов, например, игр тайм-киллеров.

А теперь «микросерверность» и все, что с этим связано, nikita17cm все это для тебя, мой единственный комментатор!!!!!

Для начала рассмотрим, а что же является альтернативой микросервисной архитектуры и какие минусы у такого подхода, который был назван монолитной архитектурой. Представим, что на бэкенде у меня один проект и взаимодействие с ботом является составной частью основного бэкенда. На этом этапе никаких проблем нет, как вы все видели, код взаимодействия с ботом минимален и не сложен. Время проходит и я, например, решаю реализовать функционал оплаты, через робокассу или юмани. Реализация оплаты уже посложнее, код объемнее и отлаживать или тестировать его функционал становится сложнее, но все еще терпимо в рамках единой кодовой базы проекта. А потом мы добавляем логирование (для отслеживания ошибок), кеширование (для ускорения работы приложения), брокер сообщений (для гарантированной доставки важных сообщений) и т.д. Все это приводит к тому, что теперь процедуру отладки или тестирования функционала становится очень сложно проводить, так как изменения в одной части кода могут повлиять на другую часть кода. А что если как-то выделить код, который отвечает за какой-то один функционал (бот, логирование, кеширование и т.д.) и, самое главное, изолировать этот функционал между собой? В этом и есть основной смысл микросервисной архитектуры, который позволяет абсолютно независимо разрабатывать, тестировать и отлаживать взаимодействие отдельных микросервисов между собой. Накатили новые изменения и сломался функционал логирования (кеширования, брокера сообщений)? Не проблема, основной функционал вашего приложения работает, как раньше, просто откатываете изменения и исправляете ошибку. Именно поэтому функционал бота у меня выделен в отдельное приложения, я сразу стал так писать, а не писал сначала все в одном проекте, а потом решил часть проекта выделить в отдельный микросервис. Надеюсь, стало немного понятно, а вообще на ютубе полно видео на эту тему, которые достаточно доходчиво объясняют все интересующие вас аспекты.

А, ну и конечно, как я уже ранее писал, мини-приложение уже готово и ждет своих пользователей, как говорится welcome t.me/Socionyx_Bot/socionyx.

Кроме того, завел telegram канал t.me/socionyxchannel, где буду писать о дальнейших этапах разработки и продвижения, разработанных мною приложений.

Буду премного благодарен за обратную связь и замечания по работе текущего мини-приложения.

Показать полностью 5
4

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть куатро

Штош, я только начал.

Рубрика «в предыдущих сериях»:

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

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть куатро Telegram, Веб-разработка, Программирование, IT юмор, Ssl, Домен, Длиннопост

Этапы настройки бота

Важная особенность, когда бот запросит указать «Web App URL» вы должны указать именно доменное имя, а не ip адрес, и обязательно через https, а не http. Как видите, в моем случае, был указан URL https://socionyx.ru/. А как быть тем, кто только что по моей шедевральной (хе-хе-хе) инструкции только-только настроил VPS и развернул на нем свое приложение, которое теперь открывается по ip адресу?

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть куатро Telegram, Веб-разработка, Программирование, IT юмор, Ssl, Домен, Длиннопост

Как быть-то теперь?

Очевидно же, получить доменное имя и ssl сертификат безопасности, для реализации https. По запросу в гугле «купить домен» у вас появится целый список сервисов, которые позволят вам осуществить данную процедуру. Мне домен socionyx.ru стоил 169 рублей на год. Теперь у вас есть домен и необходимо связать его с ip адресом VPS, на которой разворачивается ваше приложение. У меня ситуация сложилась следующая, VPS была на одном сервисе, а доменное имя я получил на другом сервисе, и чтобы их подружить, пришлось выполнить некоторые дополнительные действия. Вдаваться в технические детали не буду, так как это:

  • Усложнит и так не простой для понимания материал;

  • В зависимости от выбранных вами сервисов по предоставлению VPS и домена, шаги могут немного отличаться.

Учитывая, что я сам это делал впервые и разобрался, это определенно не «rocket science» и вы без проблем сможете справится с этой задачей.

А вот что я вам более подробно расскажу, так это настройка nginx, чтобы ваш сервис открывался по доменному имени, а не ip адресу. В файле конфигураций nginx необходимо написать следующее:

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

server {

listen 80;

listen [::]:80;

server_name socionyx.ru www.socionyx.ru;

}

}

Ранее в строке с «server_name socionyx.ru www.socionyx.ru; » вместо «socionyx.ru www.socionyx.ru;» был написан ip адрес вида 172.165.4.2. И все, теперь по вашему доменному имени должно открываться ваше приложение. Но стойте!!! Что это за ужас?!?!?!?!?!!?

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть куатро Telegram, Веб-разработка, Программирование, IT юмор, Ssl, Домен, Длиннопост

Хром ругается, ох напасть-то какая эээээээ…

Похожая ошибка для вашего сервиса будет и в других браузерах. Надо решать проблему, настало время приобрести ssl сертификат.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть куатро Telegram, Веб-разработка, Программирование, IT юмор, Ssl, Домен, Длиннопост

Все так и работает, чесна чесна

Аналогично домену, по запросу в гугле «купить ssl сертификат» у вас также появится целый список сервисов, которые позволят вам осуществить данную процедуру. Мне сертификат достался бесплатно на 6 месяцев за приобретенный домен, да, есть у моего регистратора доменных имен такая приятная функция. На почту или в личном кабинете вам должны прийти как минимум два сертификата, вида certificate.crt и certificate.key. А дальше снова nginx и в файле конфигурации теперь все будет выглядеть примерно следующим образом.

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

server {

listen 80;

listen [::]:80;

server_name socionyx.ru www.socionyx.ru;

location / {

return 301 https://socionyx.ru$request_uri;

}

}

server {

listen 443 ssl;

listen [::]:443 ssl;

server_name www.socionyx.ru;

ssl_certificate /etc/nginx/certificate.crt;

ssl_certificate_key /etc/nginx/certificate.key;

return 301 https://socionyx.ru$request_uri;

}

server {

listen 443 ssl;

listen [::]:443 ssl;

server_name socionyx.ru;

ssl_certificate /etc/nginx/certificate.crt;

ssl_certificate_key /etc/nginx/certificate.key;

}

}

И все, ждете какое-то время пока все настройки придут в силу и ваше приложение теперь спокойно может открываться по https и в настройках бота можно наконец-то указать для «Web App URL» URL вашего приложения. На сегодня все, о дальнейших настройках бота для полноценного запуска вашего приложения в виде мини-приложения в telegram я напишу в следующей части.

А, ну и конечно, как я уже ранее писал, мини-приложение уже готово и ждет своих пользователей, как говорится welcome t.me/Socionyx_Bot/socionyx.

Буду премного благодарен за обратную связь и замечания по работе текущего мини-приложения.

P.S. извини меня мой дорогой nikita17cm, уж очень объемным получился уже данный пост, поэтому о «микросерверности», и разделе бота и основного бэкенда придется поведать в следующей части.

Показать полностью 4
6

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть тре

Штош, продолжаем эпопею.

В предыдущих частях Telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть уно  и Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть до  я поведал вам, мои дорогие читатели и подписчики, о выборе направления разработки и инструментах для решения поставленных задач.

Что у нас теперь есть?

Приложение запускается на моем собственном компьютере и я могу писать сам себе какой я бесподобный. Но в этом ли смысл моего приложения, так ли я его хотел использовать? Хмм…

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть тре Telegram, Веб-разработка, Программирование, IT, Docker, VPS, Длиннопост

Хмм...

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

Что для этого необходимо сделать? Правильно, приложение должно быть доступно через интернет, чтобы каждый владелец приложения telegram мог спокойно запустить его в любой точке мира и наслаждаться общением. Есть два варианта решения:

  • Обеспечить доступ к приложению на моем компьютере из внешней сети (есть несколько интересных способов решения данной задачи, если будет интересно, напишу и о них);

  • Арендовать VPS (Virtual Private Server ака виртуальный приватный сервер) у любого хостинг провайдера.

Я выбрал второй вариант. Что такое VPS? Если совсем кратко это просто тупо компьютер, доступный из интернета и обеспечением которого занимается хостинг провайдер. Управление VPS у меня реализовано через консоль и выглядит следующим образом.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть тре Telegram, Веб-разработка, Программирование, IT, Docker, VPS, Длиннопост

Я кулхацкер так та

Вы видите все составные части моего приложения:

  • В папке backend находятся все данные и файлы, связанные с «основным» бэкендом;

  • Файл docker-compose.yml отвечает за обеспечение взаимодействия между докер контейнерами, о которых я расскажу далее;

  • В папке frontend находятся все данные и файлы, связанные с фронтендом;

  • В папке nginx находятся все данные и файлы, связанные с инструментом nginx, который реализует веб-сервер и почтовый прокси-сервер;

  • В папке tgbot находятся все данные и файлы, реализующие функционал взаимодействия с ботом в тг.


    Как эти папки с файлами оказались на VPS? Есть три способа, о которых я знаю:

  • Через консоль по SFTP (это транспортный протокол такой) просто тупо копировать все данные;

  • Через инструмент FileZilla, который реализует SFTP, но с удобным графическим интерфейсом;

  • Через git – когда вы заливаете весь ваш код на github или gitlab и уже оттуда скачиваете все на VPS.

Я использую 2 и 3 варианты, так как уже не могу жить без git (это как Ватсон, который без трубки заснуть уже не мог) и некоторые файлы с паролями/секретами, docker-compose, dockerfile копирую через FileZilla.

Теперь все необходимые файлы находятся на VPS и нам необходимо все это вместе запустить. Настало время рассказать про докер, великий и ужасный.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть тре Telegram, Веб-разработка, Программирование, IT, Docker, VPS, Длиннопост

Кхм…примерно так все у меня и происходит

Не буду сильно углубляться в особенности докер и docker-compose, потому как на ютубе полно видео, в которых достаточно доходчиво объясняется что это и для чего это. Я лишь расскажу вам о том, какие проблемы позволил мне решить докер.

  • Установка базы данных в пару строчек в docker-compose.yml;

  • Установка nginx в пару строчек в dockerfile и docker-compose.yml;

  • Запуск программ и поддержка их в запущенном состоянии. Если руками через консоль запускать программы, то при закрытии консоли, они (программы) тоже закроются (не все).

После правильной сборки и запуска всех контейнеров, через docker-compose.yml, вы можете увидеть такую картинку и обрадоваться, что ничего не отвалилось и все контейнеры запущены и работают. Если совсем тезисно, то каждая строчка это контейнер, в котором запущена всего лишь одна составная часть приложения (nginx для фронтенда, основной бэкенд, база данных и бэкенд для бота).

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть тре Telegram, Веб-разработка, Программирование, IT, Docker, VPS, Длиннопост

Докер запущен и готов служить

Теперь ваше приложение доступно по ip адресу в браузере, который получил VPS. И тут у вас может возникнуть справедливый вопрос «А где здесь telegram, если приложение запускается в браузере?». Абсолютно верное замечание и ответ достаточно прост - telegram мини-приложение это сайт, который просто открывается в отдельном окне самого telegram и никакой магии. О том, как реализуется эта процедура и о дальнейших настройках доменного имени и ssl, без чего не возможен запуск именно мини-приложения, я расскажу в последующих частях.

А, ну и конечно, как я уже ранее писал, мини-приложение уже готово и ждет своих пользователей, как говорится welcome t.me/Socionyx_Bot/socionyx.

Буду премного благодарен за обратную связь и замечания по работе текущего мини-приложения.

P.S. я не забыл про твой вопрос мой дорогой nikita17cm и об особенностях «микросерверности», и о разделе бота и основного бэкенда, я обязательно расскажу в следующей части.

Показать полностью 3
0

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть до

Штош, продолжим.

В предыдущем посте Telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть уно я поведал вам, мои дорогие читатели (и два моих любимых подписчика, лю вас!!!), почему я выбрал разработку чат-рулетки в формате мини-приложения для telegram.

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

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть до Telegram, Веб-разработка, Программирование, IT юмор, IT, Мат, Длиннопост

Хуяк хуяк и в продакшн

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

Ярким примером такого подхода является разработка Starship Илоном нашим Масковичем, когда он запустил по сути ведро с болтами, чтобы проверить работоспособность всех систем и, самое главное, получить реальные данные.

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть до Telegram, Веб-разработка, Программирование, IT юмор, IT, Мат, Длиннопост

Это птица? Это самолет? Нет, это прототип Starship

В противном случае разработка продукта происходит для «себя любимого», а не для пользователя, что приведет к отсутствию таковых и смерти продукта… Но давайте не о грустном, а поговорим непосредственно о разработке.

И так, что из себя будет представлять само приложение?

Фронтенд на React (это база, это надо знать), который отвечает за ту информацию, который пользователь непосредственно видит в браузере или в отдельном окне telegram, как в нашем случае мини-приложения. HTML + CSS + JS наше все. Структура моего фронтенда для мини приложения следующая:

  • Стартовая страница – на которую попадает пользователь и происходит его автоматическая регистрация или авторизация по данным, которые отдает сам telegram;

  • Страница поиска чата

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть до Telegram, Веб-разработка, Программирование, IT юмор, IT, Мат, Длиннопост

Кручу, верчу, найти хочу

  • Страница непосредственно самого чата

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть до Telegram, Веб-разработка, Программирование, IT юмор, IT, Мат, Длиннопост

Сам чат, дратути

И все. Совсем все. Ну вот вообще все. Только две страницы и все. Давайте дальше, на очереди бэкенд.

Бэкенд отвечает за все то, чего пользователь не видит, а именно за взаимодействие с базой данных и telegram, бизнес логику и т.д. NestJS + Prisma + postgreSQL наше все. Именно на бэкенде создается пользователь, происходит регистрация пользователя, авторизация пользователя, хранится информация о текущих сообщениях в чате (чтобы при перезагрузке страницы история не пропала), о созданных комнатах и количестве пользователей в них, создается JWT и многое многое многое другое. Для простоты разработки и отладки приложения, было принято решение разделить бэкенд на две составляющие:

  • Бэкенд отвечающий за взаимодействие с telegram, а именно с ботом;

  • «Основной» бэкенд, которые отвечает за все остальное.

Такой подход позволяет изолировать по сути две разные «сущности» в проекте и не бояться, что если отвалится бот, то упадет весь бэкенд и наоборот (кто сказал микросервисы?).

На этом все ребята.

В следующих частях я расскажу о дальнейших этапах разработки, а именно для чего нужен докер и как его готовить, разворачивание приложения на VPS, получение доменного имени и ssl.

А, ну и конечно, мини-приложение уже готово и ждет своих пользователей, как говорится welcome t.me/Socionyx_Bot/socionyx.

Буду премного благодарен за обратную связь и замечания по работе текущего мини-приложения.

Показать полностью 4
3

Telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть уно

Штош, начнем.

На дворе 2025 год, за плечами три созданных продукта, которые не нашли свою аудиторию, куча потраченного зря времени, тлен, депрессия, разочарование… Осознание, может я что-то делаю не так? Может вместо разработки для начала надо оценить рынок, понять покупателя и его потребности? Искра, буря, безумие и огромная мотивация работать дальше.

После анализа рынков и проведенных интервью с потенциальными пользователями я пришел к следующим выводам:

  1. Если ты первый на рынке с минимальной конкуренцией, то пользователи пойдут к тебе, даже если продукт не идеален (а кто в нашем мире идеален???);

  2. Рынок должен расти, чтобы у тебя был простор для манёвра;

  3. Продукт решает какую-либо проблему пользователя.

Дальнейший мозговой штурм навел меня на интересную и шокирующую до глубины души мысль – первым двум критериям подходят telegram мини-приложения, давайте разберёмся.

Telegram Mini Apps (или же Web Apps) – это относительно новый и удобный способ добавления веб приложения прямо в интерфейсе Telegram. Используя JavaScript, становится возможным создавать бесконечное множество интерфейсов, которые смогут заменить полноценный веб-сайт. И все, никакой магии, просто веб страница вместо браузера открывается как приложение внутри telegram. Давайте посмотрим, что нам предлагает раздел игры в Telegram Apps Center, который по сути тоже является мини-приложением.

Telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть уно Telegram, Веб-разработка, Программирование, IT, Длиннопост

Зарабатывай тапай, тапай зарабатывай…Ну и куда же без Hamster Kombat

Не густо, анализ других категорий показал похожую ситуацию, приложений не много, а те что есть ориентированы на «зарабатывание» чего-либо. Рынок мини-приложений еще только формируется, в сравнении с магазинами от гугла и яблока, и безусловно он растет.

Бинго!!!! Первые два пункта наши.

Мало выбрать рынок, необходимо так же подумать, а что же предложить пользователю, как же его зацепить?

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

  • Агрегатор каналов/биржа каналов/каталог каналов;

  • "Dailyk" - цитаты, интересные факты, иностранные слова, анекдоты, мемасы, рецепты и так далее;

  • Чат-рулетка/случайный собеседник/знакомства.

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

Telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть уно Telegram, Веб-разработка, Программирование, IT, Длиннопост

Неповторимый оригинал

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

Telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть уно Telegram, Веб-разработка, Программирование, IT, Длиннопост

Абсолютли

  • Бэкенд: nestJS + Prisma (для взаимодействия с базой данных) + PostgreSQL;

  • Фронтенд: React + Nginx;

  • Docker: а куда сейчас без него?

  • Виртуальный сервер ака VPS;

  • Доменное имя + ssl сертификат: без сертификата, как говорится «ни туды и ни сюды»;

  • Бот в telegram, через которого будет происходить взаимодействие с пользователем.

На этом все ребята.

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

А, ну и конечно, ссылка t.me/Socionyx_Bot/socionyx.

Буду премного благодарен за обратную связь.

Показать полностью 3
Отличная работа, все прочитано!