siberian byte

Know Where: один учёт вещей на несколько телефонов

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

Платформа
Android
Проект
свой, в магазинах нет
Данные
Firebase, за рубежом
Для кого
пользователи вне России

01 / Задача

Дома, на складе или в гараже вещи лежат по шкафам и коробкам, а где что, помнит один человек. Нужен общий учёт, в котором каждый найдёт вещь и сможет её переложить.

Сложность не в экранах, а в общих данных. Двое правят одно и то же с разных телефонов, у одного нет сети, третьему можно только смотреть. Ни одна правка не должна потеряться, ни одна удалённая вещь — вернуться.

02 / Что сделано

  • Вход через Google или без аккаунта. Без аккаунта дом хранится только на телефоне. После входа его можно перенести в облако, и QR-наклейки, напечатанные раньше, продолжают работать.
  • Четыре роли: владелец, админ, редактор и наблюдатель. Владелец и админ приглашают ссылкой и сразу выбирают роль, владелец может передать дом другому участнику.
  • Права проверяет сервер, а не приложение, и правила доступа закрыты автотестами. Удалённый участник теряет доступ на всех своих телефонах, а его неиспользованные приглашения перестают работать.
  • Без сети приложение работает полностью. Изменения копятся в очереди на телефоне и уходят на сервер, когда появится сеть. Очередь не теряется, даже если приложение закрыли.
  • Порядок правок задаёт время сервера, а не часы телефонов. Если двое поменяли разные поля одной вещи (один переложил, другой переименовал), сохранятся обе правки. Удалённое не возвращается.
  • Фото сжимаются до 200 КБ и хранятся в той же базе, отдельное файловое хранилище не нужно.
  • QR-наклейки на полки и коробки, штрихкоды на вещах. По фото вещи Gemini предлагает название и заметку. Интерфейс на английском и русском.

03 / Что получилось

4роли, у каждой свои права, и проверяет их сервер
50автотестов на правила доступа к данным
129тестов синхронизации: правки без сети, переезд вещи, удаление, смена роли

04 / Как шла работа

  1. ОсноваМодули приложения, вход через Google, экраны дома, шкафа и вещи
  2. СинхронизацияРабота без сети, обмен с сервером, роли и приглашения, правила доступа
  3. ВещиРаспознавание по фото, несколько фото у вещи, QR-коды и штрихкоды
  4. ЯзыкиАнглийский и русский интерфейс

05 / Если понадобится больше

Пользователи в России — сервер в России

Firebase хранит данные за рубежом, а Gemini из России недоступен. Поэтому в таком виде приложение подходит для зарубежной аудитории. Для россиян синхронизацию нужно перенести на свой сервер в России, а распознавание — на YandexGPT или GigaChat. Firebase подключён в одном слое: экраны, база на телефоне и очередь изменений от него не зависят. Заменить нужно обмен с сервером и правила доступа.

Стек: Kotlin · Jetpack Compose · Hilt · Room · Firebase Auth · Cloud Firestore · Firebase AI Logic · Gemini · App Check · CameraX · ZXing

Нужно такое же?

Общий доступ и работа без сети в вашем приложении

Расскажите, кто и с какими данными будет работать — скажу, как это устроить и где хранить данные.

Написать в Telegram