Inspiration

The shift towards remote hiring and distributed development teams has highlighted a major flaw in current processes. Traditional video conferencing tools fail to provide an integrated environment where communication, coding, and evaluation can occur simultaneously in a systematic and controlled manner. Interviewers and candidates constantly have to juggle between separate video apps and disjointed code-sharing links. This gap created the necessity for a unified platform specifically designed for technical assessments and collaborative programming. We wanted to build a solution that eliminates the need for multiple external tools and enhances overall efficiency.

What it does

CodeMeet is a web-based real-time technical interview and collaboration platform designed to simulate the experience of an in-person technical interview. It integrates live video communication, a collaborative code editor, and real-time code execution into a single unified interface.

Secure Sessions: A host can create a secure interview room and generate unique meeting credentials such as a Meeting ID and password.

Real-time Collaboration: Participants can write, edit, and review code simultaneously.

Live Execution: The platform supports execution of code in multiple programming languages, allowing immediate evaluation of program outputs during interviews.

In-Session Chat: It provides a real-time messaging feature for text-based interaction.

How we built it

We utilized a robust, modern MERN-based client-server architectural model.

Frontend: Developed as a Single Page Application using React and Vite for fast, dynamic, and responsive user interfaces. We integrated the Monaco Editor to provide a powerful coding interface with syntax highlighting.

Backend: Built with Node.js and Express.js to manage routing, session control, and asynchronous operations efficiently.

Database: MongoDB and Mongoose ODM are used to securely store user profiles, session information, and related records.

Real-Time Communications: We integrated Stream Video and Chat Services to enable low-latency video, audio, and messaging.

Code Execution: JDoodle API was securely integrated into our backend to proxy code execution requests.

Authentication: We used Clerk Authentication to manage user identity and secure session access.

Challenges we ran into

Building a synchronized real-time system came with its hurdles. One major challenge was handling race conditions during session joining. We had to implement an atomic update using MongoDB's $expr and $size operators to check the participant limit and push the new user in a single operation, preventing the race condition where two users pass the length check simultaneously. Additionally, securely proxying raw code execution requests while correctly mapping frontend language keys to the JDoodle API's specific language and version indices required careful backend orchestration.

Accomplishments that we're proud of

We successfully combined live video communication, collaborative code editing, and real-time code execution within a single system, eliminating the need to switch between multiple applications. We are incredibly proud of our secure session-based model that ensures only authorized participants can join interview rooms using unique credentials, maintaining the integrity of the sessions. Furthermore, building a scalable and modular architecture that supports multiple concurrent sessions without performance degradation was a massive win for our team.

What we learned

This project provided immense practical exposure to integrating multiple real-time communication systems and secure application architecture within a single scalable web application. We deepened our knowledge of full-stack development. We also learned how to manage complex component state in React for real-time updates and how to efficiently handle external API integrations (like Stream and JDoodle) without blocking the main server threads.

What's next for CodeMeet

While the platform currently offers a seamless interview experience, we plan to enhance the system by introducing features such as interview session recording and advanced analytics for interview evaluation. Furthermore, we aim to integrate AI-assisted code analysis to help interviewers gauge time/space complexity instantly, and expand support for additional programming languages.

Built With

Share this project:

Updates