Personal site of Danil Zablotsky, design engineer, at finchaf.com.
This repository is public on purpose: the way a site is built is part of the work. It starts where the work started, with decisions, and the plan shows what is done. The home page and Flow are live in two languages, with every gate in place; the other two pages come next.
The reasoning is written down before the code, in docs/, in Russian. The short
version:
| Question | Answer | Why |
|---|---|---|
| How does it run? | Static export of Next.js, served as plain files by Caddy | Everything rich happens in the browser, so a server would add risk and no ability. ADR-0002 |
| What is it built with? | Next.js, React, TypeScript, Tailwind CSS, next-intl, MDX | Full control, in Russian and English. ADR-0003 |
| How does it move? | CSS, Motion, GSAP and three.js, each with its own zone | The cheapest tool that can do the job, loaded only where needed. ADR-0004 |
| How does it ship? | From a laptop, by switching a symlink | No downtime, instant rollback, no server key in CI. ADR-0005 |
| How is quality held? | One command runs every gate, in CI too | Budgets and accessibility are checked, not hoped for. ADR-0007 |
git config core.hooksPath .githooks
pnpm install
pnpm dev # http://localhost:3000
python3 scripts/check.py # every gate
pnpm build && pnpm preview serves the build behind the same Caddy as production, on
http://127.0.0.1:8090; it needs Docker, as do the browser gates.
Commits are signed, atomic Conventional Commits. main is
linear and moves only by fast-forward after CI, so the commits on it are the ones CI checked. The
.claude/ folder holds the process for Claude Code:
/nt starts a task, /ar audits it, /si lands it, /rf studies an effect on another site and
rewrites it from scratch.
The code is MIT. That covers code only: the texts, documents, case studies, images, video, the logo and the visual design are © Danil Zablotsky, all rights reserved. Learn from it freely, and please make your portfolio your own. GSAP is a dependency under its own license, not MIT.