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 ↗ZverTs is a gamified learning platform that turns YouTube playlists into structured, sequential courses. Students import playlists, progress through locked modules, track learning analytics, earn XP/gems, unlock achievements, and practise code (C, C++, Python) right next to each lesson.
| Layer | Technology |
|---|---|
| Frontend | React 18 + TypeScript + Vite |
| UI | Tailwind CSS + shadcn/ui + Radix primitives |
| Data / Auth / Backend | Supabase (Postgres, Auth, RLS, RPCs, Edge Functions) |
| State | TanStack React Query |
| i18n | i18next |
| Testing | Vitest + Testing Library |
src/
components/
ui/ # shadcn/ui primitives
app/ # domain components (AppShell, player, notes, code runner, etc.)
hooks/ # useAuth, useEntitlements, useNotifications, etc.
integrations/supabase/ # typed Supabase client + generated types
lib/ # i18n, brand config, payment config, utils
pages/
admin/ # Admin sub-pages (users, payments, broadcast, etc.)
*.tsx # Route-level pages
supabase/
functions/ # Edge Functions (see below)
migrations/ # Schema, RLS, RPCs, gamification logic
| Path | Description |
|---|---|
/ | Landing page |
/auth | Sign in / sign up / password reset trigger |
/reset-password | Password reset completion |
/dashboard | Personal learning dashboard |
/courses | User courses + YouTube playlist importer |
/courses/:id | Course detail + module list management |
/learn | All user modules |
/learn/:id | Module player (video + progress + notes + code runner) |
/quiz/:id | Quiz (placeholder — MCQ backend exists) |
/growth | Growth analytics page |
/leaderboard | Leaderboard |
/profile | Public profile page |
/settings | Account settings |
/buy | Package selection page |
/payment | Payment submission form (Bkash/Nagad) |
/payments | Payment history |
/certificate/:courseId | Certificate page + PDF download |
/info/:slug | Dynamic info/content pages |
/refund-policy | Refund policy page |
/admin | Admin dashboard (admin role required) |
/admin/payments | Admin payment review |
/admin/users | Admin user management |
/admin/management | Admin role management |
/admin/broadcast | Broadcast messages to users |
/admin/support-contacts | Manage support contact info |
.env)VITE_SUPABASE_URL=your_supabase_project_url
VITE_SUPABASE_PUBLISHABLE_KEY=your_supabase_anon_key
Set these in your Supabase project dashboard under Project Settings → Edge Functions:
| Secret | Used by |
|---|---|
SUPABASE_URL | All functions |
SUPABASE_SERVICE_ROLE_KEY | All functions |
YOUTUBE_API_KEY | preview-youtube-playlist, import-youtube-playlist, search-youtube-playlists |
TELEGRAM_BOT_TOKEN | telegram-webhook, notify-admin |
TELEGRAM_ADMIN_CHAT_ID | notify-admin |
npm install
npm run dev
npm run build
| Script | Description |
|---|---|
npm run dev | Start Vite dev server |
npm run build | Production build |
npm run build:dev | Build in development mode |
npm run preview | Preview built app locally |
npm run lint | Run ESLint |
npm run test | Run tests once |
npm run test:watch | Run tests in watch mode |
Migrations in supabase/migrations define:
profiles, courses, modules, module_progressachievements, daily_challenges, XP/gems/streak logicnotes, mcq_*, certificates, attendancepackages, payment_requests, entitlements| Function | Purpose |
|---|---|
preview-youtube-playlist | Fetch playlist metadata before import |
import-youtube-playlist | Import playlist as a course with modules |
fetch-playlist-author | Resolve channel author name + URL for a course |
run-code | Fallback C/C++ runner (Wandbox, or Judge0 if configured) |
notify-admin | Send Telegram alert to admin on new payment |
telegram-webhook | Receive and handle Telegram bot webhook events |
delete-account | Permanently delete a user account and all data |
/quiz/:id is a placeholder view — the MCQ infrastructure exists in the database but the UI quiz flow is not yet implemented.