Как я создал мессенджер Fire Messenger: от идеи до публикации в RuStore

Как я создал мессенджер Fire Messenger: от идеи до публикации в RuStore

Я — разработчик из России. В 2025 году я решил создать собственный мессенджер. Не потому что миру не хватает ещё одного, а потому что хотелось понять, как устроены такие приложения изнутри. Через полтора года Fire Messenger вышел в RuStore с рейтингом 4.8. Вот как это было.

Почему мессенджер

Идея пришла из простого наблюдения: в России значительная часть Android-устройств работает без Google Services. Huawei, Honor, некоторые модели Xiaomi и Realme — для них Firebase Cloud Messaging не работает. А значит, push-уведомления от большинства приложений доходят не до всех.

Мне захотелось сделать мессенджер, который решает эту конкретную проблему: гарантирует доставку уведомлений на 100% Android-устройств, независимо от наличия Google Services.

Стек технологий

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

Backend: Node.js + Express 5 + Socket.IO + SQLite Мобильное приложение: React Native + Expo SDK 55 Веб-клиент: React 19 + Vite 8

SQLite вместо PostgreSQL — сознательный выбор. Для мессенджера с небольшой аудиторией SQLite проще в обслуживании, не требует отдельного сервера БД и работает быстрее на чтение. Когда пользователей станет больше — можно будет мигрировать.

Expo — потому что он даёт один код для Android, iOS и веб. Для соло-разработчика это критически важно: не нужно поддерживать три отдельные кодовые базы.

Что умеет Fire Messenger

На сегодняшний день в мессенджере есть:

Личные и групповые чаты с текстовыми сообщениями Медиа: фотографии, видео, голосовые сообщения, файлы Стикеры и GIF с персональными коллекциями Реакции на сообщения (40 вариантов эмодзи) WebRTC-звонки — голосовые и видео Stories — исчезающие через 24 часа Исчезающие сообщения с настраиваемым таймером Модерация: система жалоб, роли (пользователь, модератор, администратор) Шифрование: AES-256-GCM для данных в SQLite

Всё это работает на одном сервере с Node.js и SQLite.

Тройной фолбэк push-уведомлений

Это техническая фича, которой я особенно горжусь. Проблема: в России Google Services есть не на всех устройствах. Решение — каскад из трёх провайдеров:

1. FCM (Firebase Cloud Messaging) — основной канал для устройств с Google Services 2. RuStore Push — для устройств с RuStore, но без Google Services 3. Expo Push — универсальный запасной вариант

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

Это заняло больше времени, чем я ожидал. RuStore Push SDK имеет свои особенности: метод checkPushAvailability() не всегда точно определяет доступность push-сервиса. Пришлось добавить обработку ошибок и тихий фолбэк на следующий провайдер.

Публикация в RuStore

Публикация в RuStore оказалась проще, чем я думал. Нужно:

Зарегистрироваться как разработчик Подготовить APK-файл Заполнить описание, скриншоты, политику конфиденциальности Отправить на проверку

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

Сейчас у Fire Messenger 5 оценок и рейтинг 4.8. Это немного, но для проекта без маркетинга — нормальный старт.

Чему я научился

1. SQLite может быть production-ready. Для проекта с тысячей пользователей SQLite работает отлично. Не нужно бежать в PostgreSQL, пока нет реальной нагрузки.

2. Expo — сила и слабость одновременно. Один код для всех платформ — это удобно. Но когда нужны нативные модули (RuStore Push SDK, WebRTC), приходится разбираться с нативной частью Android.

3. Push-уведомления — это сложнее, чем кажется. Казалось бы, отправил токен — получил уведомление. Но на практике: три провайдера, дедупликация токенов, обработка ошибок, миграция legacy-данных.

4. Безопасность важна с первого дня. Я добавил шифрование данных в SQLite (AES-256-GCM), хеширование паролей (bcrypt), JWT-аутентификацию с httpOnly-куки. Лучше заложить это в архитектуру сразу, чем потом переписывать.

5. Один разработчик может сделать много. Backend, мобильное приложение, веб-клиент, push-уведомления, шифрование, модерация — всё это реально сделать в одиночку, если правильно выбрать стек.

Что дальше

Публикация в Google Play (пока только RuStore) Стабилизация и оптимизация Новые фичи по обратной связи от пользователей

Fire Messenger — мессенджер для Android. Скачать можно в RuStore: https://www.rustore.ru/catalog/app/com.fire.messenger Поддержка: support@fireme.su

1