Inspiration

We've always found that the best way to study is in a group. It keeps you accountable, fills the gaps in your own notes, and makes the work less lonely. But when we looked for an easy way to actually find and join study groups, there was nothing good out there. So we built StudyHub to make joining a study group simple and available to everyone, and then took it a step further with Gemini.

What it does

StudyHub lets students create and join study groups tied to specific course codes (e.g. COEN 244). Each group is its own workspace:

  • Discover & join groups filtered by course code and number, with live member counts and capacity limits (e.g. 4/8).
  • Per-group chat so every group has its own real-time conversation.
  • Shared documents any member can upload and access.
  • AI study plans (Gemini): upload course material, pick the chapters, and set a start and end time. Gemini reads the document and builds a time-blocked study plan that fits the exact window, with key concepts, definitions, and self-test questions.

How we built it

  • Frontend: React + TypeScript, scaffolded with Vite for fast HMR.
  • Database: Firebase Firestore. Each group is one document with messages, docs, and study_guides as subcollections, so the group ID is the room ID.
  • Storage: Firebase Storage for uploaded files; metadata and download URLs are written back to Firestore.
  • AI: the @google/genai SDK calling gemini-2.5-flash. We send the document inline with a prompt that includes the session length and target chapters, and Gemini returns a time-aware study plan.

Challenges we ran into

  • Storage CORS: uploads from localhost were blocked until we configured the bucket.
  • SDK churn: migrated off the deprecated @google/generative-ai to the new @google/genai SDK.
  • Data consistency: unified members into a single array using arrayUnion/arrayRemove.
  • Prompt engineering: getting Gemini to respect the actual session length instead of returning a generic summary.

Accomplishments that we're proud of

  • A Gemini integration that adapts to both the content of the document and the constraints of the student's available time.
  • A clean Firestore structure where chats, files, and AI guides all hang off one group document.
  • A polished UI with live capacity bars, per-group chats, and drag-and-drop uploads.
  • A full create, join, chat, upload, and generate flow, end to end, within the hackathon.

What we learned

  • Firebase Firestore: structuring a real-time database and using subcollections to keep all of a group's data under one document.
  • Firebase Storage: uploading and serving files, generating download URLs, and dealing with CORS configuration.
  • Gemini API: multimodal prompting by feeding documents inline and shaping the output with explicit constraints like time and scope.
  • Google Maps: integrating location data to show and find study group spots.

What's next for StudyHub

  • More Gemini: auto-generated flashcards, practice quizzes, and a chatbot that answers questions about a group's documents.
  • Tutors: let students connect with tutors directly through their study groups for extra help.
  • Study room booking: Concordia already has a system for reserving study rooms, so we'd love to partner with them to let students book a room straight from StudyHub when they form a group.
  • Server-side Gemini via Cloud Functions to keep the API key secure.

GitHub Repo

Share this project:

Updates

Submission history