Офлайн PWA приложение для походов
Задача: сделать простое, автономное приложение для учёта участников экспедиции — в условиях, где нет ни связи, ни интернета.
Целевая аудитория: организаторы горных экспедиций.
Длительность разработки: ~40 часов.

Что приложение должно уметь
- вести и редактировать список участников
- быстро отмечать участников через сканирование QR-кодов с браслетов
- передавать базу данных (или только изменения) между устройствами других организаторов — тоже через QR-коды и тоже без интернета
Не нативка...
Когда заказчик пришёл с идеей, первым делом встал вопрос: на чём делать? Идеально — конечно, нативное мобильное приложение. Но я в данный момент не разрабатываю нативные приложения ни под Android ни под iOS.
После обсуждений решили: делаем PWA — прогрессивное веб-приложение, которое работает в браузере, но при этом умеет работать офлайн, обращаться к камере и запускать сканер QR-кодов. Это был мой первый опыт разработки offline-first приложения, и стало понятно: идея рабочая, технологии позволяют. Ну а дальше — дело техники.
Дизайн и логика
Начал с проектирования: какие сценарии у пользователей, что им нужно на экране, какие кнопки, где и в каком порядке. Нарисовал прототипы, обсудили с заказчиком, утвердили. После этого сразу в код.

Разработка
Для реализации использовал Nuxt 3. До этого я работал с ним в основном при создании сайтов, но было интересно посмотреть, как он себя поведёт в приложении. Повёл отлично — разработка шла быстро, структура проекта получилась чистой и понятной.

Передача базы через QR-коды? Серьёзно?
Да, звучит диковато — но вполне реально. В условиях, где нет Bluetooth, интернета или локальной сети, нужно что-то надёжное и предсказуемое. Так родилась идея передавать данные через QR-коды.
Если нужно передать всю базу — разбиваем её на несколько QR-кодов. Если только изменения — так вообще всё влезает в один. Немного математики, немного сжатия, и всё работает. Не так уж и безумно, как может показаться на первый взгляд.

Что в итоге?
Сейчас приложение проходит финальное тестирование в реальных условиях — где-нибудь в горах, далеко от цивилизации. Уже работает офлайн, умеет сканировать, передавать и обновлять базу. Получился интересный проект, в котором удалось объединить практичность, удобство и нестандартные технические решения.