TutorLoom
기업·대학·교육기관을 위한 학습 플랫폼, 무료 오픈소스이며 엔터프라이즈 버전 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Learn Chinese by doing real-world missions — order coffee, book a hotel — via AI conversation with pinyin, gloss & voice. Next.js + TS.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Learn Chinese by doing real-world missions — order coffee, take a taxi — via AI conversation with pinyin, gloss & voice. Next.js + TS.
This repository supports productized learning workflows: diagnostic input, guided practice, review loops, and clearer handoff between learner, teacher, and software.
mainPUBLICsrcpublicdocs.env.exampleLICENSEMISSION_BUILD_LOG.mdREADME.mdSECURITY.mdcapacitor.config.tsiosnext.config.tspackage.jsonnpm ci # installs exactly what package-lock.json pins (official registry only)
cp .env.example .env.local # fill AI_API_KEY etc.; keep USE_RULE_ENGINE=true for an offline run
npm run dev # http://localhost:3000
npm test # node:test — request budgets, quota store, AI chat path (recorded model), TTS error body
npm run build # the same production build Vercel runs
npm is the only package manager for this repo: package-lock.json is the single lockfile, and CI fails if a pnpm-lock.yaml / yarn.lock / bun.lock appears, because Vercel chooses its installer from whichever lockfile it finds and would otherwise skip the audited versions.
Node 22 or newer (CI uses 22). The app works without a model key: /api/chat and /api/debrief fall back to the rule engine and answer with aiPowered: false.
Every route that spends provider capacity (/api/chat, /api/debrief, /api/tts) checks a per-client and a total budget before calling the model or Edge TTS (src/lib/server/request-budget.ts). The counters live in a quota store (src/lib/server/quota-store.ts):
| Store | When | Behavior |
|---|---|---|
| Upstash Redis (REST) | UPSTASH_REDIS_REST_URL + UPSTASH_REDIS_REST_TOKEN set (the Vercel KV names KV_REST_API_URL / KV_REST_API_TOKEN also work) | shared across all serverless instances; over budget → 429; store unreachable or malformed reply → 503 (fail closed, distinct from a real limit so monitoring can tell them apart) |
| Misconfigured | only one of the two variables set | every provider route answers 503 and GET /api/health reports "quotaStore": "misconfigured" — a half-configured deploy fails loudly instead of silently losing the shared budget |
| Memory | no store configured | per-instance counters only; GET /api/health reports "quotaStore": "memory" so this is visible, not silent |
Production should run with the shared store: create a Redis database in the Vercel Marketplace (Upstash, the free tier is enough), add the two variables to the project's Production environment, redeploy, then confirm GET /api/health returns "quotaShared": true.
Production builds only from main through the GitHub → Vercel integration; do not run CLI production deploys from a feature branch. If a CLI deploy is ever needed, name the target explicitly:
vercel link --project chinese-mission --scope <team-slug> # never a bare `vercel link`
vercel --prod
Post-deploy smoke, both must pass before a release counts as done:
GET https://chinese-mission.vercel.app/api/health → ok: true, sha equals the merged commit, quotaShared: true.POST /api/chat with {"missionId":"m1","userInput":"你好","session":{"currentState":"start","slotsFilledMap":{},"turns":[],"hintLevel":0}} → 200 and aiPowered: true.Roll back within 10 minutes: Vercel → Project → Deployments → pick the previous Ready production deployment → Promote to Production (or vercel rollback <deployment-url> --scope <team-slug>). There is no database, so nothing to migrate back; client state lives in the browser's localStorage.
Key rotation (whenever a model key was pasted anywhere outside the secret store): create a new key at the provider, update AI_API_KEY in Vercel → Settings → Environment Variables (Production), redeploy, then revoke the old key and note the date in MISSION_BUILD_LOG.md.
Actively developed and live in production at chinese-mission.vercel.app. Web app is fully functional; iOS build (Capacitor) is wired up. Built in public — feedback and ideas welcome.
If this resonates, the best way to support it is to ⭐ Star this repo and Follow @shengdabai — I build AI + Chinese-teaching tools in public, and stars genuinely help me decide what to build next.
More tools in the same family:
MIT — see LICENSE for details.
学中文,靠"做事",不靠背单词卡。 点咖啡、打车、交朋友——每个"任务"都是一件真实的事,你必须真的用中文跟 AI 对话才能完成,全程配拼音、逐词注释和语音。
English | 中文
大多数 App 教的是"关于中文的知识"——孤立的词、语法表、连续打卡。可一旦真站在咖啡馆里,你还是会愣住,因为你从没在真实压力下"用过"它。
Chinese Mission 反其道而行。你被放进一个有目标的场景,唯一的出路就是把话说清楚。AI 扮演咖啡师、前台、新认识的朋友;你边读边说,卡住时用自适应提示解围,结束后拿到一份复盘——哪里做得好,哪里要改。
由一位拥有 6000+ 学员的中文老师打造,围绕"人真正破冰一门语言"的方式设计。
一个任务驱动的沉浸式中文学习平台:6 组真实场景下的 20 个任务、一个 AI 对话伙伴,以及一整套脚手架(拼音、注释、提示、语音),让初学者从第一天起就能尝试真实对话。支持浏览器运行,并通过 Capacitor 封装为原生 iOS App。
环境要求: Node.js 18+ 与 npm(或 bun)。
# 1. 安装依赖
npm install
# 2. 配置 AI API(可选,见下)
cp .env.example .env.local
编辑 .env.local:
AI_API_KEY=your-api-key-here
AI_BASE_URL=https://api.openai.com/v1
AI_MODEL=gpt-4o-mini
USE_RULE_ENGINE=false
没有 API Key?没关系。应用开箱即用内置规则引擎。即使填了 Key,也可设
USE_RULE_ENGINE=true强制使用规则模式。
# 3. 启动开发服务器
npm run dev
# 生产构建
npm run build
| Command | Purpose |
|---|---|
npm install | Install project dependencies. |
npm run dev | next dev --webpack |
npm start | next start |
npm run build | next build |
.env.example file exists, treat it as documentation only; never commit filled-in .env files.Repository Hygiene workflow is a lightweight guardrail, not a replacement for product-specific tests.Maintained by Tony Sheng. This README is written as a business-facing handoff: it should help a future collaborator, client, or reviewer understand why the repository exists, how to inspect it, and what must be true before it is reused or shipped.
MIT 协议——详见 LICENSE。