Сразу сошлись тут у меня два первых опыта — первый опыт публикации проекта в open source, который был впервые в жизни «навайбкоден» по заданию самому себе.
Если вдруг вам интересен свой собственный мессенджер на своём PHP-хостинге — заходите почитать.
Раньше мы с коллегой пользовались для совместной работы над проектами (электронных разработок) таким проектом как Asana. Наблюдали ее развитие последних лет 7-8 изнутри бесплатного аккаунта. Создавали свои проекты, в них задачи, привязанные к срокам исполнения, ну — и набивали файлами-фотками в процессе разработок.
Ну, а теперь в существующих реалиях Интернета в РФ — стали думать как бы эту всю информацию накопленную сохранить и продолжить использовать в работе, но поближе к себе… И возникла у меня идея самому себе поставить задачу первого опыта вайбкодинга такой вот не самой малой системы для своего личного использования, такую как Asana — по сути, свой мессенджер, но привязанный к задачам.
Тем более, что shared-хостингов уже в пользовании штук пять под мелкими проектами. Я сторонник того, что в ожидании «косяка клиентов» достаточно иметь малые shared-хостинги под каждый проектик, или даже под каждого клиента, чтобы его данные и доступность сервиса была независима от других. Ну а на VDS переходить когда уже есть нормальный коммерческий договор.
Ну, а значит, надо попробовать наваять такую систему именно в условиях shared-хостинга, с ее ограничениями.
Понимание web-технологий самое общее, конечно есть, но по моему мнению, достаточное для создания такого проекта максимум процентов на 10. Поэтому вся надежда на «эти ваши нейросети», в процессе самообучения. Ну, и при такой «кроильной» задаче главное условие поставил сам себе — что эксперимент будет полностью бесплатный, т.е. без покупки какого-либо платного доступа к ИИ-агентам.
Т.е. я решил сам себя замучить именно в режиме бесплатного чата с нейросетями, становясь копипастером кода 80-го уровня.
Мобильную верстку удалось сделать, максимизировав чат
И дальше я три недели спал очень плохо — мне не понравился личный опыт вайбкодинга, где по сути я боролся с сетками, которые делая 3 шага вперед, обязательно что-то исподтишка ломали в уже отлаженном коде, отступая на шаг назад. Психоз от того, что то и дело приходится переделывать большие куски в проекте из-за того, что сетка не может реализовать то, что я прошу — постепенно рос.
Первую структуру базы данных, общее техзадание и структуру системы на PHP я успел за несколько часов создать в Cursor, пока он «не кончился». Ну, а далее был копипастинг в чате. И периодические отлучки на рыбалку, чтобы восстановить нервы, и перестать материться.
Скрытый текст
В результате за три недели в одного удалось наваять систему, которая, я надеюсь, сможет быть полезной еще кому-то, кроме меня. Система заточена под shared-хостинг, т.е. все запросы максимально старается делать последовательно, а не параллельно, чтобы избежать ошибок 503, когда хостинг ограничивает активные сайты.
Проекты\задачи

Проекты с задачами, подзадачами, подпиской на уведомления при изменениях, файлами задачи и чатом по этой задаче
Применена технология SSE (Server-Sent Events), однонаправленное уведомление клиентов самим сервером, что вполне допустимо реализовать на shared-хостинге, в отличие от всем знакомого WebSocket. И браузеры получают уведомления о новых сообщениях в чате, новых назначенных задачах или появившихся файлах в своих задачах, в виде системных popup-окошек нотификации, если, конечно, вы разрешите в браузере показ уведомлений от вашего сайта.
Чатик
Разделов сделал буквально пяток:
-
дашбоард при входе, т.е. страничку со всеми новшествами в системе (сообщения, просроченные или новые задачи, файлы)
-
проекты и их задачи, по которыми можно неограниченно создавать иерархию подзадач
-
чат каждой задачи, т.е. то, ради чего весь эксперимент и затевался
-
файлы: централизованный доступ ко всем файлам доступным юзеру проектов и чатов, с поиском, просмотром, причем кроме фоток с зумом, сразу смотрим и PDF, и офисные форматы, и содержимое ZIP-ов, и бинарники в hex, прежде чем скачать
-
Админка с личными настройками юзера и настройками админов для пользователей, их правами доступа к проектам, и подписками на задачи
Тотальный поиск
Так же реализовал подсистему email-уведомлений по расписанию (настраиваемому в личных данных) и push-уведомлений (если пользователь неактивен уже какое-то настраиваемое время), зарегистрировал проект в Firebase, получив там VAPID-ключи шифрования, но …
Сначала огорчился, что мобильный Яндекс.Браузер убивает service worker через 20 секунд работы.
Потом обрадовался что мобильный Chrome все-таки работает и принимает пуши от сервера.
Потом переставил мобильный Яндекс.Браузер — и тот тоже начал принимать пуши.
Но все равно Android через 15-20 минут с выключенным экраном — убивает все браузеры настолько, что вся эта пляска с пушами — оказалась бесполезной, несмотря на настройки управления питанием браузеров.
Может сообщество Хабра сможет подсказать, как же, все-таки, воспользоваться пока еще доступными на Android пушами нормально, как в нормальном мессенджере.
Конечно, я уверен, что еще много чего нужно допилить и перепилить, чтобы стало и удобно и безопасно, и может даже красиво, поэтому в данном мероприятии я решил наступить «жабе на горло» и впервые в жизни опубликовать эту мою «системищщу» в open source под GPL, в надежде, что и другие «вайбкодеры» захотят помочь в допиливании начинания. Репозиторий.
ссылка на оригинал статьи https://habr.com/ru/articles/1044412/