Современная форма - это комплекс решений, в разных областях. И поставить один модуль который решит проблему - не возможно в принципе. Каждый специалист может собрать свою часть. Но без архитектора который скажет как это скрутить в кучу, будет велосипед с квадратными колесами - ехать можно но по специальной дороге.
Разметка:
пишу всегда вручную;
длинные селекты тянутся из базы посредством шаблонизатора (например серверного TWIG);
прописываю полностью с атрибутами валидации HTML5 (благо все современные браузеры потдерживают);
выдумывать JS-велосипеды для валидации не стоит уже давно;
для зависимых полей пока есть простой js-клаcс сверяющий их.
drag&drop файлов давно уже работает без JS;
для подгрузки изображений в страницу на стороне клиента js-класс.
Стили:
один раз прописаны стили для разных-форм на уровне тегов и взаимоотношений тегов (в итоге все формы на сайте виглядят в одном стиле);
класы только для самой формы, определяет как одна выводится: локально, модально или в теле контента;
В данном случае, если не предполагается обширного списка исключений и особых случаев, не вижу ничего плохого в решении "в лоб". Просто и понятно. Зачем мудрить на пустом месте? Чтобы потом сочинять мега-запросы с несколькими джойнами?
Хуже, если нужно учитывать много особых случаев. Например, другой режим работы в предпраздничные дни или по вторым понедельникам каждого месяца. Тогда видимо, придется делать таблицу примерно такого вида: id магазина; id записи; несколько полей описывающих условия; время.
именно так, всё сразу открывай и читай. это может и не цельные учебники но тем не менее дают хорошее понимание о том, с чем придется иметь дело. к тому же во многих статьях приводятся куски кода. если знаешь математику первого курса то считай что 90% изучено.
https://golang.org/pkg/encoding/json/#Marshal
"String values encode as JSON strings coerced to valid UTF-8, replacing invalid bytes with the Unicode replacement rune. The angle brackets "<" and ">" are escaped to "\u003c" and "\u003e" to keep some browsers from misinterpreting JSON output as HTML. Ampersand "&" is also escaped to "\u0026" for the same reason. "
Вам ничего не мешает использовать только один UICollectionView, он вполне может выглядеть как UITableView, анимацию можно сделать поколдовав с layout-ами этого collection view