«Тяжеловато». Как принципы повлияли на разработку

Неделю назад я начал помогать Вадиму с разработкой приложения для учёта расходов. Это моё третье приложение на Реакте, буду делиться с вами опытом, идеями и процессом. Первый пост — про принципы.

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

Принцип №1. Интерфейс не страшно пересобрать заново. Гибкая архитектура, быстрая обратная связь

Чтобы получить гибкий прототип, мы выбрали Реакт с Флаксом. Такая связка помогает забыть про рутину и сконцентрироваться на основных алгоритмах.

Реакт — это конструктор Лего. Есть кубики — компоненты приложения. Есть инструкции — алгоритмы, которые пишу я. Реакт сам собирает экраны приложения по инструкциям: «возьми квадратные кубики и собери мне из них экран синего цвета».

Флакс следит за изменениями в приложении и корректирует инструкции. Действие пользователя, реакция интерфейса или результат формулы — всё автоматически попадает в инструкции. Реакт видит изменения в инструкциях и заменяет детали на экране.

Такой прототип выдерживает любые изменения. Мы дважды перепиливали интерфейс и один раз — архитектуру. При этом с нуля мы писали только новую логику работы — компоненты используем заново.

Принцип №2. Приложение работает с плохим интернетом и вообще без него

Частенько в магазинах телефон слабо ловит интернет. Приложение для учета расходов не работает в магазине — жесть и шиза. Поэтому мы сохраняем стили, скрипты и картинки в кэш телефона. В итоге после первой загрузки приложение работает без интернета. Как — расскажу в следующем посте.

Принцип №3. Пользовательские данные священны

До конца проблема не решена. Мы записываем все расходы и храним их в памяти телефона. Всё работает до тех пор, пока человек не стёр историю браузера. Это всё портит.

Мы написали свой бекенд, но быстро поняли, что пока не знаем, как обезопасить данные у себя на сервере. Хранить информацию о чужих деньгах — большая ответственность.

Мы думаем в сторону Дропбокса. До этого хотели хранить в Гугл-таблицах, но они закрыли авторизацию. Если у вас есть идеи, что можно использовать, как бэкенд, пишите: bespoyasov@me.com

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