Архитектура

Что значит local-first для тренировочного приложения

Local-first — не лозунг о приватности. Это решение о том, где живёт главная копия, и всё остальное следует из него.

Главный экран cronoWiz: мозаика разделов «Сила», «Кардио», «Инструменты», «Настройки», «Прогресс» и «Дневник»

В привычной схеме сервер держит настоящую копию, а телефон — кэш. Вы открываете приложение при плохой связи и видите крутящийся индикатор, потому что того, на что вы смотрите, там на самом деле нет. Local-first переворачивает это: настоящая копия у устройства, расчёты идут там же, а сеть становится тем, что вы используете намеренно, а не тем, от чего зависите.

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

Цена в том, что синхронизация становится явной. Нет невидимого процесса, сводящего устройства; есть зашифрованный файл, который вы экспортируете, или передача, которую вы запускаете. Это честнее и немного больше работы — таков обмен, на который идёт cronoWiz.

  • Оригинал у устройства

    в IndexedDB лежат настоящие данные, а не кэш чего-то удалённого.

  • Открывается мгновенно

    ничто не ждёт ответа сервера, прежде чем первый экран станет рабочим.

  • Синхронизация — решение

    зашифрованный файл или прямая передача, запущенная вами.

  • Модель не требует аккаунта

    без сервера, хранящего истину, личность просто не для чего использовать.

Бесплатно. Приватно. Ваше.

Никакого аккаунта. Никакого сервера. Никаких cookie. Только вы, ваш телефон и приложение, которое занимается своим делом. cronoWiz — бесплатное PWA, работающее целиком на вашем устройстве: ваши данные никуда не уходят. Никогда.

Вопросы, которые задают на самом деле

Local-first означает вообще без интернета?

Нет. Карты, интернет-радио и однократная загрузка модели используют сеть. Разница в том, что приложение продолжает работать, когда их нет, потому что ни одно из них не хранит ваши данные.

Что происходит на втором устройстве?

У него своя копия. Вы сводите их, перенеся резервную копию или открыв прямую передачу, а импорт сопоставляется по идентификаторам, так что одна и та же сессия не появится дважды.

Это то же самое, что offline-first?

Близко, но не одно и то же. Offline-first — про то, чтобы пережить потерю связи; local-first — про то, какая копия главная. cronoWiz — и то и другое, и именно второе снимает нужду в аккаунте.