Harvey Xia
Back to projects

Fanxing · Dongdong

Fan platform for a table-tennis championLive site

A four-language fan platform designed, built and shipped end to end.

Fanxing · Dongdong home page with its gold-and-red hero, honour counts and live club sections
Live home page · Captured 3 November 2026 at 1440×900

Astro renders four locales as server-rendered pages; React islands carry the assistant, search and 3D games. A headless WordPress CMS feeds the site, so editorial updates ship without a code deploy. The public site runs at fanni-panda.com.

Status
Live public fan site
Stack
Astro SSR · React islands · TypeScript · WordPress
AI in the product
Qwen-backed 小咚 assistant and a news-review agent
Evidence
Live routes; measured performance commits
Limits
Fan project, private source; assistant answers can be wrong

The product question

Can a fan community follow a champion’s matches, club news and career record in one place, in the language they read, without the site feeling like a database dump?

The build

Astro server-renders the hub pages for Chinese, Traditional Chinese, English and German. React islands handle the assistant, BM25 search and Three.js mini-games. WordPress stays the editorial source of truth, and the assistant answers from a curated knowledge base rather than inventing facts.

Evidence and limits

The live routes were checked on 3 November 2026. Build commits reduced font payload from 186.9 KiB gzip to 19.0 KiB Brotli, icons from 960 KiB to 46.6 KiB and audio from 3.94 MiB to 1.39 MiB. The repository is private and this is a personal fan project, not client work. The assistant is useful but not authoritative.

Fanxing · Dongdong profile page showing career record and player details
Player profile, one locale at a time.
Fanxing · Dongdong games page with Three.js mini-games
A playful 3D corner of the fan site.

The source repository is private. The live site is the public evidence; the demo below is a local reconstruction, not the production app.

Dated implementation evidence

  1. Live routes across Simplified Chinese, Traditional Chinese and English returned 200; the assistant page loaded.

  2. Self-hosted font-face CSS cut font payload from 186.9 KiB gzip to 19.0 KiB Brotli; icon work cut 960 KiB to 46.6 KiB; audio fell from 3.94 MiB to 1.39 MiB.

  3. Unified site search onto the shared BM25 scorer instead of separate search paths.

  4. Added a Three.js stacked-card 3D scene to the fan-stage games area.

Verification and limits

The records establish the work and its measured outcomes, but the repository is private, so this page cannot link commits for independent inspection. It is a personal fan project, not client work, and the assistant’s answers still need checking.

AI collaboration: attribution boundary

The records below show implementation and review outcomes. They do not record a complete prompt history or identify human versus AI authorship of individual changes. Commit history alone cannot establish that split; no percentage of authorship is claimed.