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.