TutorLoom
기업·대학·교육기관을 위한 학습 플랫폼, 무료 오픈소스이며 엔터프라이즈 버전 제공
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗A voice-first study assistant for the kids. It guides their thinking with hints, worked examples, and visuals, and doesn't hand over answers. Version 1 focuses on math.
say) and on-screen content (show): typeset math, tap-to-reveal steps, practice problems that check answers, number lines, fraction bars, graphs, and a line-by-line review of their work that highlights the first step that went wrong.A Raspberry Pi with a camera above the desk and a small touchscreen. Kids tap their name, enter their PIN, and work on paper. A low-cost model reads each new line from the photo, and a math engine (src/lib/math-check.ts, no AI) checks whether each line follows from the one above, in milliseconds. The tutor is called only for mistakes, lines the engine can't judge (inequalities, word problems; at most every 12 seconds), or Check now, and the screen shows the page with a ✓ beside lines that are right and a ? on the first one to look at again. The same conversation shows on the Chromebook. Setup guide: pi/README.md. The installer is served by the app at /pi/install.
Same setup as Woodside Wednesday.
| Layer | Choice |
|---|---|
| App | Next.js 16 (App Router, React 19), Tailwind v4, shadcn/ui |
| API | Hono at /api/v1 (src/server/api/app.ts) |
| Database | Postgres via Drizzle: Neon in production, embedded PGlite locally |
| Auth | Better Auth: parents by email link/code, kids by username + PIN |
| AI | Claude API: claude-opus-5-5 tutor, claude-haiku-5-5 answer check |
| Voice | Browser speech recognition + browser voices (free); ElevenLabs optional |
| Hosting | Vercel Hobby (free) |
TUTOR_MODEL=claude-sonnet-5-5. The parent page shows an estimate for the month to date. Set a monthly spend limit in the Anthropic Console.npm install
cp .env.example .env.local # set BETTER_AUTH_SECRET and PARENT_EMAILS
npm run db:migrate # creates ./.pglite
npm run dev
Open http://localhost:3000, choose Parent, and enter your email. The sign-in code prints in the terminal. Add a kid, then sign in as them in another browser.
Without ANTHROPIC_API_KEY the tutor runs in demo mode: canned replies that show off each visual tool.
| Script | What it does |
|---|---|
npm run dev | Dev server |
npm test | Service tests (in-memory Postgres, fake Claude) |
python3 -m unittest discover tests/pi | Desk station camera logic |
npm run typecheck / npm run lint | Types / ESLint |
npm run db:generate | New migration after editing src/db/schema.ts |
.env.example: DATABASE_URL, BETTER_AUTH_SECRET, BETTER_AUTH_URL (your Vercel URL), PARENT_EMAILS, ANTHROPIC_API_KEY, and optionally RESEND_API_KEY/EMAIL_FROM and the ElevenLabs keys.vercel-build script runs migrations first.ELEVENLABS_API_KEY, then on a kid's settings page choose Natural voice and paste a voice ID from the ElevenLabs library. Use Hear it to audition. If ElevenLabs fails, it falls back to the browser voice.src/server/tts.ts and a provider option in src/server/family.ts.src/server/tutor/prompt.ts: the tutor's rules (hint ladder, personality, writing, staying on topic).src/lib/tutor-reply.ts: the reply schema (say + show blocks) used for structured output and rendering.src/server/tutor/index.ts: sessions and turns. The system prompt is frozen per session and history is append-only. Claude checks that earlier context hasn't changed between turns, so don't edit stored turns or the stored system prompt. Settings changes apply to new sessions.src/server/tutor/engine.ts: the Claude calls (tutor + answer check). demo.ts is the canned demo.src/components/tutor/: renderers for each visual block. To add a new visual, add it to the schema, describe when to use it in the prompt, and add a renderer.