Вы описываете цель, а не техническое решение. Мы задаём вопросы, пока объём работ действительно не прояснится, и фиксируем его письменно до начала разработки. Если считаем, что выбранный путь ведёт не туда, говорим об этом заранее — такой разговор дешевле переделки, которую он предотвращает.
Небольшими и наглядными шагами. Работа попадает на тестовую среду, которую вы можете открыть в браузере в любой момент, а в бой уходит только по вашему слову. Никто не видит готовый продукт впервые в конце проекта — тогда любая правка стоит дорого.
То, что мы делаем, рассчитано на сопровождение: обновления зависимостей, мониторинг и изменения по мере изменения бизнеса. Продолжаем ли это мы или подхватывает ваша команда — согласуется в рамках проекта, а не подразумевается потом. Ничего не строится так, чтобы работать с этим могли только мы.
Возьмётесь ли вы за систему, которую делал кто-то другой?
Сначала читаем существующий код, затем прямо говорим, что дешевле на всём сроке жизни системы — развивать или заменить. Бывают оба ответа: унаследованный код часто вполне здоров и просто плохо задокументирован. Мы не советуем переписывать рефлекторно, потому что переписывание — самое дорогое, что вам могут продать.
На чём вы разрабатываете и как держите качество?
PHP на сервере, TypeScript в браузере, Flutter для iOS и Android, MariaDB для данных, nginx и FrankenPHP для отдачи. Намеренно современные и широко распространённые технологии, чтобы после нас это мог сопровождать кто угодно. Качество держат машины, а не благие намерения: статический анализ работает на самом строгом уровне без списка исключений, плюс более двухсот собственных правил, отклоняющих код, как только он уходит в сторону.