Inspiration

Let’s be honest: McGill is a powerhouse, but it's also a labyrinth. You can spend four years sitting in massive lecture halls like Leacock 132, inches away from someone in your major, yet you remain total strangers - and when you do connect with someone, how can you maintain that relationship after the semester ends?

Human connections shouldn't be a chore. We decided to build OpenHours to fix the "social friction" of the post-hybrid era. By showing when and where students are "open" to connect, OpenHours helps students find their way to each other, turning missed connections into meaningful, real-world friendships. It removes the social anxiety and awkwardness of "cold-messaging" someone, and makes forming connections low-stress, everyday, and spontaneous.

What it does

OpenHours is an interactive campus map and social discovery tool designed to bridge the gap between digital interaction and physical presence.

Custom Sessions: Create a "Session Post" specifying exactly how long you’ll be there and your current vibe, whether you’re grinding for a CHEM 110 midterm, looking for a gym partner at the Currie Gym, or just grabbing a coffee at Burnside.

Beacon System: Users can "pin" their exact location on the McGill campus map, signaling their availability to the community in real-time.

Spontaneous Connection: Other students can browse active pins, see what's happening near them, and simply show up to connect.

Identity First: Beyond just a location, every pin is attached to a profile. See a student’s major, year, and a custom "About Me" to find like-minded peers before you even say hello.

Live Persistence: Unlike static boards, our backend ensures that sessions are live and data is saved securely in our MongoDB database, so your Open Hours are always accurate.

How we built it

We used React and Next.js to build the frontend, and Node.js and MongoDB for the backend. To implement the application's map component, we used Google Maps' Maps Javascript API with custom styling and markers. MongoDB saves users' login credentials and dynamically stores each session that is posted.

MongoDB: Our code interacts with the MongoDB through our API routes. The main functions we used were storing user data (Strings, pictures as DataURL), post geospatial location using GeoJSON Point for placing map pins and finding pins in a certain proximity, as well as fetching all active posts to display.

Challenges we ran into

Our biggest hurdles were rooted in environmental synchronization and version control. We nearly derailed our progress early on by accidentally pushing massive, auto-generated folders like node_modules and .next to our repository, which led to a nightmare of "trash code" and complex merge conflicts that required us to manually clean our Git index and implement a strict .gitignore strategy. On the technical side, bridging the gap between our Next.js frontend and Node.js backend felt like a constant battle. We frequently encountered port conflicts where the server would hang or refuse to bind to the local server.

Accomplishments that we're proud of

This is our first time experimenting with Google AI Studio and for two of our members, their first time building a digital product. Overall, it was a great learning experience and opportunity to pick up new skills on-the-fly, and familiarize ourselves with the actual process of developing a full-stack application.

What we learned

Through this project, we mastered the challenge of synchronizing the Google Maps API with our backend, ensuring that every user's pin was accurately mapped and updated across all clients. Additionally, this project taught us the importance of structured data management, as we designed a MongoDB schema to link student profiles with session posts, ensuring the information remained consistent and searchable. Beyond the core features, we gained hands-on experience in full-stack troubleshooting, from resolving server-side port conflicts to maintaining version control on GitHub to prevent code regression. Ultimately, we learned that building a community tool is about more than just the stack; it’s about engineering a smooth, reliable bridge that translates digital signals into real-world connections.

What's next for OpenHours

Looking ahead, our roadmap for the future includes:

Beyond the McGill Bubble: Expand our infrastructure to support multi-campus environments, allowing students at Concordia, UdeM, and beyond to "open their hours" and foster inter-university collaboration.

Real-Time Push Notifications: Integrate WebSockets to alert users the moment a "Study Beacon" is dropped in their favourite building or when a friend starts a gym session nearby.

Smart Filtering & Interests: Implement a tagging system so users can filter the map by specific goals, i.e. finding an "Organic Chemistry" study group or a "Pickup Basketball" game in seconds.

Verified Student Auth: Restrict registration exclusively to verified university email addresses such as @mail.mcgill.ca or respective institutional domains. We can then guarantee that the platform remains a safe, exclusive space for students only, preventing outside access.

Bug fixes and features: We have small bugs to fix as well as fully implementing the trending and nearby features.

Share this project:

Updates