Этот сайт является приложением Next.js на двадцати двух языках, которое не работает — не предупреждает — когда страница отсутствует в карте сайта, ключ перевода не разрешается, внутренняя ссылка вызывает полную загрузку страницы, входная анимация достаточно медленна, чтобы читать как стойка, или указанная цена не может быть проверена по живому каталогу. Вы не должны верить нам на слово ни для чего из этого.
| Мера | Стоимость | Источник | Измеряемые |
|---|---|---|---|
| Automated guards that fail the build | 17 | scripts/check-*.ts and scripts/check-*.mjs in the marketing site repository | |
| Translation key literals verified against the dictionary at build time | 1,557 across 470 files | npm run guard:i18n output | |
| Files checked for locale-aware navigation and animation budget | 294 | npm run guard:navigation output | |
| Languages served | 22 | messages/*.json in the marketing site repository | |
| Maximum permitted entrance animation duration | 0.3s, with per-item delay capped at 0.15s | scripts/check-client-navigation.mjs | |
| Programmatic content pages generated from typed data | 132 (37 industries, 45 integrations, 9 comparisons, 41 glossary terms) | app/lib collection directories |
Чему здание нас научило
Каждое агентство заявляет, что его сайты быстро и хорошо построены. Претензия не подлежит подделке в точке продажи, поэтому она делается так свободно. Мы предпочитаем быть проверяемыми: откройте инструменты разработчика, запустите аудит, прочитайте карту сайта, переключите язык, проверьте структурированные данные. Сайт является аргументом.
Это не забота, а принуждение. Забота ухудшается; шестой человек, который прикасается к кодовой базе, не знает правил, и никакая документация не исправляет это. Так что правила являются исполняемыми. Семнадцать скриптовых охранников запускаются до создания образа контейнера, и сбой останавливает развертывание. Один охранник проходит по папкам маршрутов и сходит с ума, если существует страница, которая не указана в карте сайта— так что страница не может быть тихо запущена и никогда не будет представлена в поисковую систему. Другой разрешает каждый буквальный ключ перевода в исходном тексте по английскому словарю. Другой сканирует внутренние ссылки, которые не соответствуют локали, потому что одна из них в общем нижнем колонтитуле вызывает перезагрузку всего документа на каждой странице сайта.
Страж производительности является наиболее стоящим украсть. Страницы здесь ранее отправляли десятки элементов с нулевой непрозрачностью и выцветали их в mount, с задержкой, умноженной на индекс — так что десятая карта в списке закончил прибыть более чем за полторы секунды после клика. Сеть никогда не была проблемой; анимация решала, когда страница выглядела готовой. Страж теперь ограничивает длительность входа и задержку на элемент, и освобождает по-настоящему окружающие петли. Ничего о том, что показывает в сборке, проверке типа или lint запуска.
Интернационализация более строгая, чем большинство сайтов, которые утверждают об этом. Страница, копия которой не была фактически переведена на язык, показывается на английском языке под префиксом этого языка, указывает свой канонический тег на английский оригинал и намеренно не включается в карту сайта этого языка, потому что ее представление в поисковую консоль будет означать, что она является дубликатом, который не может быть индексирован. Правило вычисляется из самого словаря: язык считается переведенным для раздела только тогда, когда он содержит по крайней мере девяносто процентов строк этого раздела и менее тридцати процентов из них идентичны английскому по байтам, и именно так мы обнаруживаем поставщика перевода, тихо отражающего исходный текст.
Построен с
- Next.js
- React
- TypeScript
- Tailwind CSS
- next-intl
- Content Security Policy
- Trusted Types
Для чего это нас квалифицирует
Расскажите нам, что вы пытаетесь сделать
Обычно достаточно короткого разговора, чтобы узнать, являемся ли мы подходящими людьми. Если нет, мы скажем вам об этом и покажем вам куда-нибудь лучше.
