Хрысціянскі цэнтры Софія, царква ў Люліне з нядзельным набажэнствам, служэннем для дзяцей, дзвюма біблейскімі школамі і хатнімі групамі. Яны хацелі сайт, які не быў бы падобны ні на адзін царкоўны сайт у Балгарыі і праз які людзі маглі б рабіць ахвяраванні картай, не перапісваючы IBAN.
Гэта быў самы складаны сайт, які мы рабілі ў гэтай катэгорыі, з трох асобных прычын.
Першая, галоўная старонка. Замест меню зверху на ёй фатаграфія пастараў у поўны рост, а вакол іх шэсць круглых кнопак: Сям’я, Каманда, Біблейскія школы, Даведайся больш, Ахвяраваць і Прысвяці сваё жыццё. Круг, самая няўдзячная форма ў вэб-дызайне, бо пры змене памеру экрана ён паводзіць сябе не як прамавугольнік. Шэсць кругоў, якія павінны знаходзіцца вакол чалавека на фатаграфіі, не закрываць яго, не перакрывацца і аднолькава добра чытацца на тэлефоне і шырокім маніторы, перарабляліся больш разоў, чым уся астатняя старонка. Пад імі мы размясцілі лічыльнік, які сам падлічвае, колькі засталося да наступнага набажэнства.
Другая, ахвяраванні. Мы не падключалі кнопку чужой платформы, а напісалі ўласны API: Node і PostgreSQL, асобна ад сайта. Ахвярадаўца выбірае разавае ахвяраванне або партнёрства, а партнёрства можа быць штомесячным або штотыднёвым, гэта значыць падпіскай Stripe, а не разавым плацяжом. Кожны плацеж запісваецца ў базу толькі пасля таго, як Stripe пацвердзіць яго праз webhook, а не калі браўзер вернецца на старонку падзякі, бо браўзер хлусіць. Stripe па задумцы адпраўляе адзін і той жа webhook больш за адзін раз, таму кожная падзея запісваецца па ідэнтыфікатары, а паўторная апрацоўка нічога не запісвае: дубляванае ахвяраванне з’явіцца не можа. Другі і кожны наступны плацеж па штомесячным партнёрстве прыходзіць як рахунок, а не як новая сесія, і захоўваецца ва ўласнай табліцы. Той, хто аддае перавагу банкаўскаму пераводу, бачыць на той жа старонцы атрымальніка, банк, IBAN і BIC, а нумар можна скапіяваць адным дотыкам.
Трэцяя, дызайн. Няма купленага шаблону і няма паўтаральнага лэйаўту: кожная з сямнаццаці старонак зроблена асобна, са сваімі колерамі і сваёй структурай. У школы «Пістіс» ёсць пытанні і адказы, на старонцы ахвяраванняў, чатыры дэкларацыі для ўнясення даных, а служэнне для дзяцей, хатнія групы, каманда і пропаведзі маюць цалкам розны выгляд. Сайт выйшаў у прадукцыю на ccsofia.com у верасні 2026.
Пасля запуску мы таксама зрабілі GEO-аптымізацыю: сайт, гэта Vue-прыкладанне, і кожная старонка вяртала нуль слоў боту, які не выконвае JavaScript, то бок ботам ChatGPT, Claude і Perplexity. Мы напісалі працэс prerendering падчас build, які адкрывае кожны маршрут у браўзеры і запісвае гатовы HTML. Усе семнаццаць з семнаццаці старонак цяпер чытаюцца AI-пошукавікамі.
У кастрычніку 2026 мы дадалі і ўласную CMS. Царква хацела самастойна мяняць час набажэнстваў, адрас, фатаграфіі каманды і будучыя падзеі, не звяртаючыся да нас з кожнай зменай, а англійская версія да таго часу была машынным перакладам, які не працаваў. Наша ўмова была адна: дызайн і HTML сайта павінны застацца ранейшымі да апошняга пікселя. Мы ўсталявалі Directus на тую ж базу даных і апісалі ўвесь сайт як кантэнт: 71 калекцыя, у кожнай старонкі, свае палі, спісы падзей, лідараў, школ і прадметаў, а таксама пераклад кожнага тэкставага поля на дзве мовы.
Рэдактар візуальны: каманда адкрывае сайт унутры панэлі, наводзіць на тэкст, час або фатаграфію, з’яўляецца аловак, пасля чаго можна ўнесці змены і націснуць «Захаваць». Прыкладна праз дзве хвіліны сайт зноў выпякаецца, статычны HTML для Google і AI-пошукавікаў генеруецца нанова, і змена становіцца бачнай без нашага ўдзелу. Пропаведзі па-ранейшаму аўтаматычна прыходзяць з YouTube і хаваюцца адной птушкай. Англійская цяпер сапраўдны пераклад, а не Google Translate, і рэдагуецца з таго ж месца.
Мы далі кліенту мінімальна неабходны доступ: ролю «Рэдактар», якая бачыць толькі візуальны рэдактар, шэсць спісаў і ўласны профіль, без ахвяраванняў, карыстальнікаў і налад. Пароль не менш чым з 12 знакаў, затрымка пры няправільным уваходзе, загрузка толькі фатаграфій і PDF. Перад запускам мы аўтаматычна параўналі DOM усіх 17 старонак да і пасля панэлі: аднолькавы.