As co-op students in uWaterloo, we often have to practise and enhance our interview skills. Hence, we wanted to create a tool that would help others effectively improve their skills by answering custom sets of questions based on what aspects of interviewing they want to improve, such as behavioural or finance interviews. Practice Makes Perfect provides a broad interview experience that anyone can use.
What it does
With Practice Makes Perfect (PMP), you can practice alone or in a group as multiple people can join one "interview room" through a room code and view the same questions while video calling. We have an extensive database that returns a random question that falls under the chosen tags to create a unique interviewing experience.
Users can also add their own tags and questions to make a more diverse questions database for the following users!
How we built it
The front end of our web app was built with React. We built the components using React hooks and styled them with Bootstrap. PeerJS was used to handle peer-to-peer video calls between room members. The server for the backend was built with Express and Socket.io. The Express server interfaces with our database for managing questions and tags. The Socket server manages the rooms and synchronization. We used MySQL to store the questions and tags and hosted the SQL server via AWS.
Challenges we ran into
- syncing video feeds between users in the same room and updating the question display whenever one of the users goes onto the next question.
Accomplishments that we're proud of
- we're super proud of building a functioning app!
What we learned
- We learned how to synchronize state between users in a room using socket.io
- As someone who is inexperienced in back-end development, over the project I (Tracy) was able to build an API that received requests from the front end and passed SQL statements to our AWS MySQL database.
What's next for Practice Makes Perfect (PMP)
Some future improvements for this web app are ensuring that questions aren't repeated and implementing a voting system where users can vote on the best questions. We also wanted to integrate our web app with other tools such as Leetcode. Other features to consider are adding video call controls, the option for video and audio recording, and question-answer analysis where the user would receive feedback after answering each question.