sandwor is a personal portfolio site featuring a home page, projects, notes, and contact sections, plus a blog that automatically pulls posts from a Telegram channel. Built on Next.js 14 with App Router to serve static pages fast while keeping blog content fresh without manual copy-pasting.
Technical decisions
The codebase follows Feature-Sliced Design: routing lives in the app layer, business entities in entities, and larger UI blocks in widgets and views. Localisation is handled by next-intl with localePrefix: 'never', so the language switches via a cookie toggle with no URL prefixes. Theming uses next-themes with hydration-mismatch protection on the client.
Challenges
The trickiest part was the Telegram integration: posts are parsed from the channel's public page, stripped of emoji and service messages, given a title from the first <b> block, then cached via react.cache() and revalidate for one hour. A webhook was added to purge the tagged cache on every new post, enabling instant content updates without a full rebuild.