AI powered learning platform
33
stars
1,148
commits
TypeScript
primary language
Jul 1, 2026
updated
English · 简体中文
Studify is a modern, AI-powered platform that unifies Courses, Classrooms, and Community with built-in Payments, Push Notifications, and an advanced AI layer (semantic search, learning paths, video transcription + Q&A, recommendations). Built with Next.js 15, Supabase, Redis, Stripe, OneSignal, QStash, LangChain, and HuggingFace.
Many students struggle with academic challenges, including difficulty understanding course material, limited access to personalized help, and inefficient study habits. Traditional tutoring services are often expensive, inconvenient, or unavailable outside fixed hours, leaving students without adequate support when they need it most. Develop a tutoring platform that provides on-demand, affordable, and personalized academic assistance. The platform connects students with tutors, offers interactive learning tools, and provides curated study resources to improve academic outcomes and boost student confidence.
Features · Tech Stack · Screenshots · Modules · PWA & Capacitor
next-intl multi-language, glass-morphism UI, dark/light themes
Note: For Google Custom Search API setup, see documentation/GOOGLE_SEARCH_SETUP.md
https://www.youtube.com/watch?v=gbdpsgFKaUI
app/api/course/, db tables: course*, course_lesson, course_enrollment, course_progress, course_quiz_*)
app/api/classroom/, tables: classroom*)
app/api/community/, tables: community_*)
Role-based access is enforced in APIs via
utils/auth/server-guard.tsusingauthorize('student'|'tutor'|'admin')and DB-level ownership checks.
app/api/video/qa, components/ai-coach/*, components/ai/*, documentation/ai/AI_LEARNING_COACH_SYSTEM.mdapp/api/video/views, app/api/video/likes, app/api/video/danmaku, app/api/video/comments, app/api/video/comments/[id]/likescomponents/video/bilibili-video-player.tsxdb/migrations/20250905_embedding_system.sql, lib/langChain/embedding.ts, lib/langChain/vectorstore.ts, app/api/embeddings/*app/api/video-processing/steps/transcribe/route.tsapp/api/course/webhook, app/api/tutor/stripe-connect, app/api/tutor/earnings, app/api/tutor/earnings/releasepublic/OneSignalSDKWorker.js, hooks/components under components/ and hooks/next-intl multi-language, glass-morphism design, dark/light themes, accessibilityapp/api/admin/*, components/admin/*, hooks/admin/*authorize(...), ownership checks, audit logsPWA layer (Serwist + Manifest)
app/sw.ts, bundled via @serwist/next as public/sw.js (see next.config.ts). It is disabled in development and enabled only in production.public/manifest.json provides PWA metadata and icons. Ensure icons match your branding and sizes.public/OneSignalSDKWorker.js is intentionally excluded from Serwist (see exclude in next.config.ts) and served with proper headers.npm run build && npm start
Capacitor mobile shell
capacitor.config.ts
const config: CapacitorConfig = {
appId: "com.studify.platform.vercel.app",
appName: "Studify",
webDir: "empty", // using remote server
server: { url: "https://studify-platform.vercel.app", cleartext: true },
};
server.url to your dev host
http://10.0.2.2:3000http://<LAN-IP>:3000# 1) Start Next.js
npm run dev
# 2) Sync native project
npx cap sync android # or: npx cap sync ios
# 3) Run the app
npx cap run android # or open with Android Studio: npx cap open android
cleartext: true allows http during local testing; use https in production.server.url to the https domain (already set in this repo).npx cap sync android && npx cap open android # build/sign in Android Studio
npx cap sync ios && npx cap open ios # archive/sign in Xcode
webDir to a static export (e.g., out) if your app is purely static. SSR/App Router pages generally should keep server.url instead.public/OneSignalSDKWorker.js.next.config.ts.TypeScript
95.4%
PLpgSQL
3.1%
Python
1.3%
AI powered learning platform
33
stars
1,148
commits
TypeScript
primary language
Jul 1, 2026
updated
English · 简体中文
Studify is a modern, AI-powered platform that unifies Courses, Classrooms, and Community with built-in Payments, Push Notifications, and an advanced AI layer (semantic search, learning paths, video transcription + Q&A, recommendations). Built with Next.js 15, Supabase, Redis, Stripe, OneSignal, QStash, LangChain, and HuggingFace.
Many students struggle with academic challenges, including difficulty understanding course material, limited access to personalized help, and inefficient study habits. Traditional tutoring services are often expensive, inconvenient, or unavailable outside fixed hours, leaving students without adequate support when they need it most. Develop a tutoring platform that provides on-demand, affordable, and personalized academic assistance. The platform connects students with tutors, offers interactive learning tools, and provides curated study resources to improve academic outcomes and boost student confidence.
Features · Tech Stack · Screenshots · Modules · PWA & Capacitor
next-intl multi-language, glass-morphism UI, dark/light themes
Note: For Google Custom Search API setup, see documentation/GOOGLE_SEARCH_SETUP.md
https://www.youtube.com/watch?v=gbdpsgFKaUI
app/api/course/, db tables: course*, course_lesson, course_enrollment, course_progress, course_quiz_*)
app/api/classroom/, tables: classroom*)
app/api/community/, tables: community_*)
Role-based access is enforced in APIs via
utils/auth/server-guard.tsusingauthorize('student'|'tutor'|'admin')and DB-level ownership checks.
app/api/video/qa, components/ai-coach/*, components/ai/*, documentation/ai/AI_LEARNING_COACH_SYSTEM.mdapp/api/video/views, app/api/video/likes, app/api/video/danmaku, app/api/video/comments, app/api/video/comments/[id]/likescomponents/video/bilibili-video-player.tsxdb/migrations/20250905_embedding_system.sql, lib/langChain/embedding.ts, lib/langChain/vectorstore.ts, app/api/embeddings/*app/api/video-processing/steps/transcribe/route.tsapp/api/course/webhook, app/api/tutor/stripe-connect, app/api/tutor/earnings, app/api/tutor/earnings/releasepublic/OneSignalSDKWorker.js, hooks/components under components/ and hooks/next-intl multi-language, glass-morphism design, dark/light themes, accessibilityapp/api/admin/*, components/admin/*, hooks/admin/*authorize(...), ownership checks, audit logsPWA layer (Serwist + Manifest)
app/sw.ts, bundled via @serwist/next as public/sw.js (see next.config.ts). It is disabled in development and enabled only in production.public/manifest.json provides PWA metadata and icons. Ensure icons match your branding and sizes.public/OneSignalSDKWorker.js is intentionally excluded from Serwist (see exclude in next.config.ts) and served with proper headers.npm run build && npm start
Capacitor mobile shell
capacitor.config.ts
const config: CapacitorConfig = {
appId: "com.studify.platform.vercel.app",
appName: "Studify",
webDir: "empty", // using remote server
server: { url: "https://studify-platform.vercel.app", cleartext: true },
};
server.url to your dev host
http://10.0.2.2:3000http://<LAN-IP>:3000# 1) Start Next.js
npm run dev
# 2) Sync native project
npx cap sync android # or: npx cap sync ios
# 3) Run the app
npx cap run android # or open with Android Studio: npx cap open android
cleartext: true allows http during local testing; use https in production.server.url to the https domain (already set in this repo).npx cap sync android && npx cap open android # build/sign in Android Studio
npx cap sync ios && npx cap open ios # archive/sign in Xcode
webDir to a static export (e.g., out) if your app is purely static. SSR/App Router pages generally should keep server.url instead.public/OneSignalSDKWorker.js.next.config.ts.TypeScript
95.4%
PLpgSQL
3.1%
Python
1.3%