R50 0d5dc8088761183b9f33edac8fd3b083
Веб-разработка

Publisher Platform

Добавлено 30 июн 2022 в 22:14
**Веб-приложение для аналитики рекламных кампаний владельцев сайтов**

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

Когда проект только запускался, он позиционировался как долгосрочный с большим количеством страниц. Это потребовало принятия архитектурных решений, позволяющих масштабировать кодовую базу без риска перегрузки приложения. Я тщательно спланировал этапы работ и согласовал их с менеджерами. Несмотря на первоначальный скептицизм относительно заявленных мной сроков, к Новому году заказчик получил релиз с 90% запланированного функционала.

Для нужд этого и будущих проектов я разработал общую библиотеку компонентов с возможностью темизации (благодаря Tailwind CSS) и задокументировал её с помощью Storybook для последующих поколений разработчиков. Понимая, что проект будет передан на поддержку junior/middle разработчику, я уделил особое внимание тому, чтобы упростить ему процесс разработки и понимание архитектуры.

Были созданы слои доступа к данным и управления состоянием приложения, а для их интеграции разработан специальный модуль, ставший аналогом RTK Query. Это позволило быстро интегрироваться с API, используя все преимущества механизмов управления состоянием и побочных эффектов.

В результате все модули состояли из надёжного, протестированного кода и бизнес-логики, основанной на проверенных помощниках. Для реализации простых CRUD-операций требовалось минимальное время — буквально пару часов на написание кода. Прочный фундамент был заложен, и junior-разработчик смог легко создавать новые модули из существующих компонентов, как из конструктора. Это значительно снизило затраты на поддержку и развитие проекта, а количество багов оставалось в пределах, комфортных для дальнейшего развития.

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

Я горжусь этим проектом и доволен полученным результатом, но ещё больше — приобретённым опытом.
F8fb67afec 9760ad5956 1ec95d948c D71351f2e2 0188ec7698 Ff5e09cfe5 8c6f126f0e 4d2c78fc31 0c7b049b4f 93013b254e 845b981005 27fb0a571a Fbcb6b0f06 C8b1e74218 E057c66963 Ae4365182a 19278a541f 8957571f44 Ce47c2b463 Ed9c9603d0 12723213c4