Iñaki Aranzadi

inaki.to • terminal portfolio

Interactive professional site for Iñaki Aranzadi — a SvelteKit terminal with résumé, projects, contact form, and arcade games. Deployed on Cloudflare Pages (not GitHub Pages).

Stack

Local development

npm install
cp .env.example .env   # add RESEND_API_KEY for /contact
npm run dev

Try /help, /whoami, /resume, /github, /contact, /game.

Build

npm run build
npm run preview        # Cloudflare Pages local preview

Publish to inaki.to

This project replaces the old static site at inaki/inaki.github.io. The custom domain inaki.to must point to Cloudflare Pages, not GitHub Pages (SvelteKit needs Workers for SSR + the contact API).

1. Push source to GitHub

Recommended: use this repo as the new contents of inaki/inaki.github.io (source code, not a built dist/).

git remote add origin git@github.com:inaki/inaki.github.io.git
git branch -M main
git push -u origin main

Or use a new repo inaki/inakito and connect that in Cloudflare instead.

2. Cloudflare Pages project

In Cloudflare DashboardWorkers & PagesCreate:

Setting Value
Project name inakito
Production branch main
Build command npm run build
Deploy command npm run deploy
Node version 22

If your Cloudflare UI uses separate build + deploy steps (Workers CI flow), use those two commands — not npx wrangler deploy.

Classic Pages Git UI instead uses build output directory .svelte-kit/cloudflare with no deploy command.

Environment variables (Production):

Variable Example
RESEND_API_KEY re_… (secret)
CONTACT_TO_EMAIL hello@inakito.com
CONTACT_FROM_EMAIL contact@inaki.to (after Resend domain verify)

Or set secrets via CLI:

npx wrangler pages secret put RESEND_API_KEY --project-name=inakito

3. Custom domain inaki.to

  1. In the Pages project → Custom domains → add inaki.to and www.inaki.to
  2. If inaki.to DNS is already on Cloudflare, records are added automatically
  3. Remove the old GitHub Pages setup:
    • Delete CNAME file / disable GitHub Pages on inaki.github.io
    • Remove inaki.toinaki.github.io DNS if it still exists

4. GitHub Actions deploy (optional)

Workflow: .github/workflows/deploy.yml

Add repository secrets:

Pushes to main deploy automatically.

5. Email (Resend)

  1. Add domain inaki.to in Resend and verify DNS (SPF/DKIM)
  2. Set CONTACT_FROM_EMAIL to a verified address on that domain
  3. Until verified, dev can use onboarding@resend.dev (delivers only to your Resend account email)

6. Post-launch checklist

Project structure

src/
├── lib/
│   ├── content.ts          # résumé, projects, commands copy
│   ├── site.ts             # inaki.to URL + SEO
│   └── components/         # TerminalShell, ResumeDocument, games…
├── routes/
│   ├── +page.svelte        # main terminal UI
│   ├── resume/             # print/PDF résumé page
│   └── api/contact/        # Resend handler
static/                     # favicon, google verification
wrangler.jsonc              # Cloudflare Pages config

Built by Iñaki — 2026.