Know Where: один учёт вещей на несколько телефонов
Своё приложение для учёта вещей по шкафам, полкам и коробкам. На нём я отработал общие данные: несколько человек ведут один учёт с разных телефонов, в том числе без сети, а права каждого проверяет сервер.
- Платформа
- Android
- Проект
- свой, в магазинах нет
- Данные
- Firebase, за рубежом
- Для кого
- пользователи вне России








01 / Задача
Дома, на складе или в гараже вещи лежат по шкафам и коробкам, а где что, помнит один человек. Нужен общий учёт, в котором каждый найдёт вещь и сможет её переложить.
Сложность не в экранах, а в общих данных. Двое правят одно и то же с разных телефонов, у одного нет сети, третьему можно только смотреть. Ни одна правка не должна потеряться, ни одна удалённая вещь — вернуться.
02 / Что сделано
- Вход через Google или без аккаунта. Без аккаунта дом хранится только на телефоне. После входа его можно перенести в облако, и QR-наклейки, напечатанные раньше, продолжают работать.
- Четыре роли: владелец, админ, редактор и наблюдатель. Владелец и админ приглашают ссылкой и сразу выбирают роль, владелец может передать дом другому участнику.
- Права проверяет сервер, а не приложение, и правила доступа закрыты автотестами. Удалённый участник теряет доступ на всех своих телефонах, а его неиспользованные приглашения перестают работать.
- Без сети приложение работает полностью. Изменения копятся в очереди на телефоне и уходят на сервер, когда появится сеть. Очередь не теряется, даже если приложение закрыли.
- Порядок правок задаёт время сервера, а не часы телефонов. Если двое поменяли разные поля одной вещи (один переложил, другой переименовал), сохранятся обе правки. Удалённое не возвращается.
- Фото сжимаются до 200 КБ и хранятся в той же базе, отдельное файловое хранилище не нужно.
- QR-наклейки на полки и коробки, штрихкоды на вещах. По фото вещи Gemini предлагает название и заметку. Интерфейс на английском и русском.
03 / Что получилось
04 / Как шла работа
- ОсноваМодули приложения, вход через Google, экраны дома, шкафа и вещи
- СинхронизацияРабота без сети, обмен с сервером, роли и приглашения, правила доступа
- ВещиРаспознавание по фото, несколько фото у вещи, QR-коды и штрихкоды
- ЯзыкиАнглийский и русский интерфейс
05 / Если понадобится больше
Пользователи в России — сервер в России
Firebase хранит данные за рубежом, а Gemini из России недоступен. Поэтому в таком виде приложение подходит для зарубежной аудитории. Для россиян синхронизацию нужно перенести на свой сервер в России, а распознавание — на YandexGPT или GigaChat. Firebase подключён в одном слое: экраны, база на телефоне и очередь изменений от него не зависят. Заменить нужно обмен с сервером и правила доступа.
Стек: Kotlin · Jetpack Compose · Hilt · Room · Firebase Auth · Cloud Firestore · Firebase AI Logic · Gemini · App Check · CameraX · ZXing
Нужно такое же?
Общий доступ и работа без сети в вашем приложении
Расскажите, кто и с какими данными будет работать — скажу, как это устроить и где хранить данные.
Написать в Telegram