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

Publisher Platform

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

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

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

Я мог бы много еще рассказать интересного о том, как делал систему отчетов, как делал сложные виджеты с графикой и перетаскванием, но это скорее тема для статьи для блога.

Главное проект работает и радует клиентов компании.

Технологии: SvelteJS, TailwindCSS


F8fb67afec 9760ad5956 1ec95d948c D71351f2e2 0188ec7698 Ff5e09cfe5 8c6f126f0e 4d2c78fc31 0c7b049b4f 93013b254e 845b981005 27fb0a571a Fbcb6b0f06 C8b1e74218 E057c66963 Ae4365182a 19278a541f 8957571f44 Ce47c2b463 Ed9c9603d0 12723213c4