Project Info
This project did not submit a demo video on Devpost.
Inspiration
Accountability during studying is hard when you do it alone, finding people to help you study with is such an important aspect of learning. If there was a way to connect with people anywhere who are learning what you are, studying could be easier than ever.
What it does
Using OpenAi, matchmaking is computed for users anywhere around the world by class, major, and special interest. Join StudyBuddy through your email, enter the information you need to learn, and you'll be paired to a video chat with another student interested in studyng too.
How we built it
We used next.js to code and build the website, OpenAi was used to queue matchmaking based on course material, and Agora was used to create two way video/audio communication.
Challenges we ran into
Creating an AI matchmaking system using FetchAI was our original plan, however impelenting this idea proved more difficult than anticipated. We instead pivoted to using OpenAI to do the matchmaking instead. This was not desired, as we wanted to use our sponsor's products as much as possible, but we didn't find it detrimental to the end product. Additionally, we created a chatbox for users who cannot speak or communicate through the video, which was difficult to implement without putting a lot of strain on the server side but was eventually solved using Supabase's realtime database functions.
Accomplishments we're proud of
We successfully implemented two way video communication, profile login with google, a chatbox, as well as an embedded music player for users to listen to while they study together. We also were able to make a complete website with home, about section, and profile section.
What we learned
We learned a lot about Supabase's data base functions. One of our teammates had little to no experience coding in js, but was able to learn a substantial amount and completed a majority of front end development while the other members worked on implementing the matchmaking and video chat.
What's next
We'd like to finish polishing a lot of the front end and finishing formatting, although the video and text chat is fully functional.
This is a Next.js project bootstrapped with create-next-app.
Getting Started
First, run the development server:
npm run dev
# or
yarn dev
# or
pnpm dev
# or
bun dev
Open http://localhost:3000 with your browser to see the result.
You can start editing the page by modifying app/page.tsx. The page auto-updates as you edit the file.
This project uses next/font to automatically optimize and load Geist, a new font family for Vercel.
Learn More
To learn more about Next.js, take a look at the following resources:
- Next.js Documentation - learn about Next.js features and API.
- Learn Next.js - an interactive Next.js tutorial.
You can check out the Next.js GitHub repository - your feedback and contributions are welcome!
Deploy on Vercel
The easiest way to deploy your Next.js app is to use the Vercel Platform from the creators of Next.js.
Check out our Next.js deployment documentation for more details.
Analysis
View
Metric
- 51
- 13
- 9
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
- JavaScriptIn code
- Next.jsIn code
- OpenAIIn code
- ReactIn code
- SupabaseIn code
- Tailwind CSSIn code
- TypeScriptIn code
8 of 8 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
50 KB
Source files
37
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Yelloo5191/StudyBuddy
56 files · 9.3 MB · @ 495258e
Structure
Interface
31 files · 55%Screens, components and styles rendered to the user.
Application logic
2 files · 4%Domain rules, services and shared utilities.
Data & schema
3 files · 5%Schema definitions, migrations and data access.
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
- TypeScript90%
- JavaScript4%
- Markdown3%
- CSS3%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
package.json
npm · 22- @fetchai/ai-engine-sdk
- @supabase/ssr
- @supabase/supabase-js
- agora-chat-uikit
- agora-rtc-react
- agora-rtc-sdk-ng
- fetchai-sdk
- next
- openai
- react
- react-dom
- react-icons
- react-use-audio-player
- zod
- +8 more
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 matchmaking by class, major, and interestVerified
Using OpenAI, matchmaking is computed for users by class, major, and special interest
Claimed on Devposthigh confidencesrc/app/dashboard/actions.ts:123— openai.chat.completions.create is called with a structured PairedMatch schema over queued users' classes/majors/interestssrc/app/dashboard/Form.tsx:14— Form collects classes, majors, interests and submits to startSessionsrc/app/dashboard/actions.ts:38— addToQueue inserts user data into waiting_queue and triggers fetchMatches
Complete website with home, about, and profile sectionsVerified
We also were able to make a complete website with home, about section, and profile section
Claimed on Devposthigh confidencesrc/app/page.tsx:1— Home page route existssrc/components/AboutSection/About.tsx:9— About section component renders product information, music/AI sections and a Get Started CTAsrc/app/profile/page.tsx:9— Profile page fetches the user's Supabase profile and renders avatar, name, email and account actions
Email/Google account loginVerified
Join StudyBuddy through your email; profile login with Google
Claimed on Devposthigh confidencesrc/app/login/actions.ts:8— LoginWithGoogle calls supabase.auth.signInWithOAuth with provider 'google' and redirectssrc/app/login/SignInButton.tsx:6— Form submits to LoginWithGoogle server actionsrc/app/auth/callback/route.ts:1— OAuth callback route present to complete the login flow
Match users into a two-way video chatVerified
you'll be paired to a video chat with another student
Claimed on Devposthigh confidencesrc/app/dashboard/actions.ts:82— After a match is found, a channel name is built from the two user ids and the user is redirected to /channel/[channel]src/app/channel/[channelName]/page.tsx:20— Channel page renders the Dashboard component with the Agora appId and channel namesrc/components/Dashboard.tsx:120— useJoin/usePublish from agora-rtc-react join the Agora RTC channel and publish local mic/camera tracks; RemoteUser renders the paired student's video
Next.js, Tailwind, TypeScript, Supabase, Agora tech stackVerified
Built with agora, google-cloud, nextjs, supabase, tailwind, typescript
Claimed on Devposthigh confidencepackage.json— Dependencies include next, @supabase/supabase-js, agora-rtc-react, tailwindcss, typescriptsrc/utils/supabase/client.ts:1— Supabase client utility present and used throughout the app
Text chatbox for users who cannot use video/audioVerified
created a chatbox for users who cannot speak or communicate through the video, using Supabase realtime
Claimed on Devposthigh confidencesrc/components/Chat/Chat.tsx:47— Subscribes to a Supabase realtime broadcast channel scoped to the room_id and appends incoming messagessrc/components/Chat/Chat.tsx:103— Form submit handler sends a broadcast message payload with text, user id, avatar and namesrc/components/Dashboard.tsx:67— Chat component is rendered alongside the video call in Dashboard
Two-way video/audio communication via AgoraVerified
Agora was used to create two way video/audio communication
Claimed on readmehigh confidencesrc/components/Dashboard.tsx:4— Imports AgoraRTC, AgoraRTCProvider, useJoin, usePublish, useLocalCameraTrack/useLocalMicrophoneTrack, RemoteUser and wires up a live call with mute/hide camera controls and a participant cap of 2
Embedded music player for studying togetherCode-supported
an embedded music player for users to listen to while they study together
Claimed on Devpostmedium confidencesrc/components/Music/Music.tsx:4— A full Music component exists with Supabase-backed playlist fetch, realtime song inserts, play/pause and volume controlssrc/components/Dashboard.tsx:73— The Music component import/usage is commented out in Dashboard.tsx and replaced with a static muted YouTube iframe, so the built player is not actually wired into the live call UI
FetchAI-based matchmaking (original plan)Claimed only
Creating an AI matchmaking system using FetchAI was our original plan, however implementing this idea proved more difficult than anticipated; pivoted to OpenAI
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.