Стек

Framework
Next.js 16.2 (App Router, static export)
Language
TypeScript 5.9 (strict)
Styling
Tailwind CSS 4 (oklch native), CSS @theme tokens
Motion
Motion 12 (Framer Motion lineage), GSAP, Lenis smooth scroll
3D moment
react-three-fiber + drei (one scene on /journey)
i18n
next-intl, 4 locales (EN / UK / RU / ID)
Forms
react-hook-form + zod (no form on /contact by default)
Lint + format
Biome (replaces eslint + prettier)
Package manager
pnpm@9

Шрифти

Display
Fraunces (variable: wght · SOFT · WONK · opsz)
Pangram-feel editorial, single-axis serif for cinematic emphasis.
Body
Newsreader (variable opsz)
Designed for long reading at body sizes.
Mono
JetBrains Mono
Eyebrows, year stamps, marginalia, switcher.

Інфраструктура

Hosting
Bare nginx on Debian, static files via rsync
CI/CD
GitHub Actions on push to main → build → rsync to /var/www/zapleo.com (~50s end-to-end)
TLS
Cloudflare Origin Cert + edge proxy
Analytics
Cloudflare Web Analytics (cookieless)
Backups
Server-side nightly snapshots, off-site mirror

AI / людський поділ (чесне розкриття)

Design system
Drafted with Claude · reviewed and adjusted by Dmitriy
Copy
Co-authored with Claude · facts cross-checked against LinkedIn, GitHub, Clutch, DOU, Tripadvisor public records
Photos / b-roll
Mine. Or labelled stock when used.
Voice in social
AI-augmented per Vibe Coding strategy. Decisions and replies — mine.

Вихідний код та аудити

  • github.com/zapleoceo/zapleo.com →
  • Ліцензія: MIT для збірки; контент © Дмитро Запорожець.
  • Ціль доступності: WCAG 2.2 AA. Знайшов порушення? Напиши на dima@zapleo.com.
  • Без кукі. Без сторонніх трекерів. Без поп-апа на розсилку.