sandwor — персональный сайт-портфолио с главной страницей, разделами проектов, заметок и контактов, а также блогом, который автоматически подтягивает публикации из Telegram-канала. Проект построен на Next.js 14 и использует App Router, чтобы быстро отдавать статические страницы и при этом держать контент блога актуальным без ручного копирования постов.
Технические решения
Архитектура организована по Feature-Sliced Design: роутинг вынесен в слой app, бизнес-сущности разделены по entities, а крупные блоки страниц собраны в widgets и views. Локализация сделана через next-intl с режимом localePrefix: 'never', поэтому язык переключается cookie-переключателем без префиксов в URL, а тема оформлена через next-themes с защитой от hydration mismatch на клиенте.
Сложности
Самая нетривиальная часть — интеграция с Telegram: посты парсятся с публичной страницы канала, очищаются от эмодзи и сервисных сообщений, получают заголовок из первого <b>-блока, а затем кешируются через react.cache() и revalidate на час. Для быстрого обновления контента без полного ребилда добавлен webhook, который сбрасывает тегированный кеш при новом посте.