TutorLoom
The learning platform for companies, colleges and training institutes. Free and open source, with an Enterprise edition.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Spanish conversation practice for Hebrew speakers, with two virtual teachers (Lucía and Vale) and real-time voice. Invite-only beta, 18+.
Stack: Next.js 16 on Vercel, Supabase (Auth + Postgres), OpenAI Realtime API over WebRTC.
/api/realtime/session to start a call (Supabase session cookie).start_session), and reserves the worst-case cost./api/realtime/end bills the real time (capped by the server clock), books the cost, and stores the transcript encrypted with AES-256-GCM.| Limit | Default | Where |
|---|---|---|
| Talk time per user per day (Israel time) | 15 min | DAILY_LIMIT_MINUTES |
| Longest single call | 10 min | MAX_SESSION_MINUTES |
| Monthly API budget | $50 | MONTHLY_BUDGET_USD |
| New calls blocked at | 90% of budget ($45) | BUDGET_BLOCK_RATIO |
| Cost booked per minute (at least) | $0.10 | RESERVE_USD_PER_MINUTE |
| Transcript retention | 30 days | pg_cron job in the migration |
The booked cost per call is the larger of the client-reported token cost and the per-minute estimate, so the cap holds even if a client lies. As a second safety net, set a budget limit on the OpenAI project that owns the key.
supabase/migrations (SQL editor, or npx supabase db push).
<APP_URL>/** to Redirect URLs./auth/callback handles Supabase's default links..env.example to .env.local and fill it in. On Vercel, add the same variables and mark secrets as Sensitive.node --env-file=.env.local scripts/create-invite.mjs [email protected] "beta wave 1".PERSONA_TEST_KEY (24+ random characters, Sensitive, Preview only), then open <PREVIEW_URL>/api/admin/persona-test?key=.... A second model plays a learner through each scenario in src/lib/persona-test.ts and the endpoint returns the transcripts. Add &persona=vale or &scenario=injection to run one.npm run dev # local dev server
npm test # unit tests (crypto, cost)
npm run lint
npm run typecheck
npm run build