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 ↗חדרי למידה קבוצתיים לסטודנטים, עם עוזר AI שמשתתף בשיחה.
| מסמך | תוכן |
|---|---|
| SPEC.md | מה המערכת עושה |
| TECHNICAL_SPEC.md | איך היא בנויה |
| TASKS.md | Roadmap ומעקב |
npm install
cp .env.example .env.local
# מפתח חתימה מקומי (ES256). הקובץ ב-.gitignore — לא לקמט אותו.
npx supabase gen signing-key --algorithm ES256 > supabase/signing_keys.json
npm run db:start # Supabase מקומי — מדפיס URL ומפתחות
signing_keys.json חייב להיות מערך JSON. אם הפקודה כתבה אובייקט בודד, עוטפים אותו ב-[ ].
בזכות המפתח האסימטרי, auth.getClaims() מאמת את ה-session מקומית, בלי קריאה לשרת האימות בכל עמוד.
מעתיקים מהפלט של db:start ל-.env.local:
| פלט | משתנה |
|---|---|
API_URL | NEXT_PUBLIC_SUPABASE_URL |
PUBLISHABLE_KEY | NEXT_PUBLIC_SUPABASE_ANON_KEY |
SECRET_KEY | SUPABASE_SERVICE_ROLE_KEY |
המפתחות הישנים (ANON_KEY/SERVICE_ROLE_KEY, JWT בחתימת HS256) לא עובדים כשמפתח החתימה מופעל.
npm run dev # http://localhost:3000
Supabase Studio: http://localhost:54323
ב-Git Bash על Windows, אם supabase start לא מוצא את docker:
export PATH="/c/Program Files/Docker/Docker/resources/bin:$PATH".
סיסמה לכולם: Password123!
| מייל | תפקיד |
|---|---|
[email protected] | סטודנטית, יוצרת חדר R1 (משתמשת הדמו) |
[email protected] | סטודנט, חבר ב-R1 |
[email protected] | Super Admin — פאנל ניהול ב-/admin |
| פקודה | |
|---|---|
npm run dev | שרת פיתוח |
npm run build | build ל-production |
npm run lint | ESLint, כולל כללי הגבולות |
npm run typecheck | TypeScript |
npm run format | Prettier |
npm run db:start / db:stop | Supabase מקומי |
npm run db:reset | מריץ מחדש migrations + seed |
קומפוננטות ודפים לא מייבאים Supabase. ESLint נכשל אם כן.
| צריך | משתמשים ב- |
|---|---|
| DB | lib/repositories/ |
| Realtime | hooks/useRoomChannel.ts |
| קבצים | lib/storage/ |
פירוט: TECHNICAL_SPEC.md §2.2.
בפיתוח בלבד: http://localhost:3000/dev/rtl
כפתור צף בצד ימין למטה עובר בין מצב דמו למצב רגיל. כרגע מצב דמו פעיל כברירת מחדל (מוגדר בקוד, בלי משתנה סביבה). הבחירה נשמרת ב-cookie stugether_demo.
במצב דמו האפליקציה מציגה נתוני דוגמה (lib/demo/fixtures.ts) בלי לגשת ל-Supabase, וכל פעולת כתיבה נחסמת ("מצב דמו — הפעולה לא נשמרת"). אין שינוי במשתמשים או בנתונים האמיתיים.