Фотостудия на Кипре снимает свадьбы, семьи и предметку для небольших брендов. После съёмки клиент садится в студии за экран и выбирает кадры для обработки. Программу для этого отбора переписал Евгений Росляков. С 2016 года делаю сайты и программы, работаю по договору как самозанятый, закрывающие документы отправляю после каждого этапа. Сам в Москве, а студия на Кипре, так что весь проект шёл удалённо.
В студии три рабочих места и два ноутбука фотографов. Администратор работает на Windows. Ретушёр сидит за старым iMac, на котором стоит Mac OS X без обновлений. У фотографов новые ноутбуки с актуальной Mac OS. Программа отбора должна была работать везде.
Первую версию лет десять назад написал знакомый программист на Swing (Java). Она умела показывать кадры, ставить отметки «в обработку» и «в печать» и считать стоимость. Потом он же начал переписывать её на JavaFX, сделал половину и пропал. Так в студии появились две программы: старая, которая работала, но выглядела как бухгалтерия начала двухтысячных, и новая, где нельзя было сохранить заказ.
На новых Mac обе версии требовали ставить отдельную Java и ругались при запуске. Клиент за экраном видел системные окна с предупреждениями, а это не тот момент, когда хочется показывать технические проблемы.
Выбрал Electron JS. Одна программа собирается для Mac и Windows, интерфейс делается обычными веб-технологиями, а с файлами на диске работает так же уверенно, как настольное приложение. Для студии было важно и то, что следующие правки сможет сделать любой веб-разработчик, а не только специалист по Java.
Сначала разобрал обе старые версии. Из Swing-версии взял логику: формат файла заказа, правила расчёта цены за кадр и пакет, отметки. Из JavaFX-версии — то немногое, что успели сделать хорошо: удобный просмотр двух кадров рядом. Ни строчки кода не переносил, но поведение повторил там, где оно нравилось студии.
Главный экран — сетка кадров съёмки. Миниатюры генерируются при импорте папки и кэшируются, поэтому съёмка на тысячу кадров открывается сразу, а не через минуту. Клиент листает стрелками, ставит сердечко на понравившиеся, сравнивает два похожих кадра рядом. Внизу всё время видно, сколько выбрано и сколько это стоит по пакету.
Интерфейс для клиента сделал отдельным режимом. В нём нет меню, настроек и путей к файлам — только кадры, отметки и кнопка «Готово». Выйти из режима может только администратор.
Заказ сохраняется в общую папку студии в том же формате, что и раньше. Ретушёр открывает его и получает список файлов для обработки. Старые заказы прошлых лет открываются без конвертации.
Сборку для Mac OS подписал и заверил через учётную запись разработчика студии, поэтому программа запускается без предупреждений системы. Для Windows сделал обычный установщик. Обновления скачиваются сами и ставятся при следующем запуске.
Клиент студии видит аккуратную программу без системных окон и предупреждений. Отбор кадров стал частью сервиса, а не технической паузой. Администратор говорит, что клиенты выбирают быстрее: сравнение рядом снимает долгие сомнения между двумя почти одинаковыми кадрами.
Вместо двух полусломанных версий одна программа на всех компьютерах, кроме одного. О нём честно.
Старый iMac ретушёра работает на Mac OS X такой давней версии, которую современный Electron не поддерживает. Обновить систему на этом железе нельзя. Ретушёр пока открывает заказы в старой программе на Swing в режиме только для чтения: формат файлов общий, поэтому это работает. Когда студия заменит компьютер, старая программа уйдёт полностью.
Код программы лежит в репозитории студии, с описанием сборки и подписи. Следующим шагом студия хочет онлайн-отбор для клиентов, которые не могут приехать. Интерфейс уже написан на веб-технологиях, поэтому его можно вынести в браузер без переделки.
Если у вас старая программа на Java, которая плохо живёт на новых Mac, напишите мне через freelance.ru. Расскажите, что она делает, и я предложу, на чём её пересобрать.