Веб-приложение с аналитикой рекламных кампаний для владельцев сайтов. Возможность создавать рекламные компании, строить отчеты.
Когда начинался проект, мне его преподнесли как долгосрочный, с большим количеством страниц. В связи с чем были принятны архитектурные решения, которые позволили наращивать кодовую базу таким образом, что бы приложение не рухнуло под собственной тяжестью. Я разработал архитектуру приложения, распланировал этапы работ, согласовал с менеджерами и приступил к работе. Когда я сказал, что справлюсь за полгода мне не особо поверили. Но в итоге к новому году заказчик увидел релиз в котором было 90% изначально задуманного функционала (10% всякие мелочи). На тот момент я понимал, что проект который я делаю есть часть большей системы приложений, которая пока еще существовала в зачаточном состоянии. Поэтому я разработал библиотеку компонентов и вынес ее в отдельный проект. Сама библиотека представляла собой набор компонентов с возможностью темизации (спасибо tailwindcss) и storybook с документацией для будущих поколений разработчиков. Я понимал, что этот проект будет передан на поддержку junior/middle разработчику и позаботился о том, что бы облегчить тому разработку и понимание архитектуры. Затем я разработал слой доступа к данным и слой хранящий состояние приложения. Написал хелперы для их объединения в один класс, для того что бы запрашиваемые данные автоматически сохранялись в state. Таким образом у меня получилось ядро приложения на основе котого можно было собирать новые модули как в конструкторе. Для верстки я использовал заранее заготовленные мною компоненты, а для интеграции с API применял созданный слой доступа к данным. Когда тот присоединялся к state, становилось возможным отображать данные в разметке получая их из состоняния с помощью селекторов. Таким образом у меня получалось собирать модули, которые состояли из надежного, протестированного кода и кода бизнес логики для конкретного модуля. Но были и такие, где нужны были лишь CRUD операции и такие получалось делать буквально на коленке за пару часов, которые уходили просто на набирание кода.
В итоге я закончил проект и ушел на другой. На этом остался junior разработчик, который из моих компонентов и хелперов, как из конструктора, собирал новые модули. Компания хорошо сэкономила на поддержке проекта, она ей практически ни во что не обходится, ведь нет наценки за баги, которые неизбежно возникают для длительных проектах и нет срывов сроков, потому что код ведет себя предсказуемо.
Я мог бы много еще рассказать интересного о том, как делал систему отчетов, как делал сложные виджеты с графикой и перетаскванием, но это скорее тема для статьи для блога.
Главное проект работает и радует клиентов компании.