小张正在努力加载 · 0%

Hang on, I'm still loading.

This Site — A One-Person Special Issue

The site you're reading: Go plus Next.js, a black-and-white newspaper look, bilingual, with a passkey-secured admin. Live.

Go / Gin / GORM / PostgreSQL / Next.js / TypeScript / WebAuthn / nginx


Positioning

For whom: people who want to know who I am — recruiters, collaborators, readers. It's a "who I am and what I've built" I can hand out, with one layer more than a résumé (things you can click and verify) and one layer more than a social profile (a voice I control).

What it replaces: self-introductions scattered across platforms. Everything verifiable (GitHub repos, crates.io, awards) links out from here; every claim traces to an artefact.

Why it earns its place: it is itself a piece of work. Design, backend, deployment and content management are all mine, built with my own workflow — the site is both the display case and an exhibit.

Main modules

  • Front page and sections: home, projects, writing, collection, about — bilingual, Chinese first with an English mirror.
  • Owner's admin: passwordless passkey login; management of articles, projects, characters and fan art; a question inbox; comment moderation; an asset library; site identity and contact, about-page copy, search and sharing settings — anything changeable on the site is changed here, not in code.
  • Ask box and comments: anonymous questions that can be published as FAQ once answered; comments under articles via email-code login.
  • Day / night editions: switched by local time, pinnable with one click.
  • Search-friendly: per-page titles and descriptions, canonical, hreflang, social cards, sitemap, structured data.

Stack

  • Go (Gin + GORM) + PostgreSQL: backend and data; spec-driven, a uniform response envelope, fail-closed configuration.
  • Next.js + TypeScript: server-rendered front-end, standalone deployment, native View Transitions for page changes.
  • WebAuthn: admin login with hand-written encoding (no library), recovery codes and multi-device binding.
  • nginx + systemd: single-machine deployment, TLS termination, path-based routing.

The look is a black-and-white newspaper: a print grid with paper-craft depth, nothing but paper and ink — the world only turns colour on the collection pages. Every animation runs on the compositor thread with a reduced-motion fallback.

The process is part of the content

Built on my own FPI-X flow: design exploration in a playable HTML prototype, then a contract freeze and two red-team rounds — the first blocked it; it passed once both criticals were cleared. Before launch, the "passkeys can't be automated" debt was cleared with a virtual authenticator: login, recovery codes and device binding all run for real in a headless browser.

Status

Live. The planned persistent 3D avatar was cut — its operating cost outweighed what it would add.

← Projects