🚀 Inspiration
At McGill, finding people studying the same course is surprisingly hard. Students hop between Discord servers, WhatsApp groups, and random DMs just to form study groups. First-years and international students often study alone not because they want to, but because they don’t know who else is studying the same thing at the same time.
We wanted something simple: a real-time, privacy-safe way to discover peers instantly not just for studying, but also to make new friends, expand social circles, and feel more connected on campus. Our goal was to combine academic collaboration with community-building in one seamless experience. 📚 What it does
myPeers is a real-time study session matchmaker for McGill students. It lets students: • Sign up using a McGill email and complete their profile (name + 9-digit student ID). • Create or join study sessions with course, status, and location. • See who else is studying the same course, live. • Chat one-to-one with classmates using a built-in messenger with image/PDF sharing. • Get instant updates across devices thanks to realtime subscriptions. • Enjoy a clean, McGill-themed UI that works on mobile and desktop.
🛠 How we built it • Frontend: React + Vite + Tailwind CSS • Backend: Supabase, JavaScript • Auth for secure login + McGill domain enforcement • Postgres with RLS for profiles, sessions, and messages • Realtime for presence tracking and live chat • Storage for attachments with path-scoped access rules • Deployment: Railway using Nixpacks with environment-based configuration
🧩 Challenges we ran into • Designing tight Row-Level Security rules that protect all user data while keeping queries fast. • Handling ambiguous Supabase auth errors (wrong password vs. unknown account). • Building a proper session lifecycle (create → heartbeat → expire) without ghost sessions. • Implementing realtime chat and presence with zero delays and no race conditions. • Ensuring file uploads remain secure, private, and linked to the correct user.
🏆 Accomplishments that we’re proud of • A fully real-time cross-device experience with no backend servers. • Clean, polished, McGill-themed UI with clear states for sessions and chat. • Robust RLS-based security with strong user data protection. • A smooth onboarding flow (verified login → profile completion → instant sessions). • A reliable presence system that updates dashboards instantly for all users. • End-to-end messaging with attachments that appear in real time.
📘 What we learned • Designing the database schema upfront simplifies everything from UI to RLS. • Realtime presence systems need clear lifecycle semantics, not just WebSockets. • UX matters: tiny details like duplicate student IDs, expired sessions, and password resets shape trust. • Modern serverless stacks (Supabase + Railway) can power surprisingly complex realtime apps.
🔮 What’s next for myPeers • Group chats and course-wide discussion channels. • Availability windows and smart matching (same course, same topic, nearby). • Push notifications for replies, invites, and session updates. • Calendar integration, streaks, and study goals. • AI-assisted study suggestions based on course activity.
Built With
- css
- javascript
- postgresql
- react
- supabase
- tailwind
Log in or sign up for Devpost to join the conversation.