Albumo: разработка мобильного приложения для приватного хранения и шеринга фото с близкими

Задача
Клиент и его партнёры пришли с идеей: приложение, где можно хранить фотографии и открывать к ним доступ конкретным людям.
Мы всегда начинаем такие проекты с Discovery-фазы: раскладываем идею на прототипы, пользовательские истории и архитектуру до того, как переходить к разработке. На старте у клиента было только описание идеи без технической проработки, поэтому Discovery здесь был особенно важен — именно на нём родились принципы, которые определили весь продукт:
Простота
Минимум экранов и действий, крупные понятные элементы.Чёткая граница между «моим» и «доступным»
Личные фото и то, чем поделились с тобой, никогда не смешиваются.Осознанное взаимодействие вместо навязчивости
Никаких автоматических Stories и всплывающих уведомлений; пользователь сам решает, что показать.Фокус на наполнении
Фото — главное, интерфейс — вторичен.
Аудитория продукта — семьи, включая детей и пожилых пользователей, поэтому простота была обязательным требованием.
Продукт: что мы построили
Был реализован небольшой набор функций, каждая из которых выполняет одну очевидную задачу — фотографии хранятся в одном месте, альбомы представляют собой кураторские виды на них, а доступ предоставляется человеку по человеку.

Личное и общее не смешиваются

Доступ закрывается мгновенно

«Показать»: временные публикации внутри альбома

Реакции, избранное и лента активности

Поиск
Модель монетизации и рынок
Клиент планирует зарабатывать на продаже дополнительного объёма хранилища и подписках, в том числе семейных, а в перспективе рассматривает печать физических фотоальбомов.
Здесь важна точность позиционирования: цена самого хранилища на рынке уже низкая и заранее проиграна крупным игрокам — например, 2 ТБ в семейном тарифе iCloud+ обходятся примерно в $9.99 в месяц на шесть человек. Конкурировать по цене гигабайт с такими игроками бессмысленно. Ценность Albumo — в приватном обмене фото с конкретными людьми без пересылки по мессенджерам, и именно это позиционирование клиент вынес на свой лендинг — мы считаем его верным.
По данным опросов 2026 года, треть пользователей соцсетей не уверены, что их данные вообще защищены, — растущий запрос на приватность играет на руку продукту, у которого она заложена в основу с первого дня разработки.
Как это устроено внутри
Идея Albumo простая, и это осознанный выбор клиента — но простая идея не означает простую разработку. Именно там, где продукт выглядит интуитивно понятным (открыл фото, поставил лайк), обычно скрыта самая требовательная инженерия: приватность, скорость и надёжность работают незаметно для пользователя только тогда, когда под капотом всё продумано. Дальше расскажем, как именно.
Ссылки на фото постоянно меняются, а само фото — нет
Мы решили это через кэширование по отпечатку самого изображения (perceptual hash, он же pHash): вместо адреса файла приложение запоминает уникальный «отпечаток» фотографии и хранит её локально под этим отпечатком. Если фото уже сохранено на устройстве, оно открывается мгновенно и без обращения к серверу. Тот же отпечаток мы используем и на сервере — для дедупликации, о которой ниже.

Приватность встроена в API, а не добавлена поверх

Одна фотография — один файл на сервере

Переход к полноэкранному фото — своя анимация с нуля

Тысячи фото в галерее не тормозят и не «моргают»

Загрузка в облако переживает потерю интернета

Изменения сами долетают до всех нужных экранов
Мы построили внутри приложения систему доменных событий: когда что-то меняется (например, фото удалено), об этом рассылается событие, а каждый экран, которому это важно, сам решает, обновляться ли ему. Экраны остаются независимыми друг от друга, а данные — везде актуальными.

Приватное хранилище и CDN обычно не совместимы — мы это совместили

Стек технологий
Мы сознательно выбирали самые новые версии инструментов там, где это давало реальный выигрыш в скорости и удобстве разработки, а не просто «последнюю версию ради версии».
Mobile:
- React Native 0.82 на New Architecture (Fabric + TurboModules) с Nitro Modules и React Compiler — самый современный слой React Native, без легаси-моста между JS и нативным кодом; React 19, TypeScript.
- Состояние и данные — Zustand с MMKV для мгновенного локального хранения, TanStack Query v5 для работы с сервером, Orval для автогенерации API-клиента по OpenAPI-схеме (клиент и бэкенд не расходятся в контракте).
- UI и анимации — React Navigation v7, Reanimated 4 с Worklets, собственные жесты на react-native-gesture-handler, FlashList и @legendapp/list для быстрых длинных списков, turbo-image для нативного кэширования изображений.
- Push и рост — Firebase Messaging с Notifee, Universal Links и Play Install Referrer (чтобы корректно отслеживать, откуда пришёл новый пользователь — это тоже задел под будущую реферальную программу), AppMetrica, i18next для мультиязычности.
Backend:
- PHP 8.4, Laravel 12 на Octane с OpenSwoole — приложение держится резидентно в памяти между запросами вместо перезапуска фреймворка на каждый вызов, что даёт заметно меньшие задержки под нагрузкой.
- PostgreSQL, Redis, Docker. Строгая слоёная архитектура (Controller → Service → Repository), типизированные DTO на Spatie Laravel Data для контракта с мобильным приложением, ролевая модель доступа на Spatie Laravel Permission.
Медиа и поиск:
S3-совместимое хранилище с CDN, imgproxy для генерации превью по подписанным ссылкам, perceptual hash (pHash) для дедупликации и кэширования на мобильном, полнотекстовый поиск на Meilisearch.
Аутентификация:
Laravel Sanctum, одноразовые коды через SMS с каскадной отправкой (SMS → звонок при сбое), валидация номеров телефона через libphonenumber, геолокация по IP через MaxMind GeoIP2.
Качество:
Статический анализ кода (Pint, PHPStan), backend API покрыт e2e-тестами, ключевые компоненты — дополнительно unit-тестами (например, генератор перцептивных хэшей).
Похожий опыт работы с большими объёмами медиафайлов и покупками внутри продукта есть в кейсах SmilesOn (веб-платформа на React/Next.js для хранения, отбора и покупки фотографий) и Yoga Stacks (мобильное приложение на React Native с оптимизацией изображений и подписками).
Команда







Запросите бесплатную консультацию, чтобы мы оценили ваш текущий проект и предложили план развития
Максим Б. CEO
Тайминги
Проект стартовал с Discovery-фазы, из которой выросла детальная спецификация с эпиками и пользовательскими историями. Дальше — полный цикл: дизайн, бэкенд, мобильная разработка, тестирование. MVP уже выпущен в продакшен и доступен в сторах.

Результаты
MVP полностью реализован и выпущен в продакшен — приложение доступно в App Store и Google Play.