TL;DR
Мультисерверный мессенджер "Плюх" с дружелюбным интерфейсом на стеке MySQL+PHP+Flutter, с обменом по Rest API. На этих инструментах проще всего иллюстрировать современную архитектуру приложений.
Сделан в учебных целях (об этом ниже), это ключевая фишка.
P.S.: Разумеется, вайбкодинг.
Палка, палка, огуречик...
Я на своём веку застал и ICQ, и mIRC, и файлообменник Skype, и Miranda, и jabber... Всего не упомнишь. Знаю про более свежие штуки навроде Mastodon (да, знаю что это не мессенджер) и Element. И никогда не возникало желания накодить свой чат. Как-то избыточно и бессмысленно при таком-то зоопарке уже существующих решений. Однако когда встал вопрос о том, чтобы из этого избыточного разнообразия выбрать нечто одно, для домашнего пользования, я устал перебирать и решил убить одним выстрелом двух зайцев: привить своим детям системное мышление и получить чисто свой, семейный мессенджер. Я стал объяснять детям, что бывают другие способы общения кроме тех, в которых сидят буквально все. Их плюсы, минусы. И что с помощью современных ИИ-агентов можно достаточно легко реализовать свой собственный способ. Потом начал это показывать. Вот так, практически случайно, и родился Плюх: мессенджер по инвайтам и с вайбами IRC.
От IRC ему досталась мультисерверность - можно зарегаться на нескольких серверах, на каждом под разными почтами, и переключаться по необходимости, переключая "контекст" общения.
Также можно поднять свой сервер и уже самому принимать на нём "гостей".
Есть ещё нюанс, на котором в наш параноидальный век хочется остановиться отдельно. Шифрование. Текст сообщений в базе на сервере лежит, конечно, не открытыми словами, но и зашифрованным назвать его язык не поворачивается. Используется симметричный (!) ключ, завязанный на пароль пользователя. Это чисто защита от случайного взгляда в базу. Отсюда забавная побочная фича: при смене пароля можно сделать так, что старые сообщения перестанут читаться. Вместо старого сообщения или картинки всплывёт надпись «не удалось расшифровать».
Для совсем секретных тем это, конечно, несерьёзно: хозяин сервера и тот, кто имеет доступ к серверу, технически может прочесть что угодно (если, опять же, пароль пользователя не менялся).
Почему не ввести "взрослое" шифрование? Пу-пу-пу... Проще всего отослать вас читать Постановление Правительства РФ от 16 апреля 2012 г. N 313. Конечно, тем, кто находится вне юрисдикции РФ, никто не запретит поднять свой сервак со своим, каким угодно шифрованием. Ну а я как законопослушный россиянин, свой список покупок ни от кого не прячу =D
Почему такое странное название?
Название придумали вместе с младшим сыном. Фантазировали, что отправка сообщения - будто мы кидаем бутылку с письмом в море. Но называть мессенджер "Бутылка"- плохая примета. А вот звук, с которым бутылка плюхается в море - вполне ёмкое и необычное слово. И легко преобразуется в глагол: "плюхни мне" =D
А ещё я помню, в детстве у меня была книжка по программированию, там была игра "Плюх" - надо было управлять картингом, чтобы не плюхнуться в озеро. Может, её помнит кто-то кроме меня?
Что вошло в прототип и сколько времени на него было потрачено?
Базовый функционал навайбкожен примерно за неделю, сейчас мы с детьми уже начинаем планировать докидывать какие-то излишества, типа опросов и реакций. Сейчас это примерно следующий список:
- Регистрация по email и только по инвайтам, всё общение чисто среди своих;
- Текстовые сообщения с поддержкой Markdown;
- Групповые чаты;
- Мультисерверность: прописал адрес — и ты в своей «сети». Также можно поднять свой собственный сервер;
- Закрепы в чатах;
- Клиент для Android и Web (для iOS можно веб-версию ставить); Всё это крутится на одном простеньком VPS.
Есть дополнительный VPS, на котором реализовано хранение картинок и гифок, а также поддержка простейших звонков.
Кто этим пользуется?
Семья. Я, жена, дети. И дети друзей тоже прониклись "секретностью" мессенджера (см. анекдот про Неуловимого Джо =D).
Сейчас поднято два сервера: один - основной, публичный chat.plyuh.ru (для тестирования друзьями-знакомыми). Второй - чисто свой, семейный. На котором, собственно, семья и переписывается.
С какими самыми неожиданными трудностями пришлось столкнуться?
Самое трудное, это объяснять детям, что "обычная интуитивная работа мессенджера" - на самом деле длиннющий список ситуаций, в которые может попасть пользователь. С описанием, как себя при этом должна повести система. Нет, даже не это самое трудное. Ещё труднее сделать это так, чтобы детский интерес к проектированию после осознания масштаба этой сложности не угас.
Ну и ещё - в гугле мой аккаунт разработчика протух ещё четыре года назад, а новый завести не получилось. Это очень огорчило. Так что для мобильников мессенджер существует только в виде APK, которую собирает Flutter - гигантские 100Мб с фреймворком и компиляцией под все виды Андроида.
Сколько потратили и заработали? Есть идеи как это можно монетизировать?
Два VPS по 209р в месяц, монетизировать тут нечего, да и ни к чему. Хотя конечно донаты на развитие принимаются с удовольствием и благодарностью, в обмен на консультацию по работе мессенджера или установке своего сервера.
Какие планы на будущее?
Сделать опросы и реакции. Детям очень хочется =D
Нужны ли какие-то советы или помощь Клуба?
Буду рад, если мессенджер пригодится кому-то ещё. Принимаю в меру мудрёные советы по оптимизации и развитию. Со своей стороны могу помочь в раскатывании своего сервера.
Какой совет вы бы сами могли дать идущим по вашим стопам?
Не повторяйте, трюки выполнены профессионалами =D

