AI-powered study platform for Sri Lankan students. Upload lecture PDFs/slides and get cheat sheets, flashcards, Tamil explanations, mock viva practice, and ElevenLabs voice lessons.
Built for the Best Build by ElevenLabs category.
| Feature | Description |
|---|---|
| PDF/Slide upload | Students & lecturers upload lecture materials |
| Cheat sheet generator | Exam-focused markdown notes |
| Flashcards | Q&A cards with completion tracking |
| Tamil explanation | Simple Tamil / Tamil-English mix |
| Lecturer-style Tamil | “Explain like my lecturer in Tamil” |
| Voice mode | ElevenLabs multilingual TTS |
| Mock viva | One-by-one questions + AI feedback |
| Lecturer panel | Approve uploads, summaries, custom viva sets |
| Admin panel | Users, usage stats, content moderation |
- Frontend: Next.js 14, React, Tailwind CSS
- Backend: Node.js, Express, TypeScript
- Database: MongoDB (Mongoose)
- AI: OpenAI GPT-4o-mini
- Voice: ElevenLabs API
- PDF: pdf-parse
- Node.js 18+
- MongoDB running locally (or MongoDB Atlas URI)
cd smart-study-companion # your project folder (aaha)
npm run install:allcp server/.env.example server/.envEdit server/.env:
MONGODB_URI=mongodb://localhost:27017/smart-study-companion
JWT_SECRET=your-long-secret
OPENAI_API_KEY=sk-... # required for full AI features
ELEVENLABS_API_KEY=... # required for voice mode
ELEVENLABS_VOICE_ID=21m00Tcm4TlvDq8ikWAMcp client/.env.example client/.env.localNEXT_PUBLIC_API_URL=http://localhost:5000/apinpm run seed| Role | Password | |
|---|---|---|
| Student | student@demo.lk | student123 |
| Lecturer | lecturer@demo.lk | lecturer123 |
| Admin | admin@demo.lk | admin123 |
npm run dev- Login as student@demo.lk
- Upload a PDF (e.g. deadlock lecture notes)
- Open the document → Generate Cheat Sheet
- Create Flashcards → Explain in Tamil → Explain like my lecturer in Tamil
- Voice Explanation (ElevenLabs) — listen while revising
- Mock Viva Questions — answer and get feedback
- Save to library and download notes
├── client/ # Next.js frontend
├── server/ # Express API
│ ├── src/
│ │ ├── models/
│ │ ├── routes/
│ │ └── services/ # OpenAI, ElevenLabs, PDF
└── README.md
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register |
Sign up |
| POST | /api/auth/login |
Login |
| POST | /api/documents/upload |
Upload PDF/PPT |
| POST | /api/study/cheat-sheet/:id |
Generate cheat sheet |
| POST | /api/study/flashcards/:id |
Generate flashcards |
| POST | /api/study/tamil/:id |
Tamil explanation |
| POST | /api/study/voice/:id |
ElevenLabs voice |
| POST | /api/study/viva/generate/:id |
Start mock viva |
| GET | /api/admin/stats |
Admin analytics |
Live
- App: https://aaha1.netlify.app
- API: https://smart-study-api-sjc4.onrender.com/api/health
- Repo: https://github.com/AhamedAAHA/SmartStudyCompanionAAHA
Netlify (client/)
- Base directory:
client - Build:
npm run build - Publish directory: (empty — Next.js plugin)
- Env:
NEXT_PUBLIC_API_URL=https://smart-study-api-sjc4.onrender.com/api
Render (server/)
- Root directory:
server - Build:
npm install && npm run build - Start:
npm start - Env: copy from
server/.env.example— setMONGODB_URI,JWT_SECRET,OPENAI_API_KEY,ELEVENLABS_API_KEY,CLIENT_URL=https://aaha1.netlify.app
Database: MongoDB Atlas (allow 0.0.0.0/0 for Render)
- Without
OPENAI_API_KEY, the app returns demo placeholders so judges can click through the UI. - Voice mode requires a valid ElevenLabs key.
- PowerPoint files get placeholder text; PDF is recommended for best extraction.
MIT — for educational and hackathon use.