Как я в одиночку пересобрал сайт турагентства за 110 днейHow I rebuilt a travel company's site alone in 110 days
Старый магазин на Shop-Script не умел считать стоимость туров. Я пересобрал сайт с нуля: каталог туров и отелей, движок тарифов, CRM, личный кабинет турагента, оплата по QR-коду. Позиции в поиске сохранил: настроил 500+ редиректов со старых адресов.
The old Shop-Script store couldn't price tours. I rebuilt the site from scratch: tour and hotel catalog, tariff engine, CRM, travel-agent portal, QR payments. SEO kept intact with 500+ redirects from old URLs.

ЗадачаProblem
Старый сайт — обычный интернет-магазин на Shop-Script: тур там был «товаром», а дата — «вариантом товара». Магазин не умел считать бронь «дата × люди × тип номера», а плагины держались на честном слове. При этом терять позиции в поиске было нельзя.
The old site was a stock Shop-Script store. A tour was a "product", a date was a "variant". It couldn't price a booking as "date × guests × room type". Plugins were held together with tape. And we couldn't lose search rankings.
Как работалHow I worked
Работал спринтами. План переписал 16 раз ещё до первой строки кода. Задачи делил на три группы: «MVP», «вторая очередь», «выкинуть». Автопроверки не дают закрыть задачу, пока тесты красные.
Sprints, and a plan that went through 16 revisions before the first line of code. Scope cut into "MVP / phase 2 / drop". Automated checks block closing a task while tests are red.
Что внутриWhat's inside
222 предложения222 live offers
Отели, экскурсии, туры, оздоровление, концерты. Сезонные тарифы, дополнительное место, раннее бронирование. Цены в евро пересчитываются в рубли по курсу ЦБ.
Hotels, excursions, tours, spa, concerts. Tariffs with seasons, extra beds and early booking. EUR prices → RUB at the central-bank rate.
35 экранов админки35 admin screens
Единая воронка заявок и заказов. Видно, откуда пришёл клиент, сколько стоила реклама и какая маржа.
One funnel for leads and orders. Shows where each client came from, ad cost and margin.
Личный кабинет турагентаAgent portal
Агент сам регистрируется, получает счета в евро и отчёты.
Agents self-register and get EUR invoices and reports.
QR через СБПSBP QR payments
Банк сразу сообщает сайту об оплате. Можно платить частями. Ваучеры и счета — в PDF.
Bank webhooks, partial payments, PDF vouchers and invoices.
Переезд без потерьLossless migration
516 редиректов, микроразметка, фид для Яндекс Бизнеса. Мобильная оценка Lighthouse — 95.
516 redirects, structured data, Yandex Business feed. Mobile Lighthouse — 95.
Тесты и CITests and CI
~325 автотестов, проверки на каждый коммит, свой сервер, бэкапы, мониторинг доступности.
~325 automated tests, checks on every commit, own server, backups, uptime monitor.
ИтогResult
- 110 дней в одиночку: 3 июня — первый коммит, 21 сентября — боевой запуск.
- Студия заложила бы на такой объём 6–10 месяцев и команду из 3–5 человек.
- Все затраты — моя зарплата и подписка на Claude.
- 110 days, one person: first commit on June 3, live on September 21.
- At market rates a studio would quote 6–10 months and a team of 3–5.
- Cost: my salary plus a Claude subscription.
Что не получилосьWhat didn't work
Мгновенное бронирование отелей. На Балканах гостиницы часто подтверждают бронь вручную. Поэтому сразу оплатить заказ можно не везде.
Instant hotel booking. Balkan hotels often confirm bookings by hand, so pay-on-order only works for part of the catalog.