Project Info
This project did not submit a demo video on Devpost.
Inspiration
Through meeting hundreds and hundreds of learners from all over the world in our time as university students, we have slowly realized over time the variability that exists in education systems around the world. After many conversations, it is apparent that in many areas, teenagers and young adults do not have anywhere near the quality of education that one may find at an accredited four-year university-- an experience that requires thousands of dollars to have. With such a boom for artificial intelligence and research in educational best practices, we came up with a way to allow for all those who yearn for this learning to have it. As such, we sought to build an AI-powered tutoring with a human touch to create an engaging, community-based, learning experience. The goal is to help students, no matter where they are, to get real-time guidance through a platform that is not just instructional, but also one that is engaging and that pushes students to want to learn more. We believed that our combined experiences in machine learning and fullstack development was fit for the job.
What it does
Zina is a personalized group instructor that uses video and audio sessions to guide student learning. Students can generate course topics of their choice and be in a classroom with peers of their choice, putting the power of learning into the hands of the students. Our application supports features such as lesson plan generation, live video streaming, questions and answers.
How we built it
Tools: Next.js + React.js Tailwind CSS Flask Socket.IO WebRTC Deepgram Agora Video API Chroma DB Multimodal Data Langchain
Challenges we ran into
One of the biggest challenges was ensuring speech to text and text to speech communication is effective and engaging. Handling real-time communication across various network speeds was tricky, and balancing performance with AI processing for live transcription and analysis was another technical hurdle. Integrating the Deepgram API and ensuring the seamless operation of AI services without lag was the main point of challenge here. Additionally, ensuring the platform worked equally well across different devices and operating systems required extensive testing and optimization.
Accomplishments we're proud of
We are proud of the seamless integration between AI-powered transcription, real-time feedback, and live tutoring sessions. The combination of voice recognition and real-time analysis to help tutors adjust lessons based on students' needs was a significant accomplishment.
What we learned
The importance of scalability in real-time applications. Building for low latency while incorporating AI services that require heavy computational resources taught us how to optimize both frontend and backend processes in short time frames. We also gained insights into how students and tutors interact in virtual settings, helping us design a more intuitive user experience. This project also reinforced our knowledge of WebRTC and how to leverage AI to enhance human interaction in education.
What's next
Next, we hope to expand on our philosophy of quality education by engaging in continuous research in education practices to ensure that students' needs are met. Due to the limited time constraints, we were forced to cut corners, which made us all the more eager to go the full lengths to make this project complete.
This repository has no readme, or GitHub could not be reached.
Analysis
View
Metric
- 34
- 26
- 15
- 10
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FlaskIn code
- HTMLIn code
- JavaScriptIn code
- LangChainIn code
- Next.jsIn code
- PythonIn code
- ReactIn code
- Tailwind CSSIn code
9 of 9 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
79 KB
Source files
34
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
noahk004/zina
57 files · 37.0 MB · @ 8d83d48
Structure
Interface
30 files · 53%Screens, components and styles rendered to the user.
Application logic
1 file · 2%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript78%
- Python15%
- HTML4%
- Markdown2%
- CSS1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
frontend/package.json
npm · 17- @deepgram/sdk
- @radix-ui/react-icons
- agora-rtc-react
- cross-fetch
- dotenv
- framer-motion
- next
- react
- react-dom
- react-speakup
- react-speech-recognition
- react-spinners
- regenerator-runtime
- socket.io-client
- typewriter-effect
- +2 more
backend/requirements.txt
pypi · 15- beautifulsoup4
- chromadb
- deepgram-sdk
- eventlet
- flask
- langchain
- langchain_community
- langchain-chroma
- langchain-mistralai
- open-clip-torch
- pillow
- Pillow
- pydub
- python-socketio
- requests
package.json
npm · 1- framer-motion
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
Feature verification
AI-generated personalized lesson content (RAG over course topics)Verified
Zina generates lesson content and guides students using retrieval-augmented AI (lesson plan generation)
Claimed on Devposthigh confidencebackend/server.py:249— rag_chain built with Langchain (retriever + PromptTemplate + ChatMistralAI) retrieves scraped text about course topics and generates responsesbackend/server.py:341— send_message socket handler iterates course_outline topics, invokes rag_chain per topic and emits generated text_contents/images to the clientfrontend/src/app/courses/[id]/classroom/page.js:75— Frontend listens for 'message' socket event and renders returned images/text as the lesson slideshow
Chroma vector database for content and image retrievalVerified
Built with Chroma DB for multimodal data retrieval
Claimed on Devposthigh confidencebackend/server.py:49— chromadb.Client() instantiated; text_collection (via langchain_chroma.Chroma) and image_collection (OpenCLIPEmbeddingFunction) created and queriedbackend/server.py:344— image_collection.query used to retrieve topic-relevant images by embedding similarity
Invite link to join classroom with peersVerified
Students can be in a classroom with peers of their choice
Claimed on Devpostmedium confidencefrontend/src/app/courses/[id]/lobby/page.js:49— handleButtonClick copies an invite URL with channel/token to clipboard so classmates can join the same Agora channel
Live video streaming classroom (Agora Video API / WebRTC)Verified
Live video streaming lets students be in a classroom with peers, built with Agora Video API and WebRTC
Claimed on Devposthigh confidencefrontend/src/app/courses/[id]/classroom/page.js:19— AgoraRTC client created, AgoraRTCProvider wraps classroom, useJoin/useRemoteUsers connect to a channel and render LocalUserComponent/RemoteUserComponent video tilesfrontend/src/app/courses/[id]/lobby/page.js:41— Lobby page also joins the Agora channel and shows local/remote video before entering the classroomfrontend/src/components/agora/tokenGenerator.js:1— Agora RTC token generation utilities present for the video call
Socket.IO real-time communicationVerified
Built with Socket.IO for real-time client-server communication
Claimed on Devposthigh confidencebackend/server.py:271— socketio.Server created and wrapped with Flask app via socketio.WSGIAppfrontend/src/app/courses/[id]/classroom/page.js:10— Frontend connects with socket.io-client to the backend at localhost:5050
Web scraping to populate course knowledge baseVerified
Multimodal data ingestion supporting lesson content (implied by Chroma/Langchain use)
Claimed on Devpostmedium confidencebackend/server.py:128— scrape_text_and_images fetches external URLs (programiz, geeksforgeeks) with BeautifulSoup, splits text with RecursiveCharacterTextSplitter, and stores into the vectorstore/image_collection
Course topic generation from free-form user promptCode-supported
Students can generate course topics of their choice
Claimed on Devpostlow confidencefrontend/src/app/courses/create/page.js:12— getParam only pattern-matches the free-text prompt against 3 hardcoded topics (data_structures, stacks, queues); no AI-driven topic/course generation exists, so 'generate any topic' is not actually supported, only a fixed set
Deepgram speech-to-text / text-to-speech integrationCode-supported
Built with Deepgram for real-time transcription and voice communication
Claimed on Devpostlow confidencebackend/server.py:53— main() sets up a full Deepgram live-transcription websocket client (DeepgramClient, LiveOptions, event handlers) but it streams from a hardcoded local URL and is not invoked from the actual Socket.IO/session flow (only called at module bottom, separate from send_message)backend/server.py:294— Deepgram text-to-speech (SpeakOptions) code inside send_message is entirely commented outfrontend/src/app/context/DeepgramContextProvider.js:38— Frontend Deepgram live-connection context exists but is not imported/used anywhere else in the app and depends on a non-existent /api/authenticate route, so it is dead code
Text-to-speech playback of lesson contentCode-supported
AI-powered tutoring uses audio sessions to guide student learning
Claimed on Devpostlow confidencefrontend/src/app/courses/[id]/classroom/page.js:120— window.speechSynthesis.cancel() referenced on cleanup implies browser TTS was intended for narrating lesson content, but no window.speechSynthesis.speak() call was found wiring the returned text_contents to audio playback
Voice input / questions to the tutor (Q&A)Code-supported
Application supports questions and answers
Claimed on Devpostmedium confidencefrontend/src/app/courses/[id]/classroom/VoiceToText.js:8— Dictaphone/VoiceToText component uses react-speakup (browser Web Speech API) to transcribe speech and emits it via socket 'send_message' to the backendbackend/server.py:341— send_message handler treats any 'data' payload as a topic/question and runs it through rag_chain, but the code only ever iterates course_outline.get(data, [data]) with canned topics; no dedicated free-form Q&A endpoint or UI response path distinct from the lesson playback flow was found
Active courses dashboard / list of user's coursesClaimed only
Collaborative learning environment where students manage courses/classrooms
Claimed on Devposthigh confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.