AI-powered personalized learning platform that helps students learn smarter through intelligent tutoring, document analysis, quiz generation, AI summaries, and performance analytics.
π https://studysync-v2.onrender.com
- π€ AI Tutor with conversational learning and real-time concept explanations
- π AI-powered PDF analysis with contextual document understanding
- π Automatic quiz generation supporting MCQ, SAQ, and LAQ formats
- π AI summaries, revision notes, and key concept extraction
- π Semantic search powered by vector embeddings and RAG architecture
- π Learning analytics with quiz tracking and performance insights
- π Modern responsive UI with dark/light mode support
- π Secure authentication using Google OAuth and NextAuth
- β‘ Full-stack architecture powered by Next.js, Prisma, tRPC, Redis, and PostgreSQL
- π³ Docker-ready deployment with Render + Supabase integration
Secure Google OAuth authentication with protected routes and session management.
Centralized AI-powered learning dashboard with document management and analytics.
Interactive AI-powered tutor capable of answering both document-based and general learning questions.
Generate intelligent quizzes with MCQ, SAQ, and LAQ support instantly from study materials.
Real-time quiz evaluation with scoring, explanations, and performance insights.
Upload, preview, and interact with study materials seamlessly.
- Next.js 15
- React
- TypeScript
- Tailwind CSS
- shadcn/ui
- Framer Motion
- Lucide Icons
- tRPC
- Prisma ORM
- PostgreSQL
- Redis
- NextAuth.js
- Google Gemini AI
- HuggingFace API
- Qdrant Vector Database
- RAG-based document retrieval
- Render
- Supabase
- Docker
src/
βββ app/
βββ components/
βββ server/
βββ lib/
βββ hooks/
βββ styles/
βββ trpc/
βββ types/
βββ prisma/Create a .env file in the root directory (see .env.example for a fully commented template).
AUTH_SECRET=
AUTH_TRUST_HOST=
DATABASE_URL=
DIRECT_URL=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
GOOGLE_GENERATIVE_AI_API_KEY=
HUGGINGFACE_API_KEY=
NEXT_PUBLIC_APP_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
NEXT_PUBLIC_SUPABASE_URL=
SUPABASE_STORAGE_BUCKET=
NEXTAUTH_SECRET=
NEXTAUTH_URL=
QDRANT_API_KEY=
QDRANT_URL=
REDIS_URL=
SUPABASE_SERVICE_ROLE_KEY=
SUPABASE_URL=git clone https://github.com/roshankodi/StudySync.git
cd StudySyncnpm installnpx prisma generatenpx prisma db pushnpm run devApplication will run on:
http://localhost:3000Build Docker image:
docker build -t studysync .Run container (make sure you have a filled-in .env file first):
docker run -p 3000:3000 --env-file .env studysyncOr run everything (app + optional local Redis/Qdrant) with Docker Compose:
docker compose up --buildStudySync uses Retrieval-Augmented Generation (RAG) architecture to:
- Understand uploaded documents
- Generate context-aware responses
- Create intelligent quizzes
- Summarize learning materials
- Deliver personalized tutoring experiences
- Voice AI tutor
- Collaborative study rooms
- Real-time multiplayer quizzes
- Personalized learning recommendations
- Advanced semantic evaluation
- Multi-document reasoning
Computer Science Engineering Student β’ Full-Stack Developer β’ AI Enthusiast
GitHub: https://github.com/roshankodi
This happens when the project folder lives inside a OneDrive-synced directory (e.g. ...\OneDrive\Desktop\...). OneDrive's "Files On-Demand" feature creates special placeholder files using NTFS reparse points, and Node's filesystem calls (used internally by Next.js's build cache) misinterpret them as broken symlinks, causing the build/dev server to crash. This is a Windows + OneDrive limitation, not a bug in the project.
Fix (pick one):
- Move the project outside of OneDrive β e.g. to
C:\Dev\StudySyncβ and runnpm installagain from there. This is the most reliable fix. - If you must keep it inside OneDrive, right-click the project folder in File Explorer β "Always keep on this device", so every file is fully downloaded locally instead of being an on-demand placeholder. Then delete the
.nextfolder (npm run clean) and restart.
Either way, always clear the build cache after moving/fixing the folder:
npm run clean # removes the .next folder
npm run devThis project ships a .npmrc with legacy-peer-deps=true, which resolves a known, intentional version mismatch between @langchain/community and pdf-parse. If you still see an ERESOLVE error, make sure .npmrc exists at the project root and re-run npm install.
Check the toast notification for the actual error β common causes are an invalid/expired GOOGLE_GENERATIVE_AI_API_KEY, or the uploaded PDF containing no extractable text (e.g. a scanned image with no OCR layer).
This means DNS couldn't resolve your Redis hostname at all β it's not an application bug, it's telling you that host doesn't currently exist from your machine's perspective. Check, in order:
- Log into the Upstash console and confirm the Redis database in
REDIS_URLstill exists and isn't paused/deleted (free-tier databases can be deleted after long inactivity). - Re-copy
REDIS_URLfresh from the Upstash dashboard into.envβ watch for a stray trailing space, missingrediss://scheme, or an old value left over from before you rotated credentials. - Confirm you have working internet/DNS locally (
nslookup <your-host>.upstash.iofrom a terminal).
The app is designed to degrade gracefully if Redis is down: file uploads and chat still work, just without background re-embedding of that specific file until Redis is reachable again (use the "Retry" button on the Documents page once it's back).
Timed out fetching a new connection from the connection pool / Can't reach database server (Supabase)
- If this happens consistently, check the Supabase dashboard β free-tier projects auto-pause after a week of inactivity and need to be manually resumed.
- If it happens under load (e.g. several tabs/requests at once) rather than constantly, this is expected on a free-tier pooler combined with high network latency to the database region β the app now auto-tunes Prisma's connection pool (
connection_limit=10&pool_timeout=20) to reduce this, but a slow/distant DB region will still be slower than a nearby one. For production, deploy your app server in (or near) the same region as your Supabase project.
This project is licensed under the MIT License.
If you found this project useful:
- Star the repository
- Fork the project
- Share feedback and suggestions
For collaborations, suggestions, or contributions, feel free to open an issue or connect through GitHub.











