ARIS-in-AI-Offer
Bilingual (中文+EN) ML / LLM / diffusion / agent interview cheat sheets for AI 秋招 — generated by ARIS /interview-cheatsheet, rendered by /render-html into single-file HTML, reads anywhere — plus a CV→DB
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Tipohiz is a sleek and customizable typing test platform designed to enhance your typing skills. Our user-friendly interface offers a variety of test modes to challenge typists of all levels. Whether you're a beginner looking to boost your typing speed or a seasoned typist aiming to break your personal record, Tipohiz offers the tools and features you need to succeed. Start your typing journey with Tipohiz today and watch your skills soar!
Note
- This project is built using Nextjs
- Inspired by MonkeyType
default | punctuation | numbers)userConfig defaults to 30s (Constants.TimeSec)category: words is a real mode — the run ends on the last matching word, or Space past it. Countdown is hidden; a 3/10 counter (data-testid="words-progress") appears after the first keystrokemodules/TextFiles/)/results from the keystroke log (lib/stats/calculate.ts): net WPM, raw WPM, accuracy, consistency, character breakdown, per-second chart. Time mode still exits when useTimer hits the 1s bound. There is no live WPM/accuracy HUD on the home test — only per-character coloringuserConfigcomponents/expo/theme.constant.ts). Hover/focus paints the class on <html> before click. Persisted as next-themes localStorage key theme, not userConfig.theme/login, /register, Google / GitHub / Twitter) via Better Auth + MongoDB — typing works without signing inlocalStorage (Zustand persist key userConfig). Guest results in tipohiz.results (cap 50); signed-in users POST /api/resultslib/i18n/translations.ts is not wired into settings/header yet)Package manager is [email protected] (package.json packageManager field). Enable Corepack or install that version. There is no install-all / install-win script. bin/install.sh is legacy and broken (pnpm ci is unimplemented); bin/install.cmd is unused. Use pnpm install. Node.js 24+ locally; CI uses Node 24.
This is Next.js 16.4. next dev / next build use Turbopack by default. Request interception lives in proxy.ts (not middleware.ts). Lint is eslint . (pnpm lint) — there is no next lint. Read AGENTS.md and node_modules/next/dist/docs/ before App Router changes.
pnpm install # postinstall runs prisma generate
cp .env.example .env # required only for auth / MongoDB
pnpm prisma:push # optional; legacy Prisma models only. Better Auth creates its own collections
pnpm dev # http://localhost:3000
pnpm 10 skips dependency lifecycle scripts unless they are in pnpm-workspace.yaml allowBuilds (prisma, @prisma/client, husky, sharp, esbuild). If prisma generate is skipped after install, that file is why.
Typing tests run with no env vars. Auth needs:
| Variable | Required for |
|---|---|
MONGODB_URI | Better Auth MongoDB adapter |
BETTER_AUTH_SECRET | Session signing |
BETTER_AUTH_URL | Public origin used for OAuth callbacks. A trailing slash is stripped |
BETTER_AUTH_TRUSTED_ORIGINS | Extra comma-separated origins. BETTER_AUTH_URL and VERCEL_URL are included as well |
BETTER_AUTH_API_KEY | Optional Better Auth dashboard key. Auth still runs when it is unset |
GOOGLE_CLIENT_ID / SECRET | Google OAuth |
GITHUB_CLIENT_ID / SECRET | GitHub OAuth |
TWITTER_CLIENT_ID / SECRET | Twitter/X OAuth |
proxy.ts redirects a signed-in visitor away from /login and /register. It does not gate the typing test. Anonymous use is expected.
Auth routes: GET|POST /api/auth/[...all]. Credentials login min password length 8. Register (lib/validation/auth.schema.ts): name ≥3, email, password ≥8 with upper / lower / digit. The “special character” regex is /^A-Za-z0-9/ — it matches a literal prefix, not a special char; if register fails unexpectedly, look there first. Credential failures always return Invalid email or password. Duplicate sign-up uses a generic “unable to create an account” copy, and some duplicate codes return { success: true } so the response shape does not confirm the email is registered (lib/auth/error-messages.ts). Auth rate limits are stored in MongoDB, not in process memory. The first auth use ensures a unique index on rateLimit.key. If MongoDB is unreachable, that check logs the error and the app keeps running. dash() from @better-auth/infra powers the dashboard and reads BETTER_AUTH_API_KEY. A missing key does not stop the app.
Prisma client is generated to prisma/generated/prisma (output in prisma/schema.prisma). That tree is committed — do not hand-edit it. pnpm build runs prisma generate && next build.
Docker (Dockerfile + docker-compose.yaml) is npm-based and does not inject env or MongoDB — not the recommended local path. See CONTRIBUTING.md.
CI (.github/workflows/ci.yml) runs on PRs to preview: typecheck → lint → unit → production build → Playwright Chromium. It does not call pnpm test; steps are separate. pnpm version comes from package.json packageManager (pnpm/action-setup@v4 with no version: — an explicit version breaks on the Corepack integrity hash). Auth/Mongo env in CI and Playwright are placeholders; e2e stubs **/api/auth/**.
| Script | What |
|---|---|
pnpm test:unit | Vitest (vitest.config.ts, jsdom). No env. Files **/*.{test,spec}.{ts,tsx} except e2e/. |
pnpm test:e2e | Playwright Chromium (e2e/). First run: pnpm exec playwright install chromium. |
pnpm test | unit then e2e |
Match CI locally:
pnpm exec tsc --noEmit
pnpm lint
pnpm test:unit
pnpm build
CI=true pnpm test:e2e
CI=true makes Playwright run pnpm start against the production build. Without a prior pnpm build, that path fails. Dev-mode e2e (pnpm test:e2e with no CI) hits pnpm dev on 127.0.0.1:3000 and can stall on Next 16 cross-origin HMR.
e2e/smoke.spec.ts — happy-path selected 15s test → /results. That is not the default duration (30s).e2e/words-mode.spec.ts — words 10, last-word finish, hidden countdown, 3/10 counter.e2e/known-failures.spec.ts — three test.fail P0s (timer restart, countdown at 0, mistype scoring). Those failures count as passes. Green CI does not mean those bugs are gone.Husky pre-commit: pnpm ts-check, pnpm lint, npx prettier --write ., then git add .. CI does not run Prettier.
Use the link below: https://tipohiz.vercel.app/
For contributers, you merged PRs do not immediately go live. Instead, they are deployed on a preview link first and if it looks okay, they are pushed to main. Preview Link: https://tipohiz-preview.vercel.app/
If you encounter a bug or have a feature request, create an issue, create a discussion thread
Refer to CONTRIBUTING.md.
Before contributing to this repository, please read the code of conduct.
TipoHiZ is licensed under the GNU GENERAL PUBLIC LICENSE - see the LICENSE file for details.
To report a security vulnerability, please refer to SECURITY.md.
This project needs a ⭐️ from you. Don't forget to leave a star ⭐️
Join our discord
Thanks a lot for spending your time helping TipoHiz grow. Thanks a lot! Keep on code-jamming 🍻
Logo Credit - Puneet Upadhyay Designs - Kwaw Kumi Miezah