TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Memory Chess: a free chess position memory trainer. Study a position, the board goes blank, rebuild it from memory. 24 languages.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Memory Chess is a free chess memory game at thememorychess.com. You see a chess position for a few seconds, then rebuild it from memory and get a score. This repository is the source of the site.
Around the round:
Memory Chess is a Next.js 15 App Router app written in TypeScript. The Node version is not pinned in the repo. The versions below are from package.json.
Stack
messages/Setup
git clone https://github.com/bingcheng45/memory-chess.git
cd memory-chess
npm install
npm run dev
Open http://localhost:3000. The dev server uses Turbopack.
Environment
Put these in .env.local. The names come from src/.
NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY: the leaderboard. Set SUPABASE_READ_ONLY=true to stop writes that go through the shared Supabase client in src/lib/supabase.js. It does not cover the Google Sheets writes below. The opt-in lab backup (LAB_BACKUP=on) builds its own service-role client and honours it too: a put or delete answers 503 and a get still works.GOOGLE_SHEET_ID, GOOGLE_SERVICE_ACCOUNT_KEY: where feedback and contact messages are appended. Feedback goes to a worksheet tab named Game Feedback with headers Submitted At, Rating, Feedback, Accuracy, Correct Pieces, Piece Count, Difficulty, Memorization Time, Solution Time, App Version in columns A to J.NEXT_PUBLIC_DATABUDDY_CLIENT_ID: analytics.Scripts
| Command | What it does |
|---|---|
npm run dev | Development server |
npm run build | Validates messages and articles, builds the app, then checks the prerendered guides |
npm start | Serves a production build |
npm run lint | next lint |
npm run validate | Checks the message files and the article translations |
npm run validate:messages | Checks every locale file for missing keys and broken placeholders |
Other npm run scripts (lab:*, measure:*, migrate:rehearse, backup:verify) are measurement and maintenance tools. See package.json and scripts/.
Tests and type checks
npx jest
npx tsc --noEmit
There is no test script. Jest runs every file matching **/__tests__/**/*.test.[jt]s?(x), which covers src/, scripts/ and schema/.
Adding or changing text. Interface strings (next-intl) go into messages/en.json and the other 23 locale files. Article and trust-page translations live elsewhere: articles in src/lib/articles/translations/, and About, Privacy and Terms in src/lib/pages/translations/. Those are written and checked with node scripts/articles-i18n.mjs (add --pages for the trust pages). Run npm run validate before you open a pull request. It checks both the message files and these translations.
Ads. No ad units are active. The AdSense script is off because ADSENSE_SCRIPT_ENABLED in src/lib/adsense.ts is set to false, and the placement plan is in adsense-layout-plan.md.
Issues and pull requests are welcome. Run npm run lint, npx tsc --noEmit and npx jest first.
MIT. Copyright 2025-2026 bing cheng.