You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.0 KiB
3.0 KiB
This is NOT the Next.js you know
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in node_modules/next/dist/docs/ before writing any code. Heed deprecation notices.
Language
- 一律以台灣繁體中文回答使用者。
- 程式碼內禁止中文:comment、log、字串常數、識別字一律用英文(面向使用者的 UI 文案除外)。
Ready Set Ride
「展件互動系統」的 iPad 端控制介面。三組「電腦+螢幕+iPad」在展場區網內,民眾透過 iPad(PWA)操控 Unity 螢幕內容,流程結束後上傳圖片至客戶 FTPS,並以 QR Code 顯示對應圖片網址供掃描。
完整的系統架構、網路 / TLS、MQTT topic 設計、Windows 部署與開工檢查清單請見 docs/architecture.md(單一事實來源,動到部署 / MQTT / 上傳流程前先讀)。
Stack
- Next.js 16 (Turbopack) + React 19,App Router,
src/目錄。output: 'standalone'(Windows 上以node server.js跑,非next start)。 - Bun 為套件管理與 script runner(
bun run dev/bun run build)。 - PWA:
@serwist/turbopack(service worker,非@serwist/next)。 - MQTT:
mqtt.jsover WebSocket(useMQTThook)。 - 狀態:
zustand+persist(裝置設定,如 station id)。 - 樣式:Tailwind v4 + shadcn(style
base-nova,iconlucide)。 - 驗證:
zodv4(import 為import * as z from 'zod')。 - 圖片上傳:
basic-ftp(implicit FTPS)。
Commands
bun run dev— 開發伺服器bun run build— production buildbun run lint— Biome checkbun run format— Biome format(write)
Conventions
- 路徑別名
@/*→./src/*。元件@/components、UI@/components/ui、hooks@/hooks、lib@/lib。 - Biome 為唯一 formatter / linter:2 空格縮排、single quotes、import 自動排序。
src/components/ui(shadcn 產出)不在 format / lint 範圍內,勿手動改它的風格。 - Next.js domain rules(
next/react)已在 Biome 開啟,遵守其提示。
Gotchas
src/目錄:所有 app code 在src/下。serwist 的swSrc等以「專案根目錄」為基準的路徑要寫成src/app/sw.ts,不是app/sw.ts(後者會在 build collect page data 階段報Could not resolve .../app/sw.ts)。- FTPS 必須跑在 Node runtime,不能用 Bun:此 FTPS server 在 data connection 上要求 TLS session resumption,Bun 不支援。涉及
src/lib/ftps.ts的 Server Action / script 一律標 Node runtime(standalone 預設即 Node,勿標 edge)。 - FTPS 設定由環境變數載入(
FTP_HOST/FTP_USER/FTP_PASSWORD必填,FTP_PORT/FTP_REMOTE_DIR/FTP_PUBLIC_BASE_URL選填),見loadFtpConfig()。勿把帳密寫死進程式碼。 - Windows host:路徑用
pathAPI,勿寫死 POSIX 斜線。