Зачем нужен оффлайн-режим
Мероприятия часто проходят в местах с нестабильным интернетом: конференц-залы в подвальных этажах, площадки на природе, удаленные локации. evntflo обеспечивает полноценную работу организатора даже без подключения к сети.
Оффлайн-режим активируется автоматически при потере соединения. Никаких специальных настроек или действий не требуется.
Что работает оффлайн
Check-in участников
Главный оффлайн-сценарий. Вы можете:
- Сканировать QR-коды билетов
- Искать участника по имени или номеру регистрации
- Отмечать прибытие участника
- Видеть статус check-in (отмечен / не отмечен)
Все отметки сохраняются локально и синхронизируются с сервером, когда интернет станет доступен.
Просмотр списка участников
Полный список зарегистрированных участников доступен оффлайн:
- Имя, email, телефон
- Тип билета
- Статус регистрации и оплаты
- Дополнительные поля из формы регистрации
Данные кэшируются при каждом посещении страницы участников в онлайн-режиме.
Просмотр информации о событиях
Основная информация о ваших мероприятиях доступна оффлайн:
- Название, описание, даты
- Место проведения
- Типы билетов и цены
- Текущее количество регистраций
Просмотр платежей
Список платежей по событию доступен для просмотра оффлайн:
- Сумма и статус
- Метод оплаты
- Дата платежа
Ручная отметка оплаты
Если участник оплачивает на месте (наличными или переводом), вы можете отметить оплату вручную. Отметка сохранится локально и синхронизируется позже.
Что НЕ работает оффлайн
Некоторые операции требуют подключения к серверу и недоступны без интернета:
- Создание новых событий -- требуется генерация slug и проверка уникальности
- Обработка онлайн-платежей -- платежный шлюз недоступен без сети
- Отправка уведомлений -- email и Telegram требуют подключения
- Редактирование формы регистрации -- версионирование формы требует сервера
- Управление командой -- приглашения и роли требуют серверной валидации
- Финансовые отчеты -- расчеты выполняются на сервере
При попытке выполнить недоступное действие система покажет уведомление с объяснением, что требуется подключение к интернету.
Хранение данных
IndexedDB и Dexie.js
Локальные данные хранятся в браузерной базе данных IndexedDB через библиотеку Dexie.js. Основные таблицы:
| Таблица | Содержимое |
|---|---|
events | Информация о мероприятиях |
registrations | Список участников и статусы |
payments | Платежи и транзакции |
syncQueue | Очередь изменений, ожидающих синхронизации |
meta | Метаданные синхронизации (last sync timestamp) |
Шифрование
Все данные в IndexedDB зашифрованы для защиты персональных данных участников:
- Алгоритм: AES-GCM (256-bit)
- Ключ: выводится из учетных данных пользователя через PBKDF2 (100 000 итераций)
- Шифрование/дешифрование выполняется через Web Crypto API на стороне клиента
Данные невозможно прочитать без авторизации в системе. При выходе из аккаунта (logout) локальные данные очищаются.
Подготовка к оффлайн-работе
Хотя оффлайн-режим активируется автоматически, для надежной работы рекомендуется:
- Откройте событие заранее. Перейдите на страницу события и откройте список участников при наличии интернета. Данные закэшируются автоматически.
- Проверьте индикатор синхронизации. Убедитесь, что все данные загружены -- индикатор должен быть зеленым.
- Установите PWA. Установите evntflo на домашний экран устройства для более надежной работы оффлайн.
Совместимость
Оффлайн-режим работает:
- В PWA (установленном на домашний экран) -- наилучший опыт
- В мобильном браузере (Chrome, Safari, Firefox)
- В десктопном браузере
- В Telegram Mini App (с ограничениями, зависящими от клиента Telegram)
Для стабильной работы оффлайн рекомендуется использовать PWA.