Как я создал мессенджер 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