Introduction

WolfConnect is a mentorship platform designed to connect NC State students and alumni, fostering academic and professional growth through meaningful connections. This project highlights my skills in frontend and backend development, as well as database design and deployment. I contributed to this project as part of an agile team, utilizing React and Material UI for the frontend, PHP with Laravel for the backend, and MySQL for the database. The project is containerized using Docker to ensure consistency across environments and deployed on an Ubuntu virtual machine, enabling access within the NC State network.

Features

Discussion Forum

Our team successfully implemented the WolfConnect discussion forum to enhance community interaction and knowledge sharing among students and alumni. Users can create initial posts with a title and description, generating threads that others can reply to, fostering meaningful conversations. The forum homepage features a user-friendly feed of all active threads, allowing users to easily browse, search, and engage in topics of interest. This feature creates a dynamic space for professional networking, academic collaboration, and shared experiences within the WolfConnect platform.

Forming Connections

WolfConnect helps users build relationships by showing recommended connections on the homepage and letting them search for any user. From there, users can visit profiles and send connection requests. Once the request is accepted, they can message each other and see more details about each other’s profiles. Connected users can also update their connection status to "mentorship" if they would like.

Private Messaging

WolfConnect features a private messaging system designed to facilitate meaningful communication between users. Messaging becomes available only after forming a connection with another user. Once connected, the option to send a message appears on the user’s profile. In addition to accessing a conversation with a user through their profile, users also have access to a dedicated page that displays links to all of their ongoing conversations. On the page for a conversation, messages are displayed in chronological order based on their timestamp. New messages are promptly displayed to the user when they are delivered.

Account and Profile Creation

WolfConnect allows users to create an account seamlessly with Laravel's email verification feature. Upon registration, the system sends a verification email to the user's provided email address using a dedicated Gmail account configured with an app password in the .env file for secure email delivery. Once the user verifies their email, they can sign in and are guided through a series of profile creation pages. These pages allow users to add key details to their profiles, such as work experiences and educational achievements like bachelor’s degrees. This information is then displayed to other users on the platform, enhancing connectivity and engagement.

High Level Design

WolfConnect was built using a streamlined architecture:

  • Frontend: Built with React, JavaScript, and Material UI, sending HTTP requests via a reverse proxy. Containerized with docker.
  • Backend: Laravel (PHP) processes requests, with students authenticating via Shibboleth and alumni via magic links. Containerized with docker.
  • Database: MySQL stores user data and handles requests, ensuring reliable and efficient data management. Containerized with docker.

Database Schema

Agile Practices

My team followed an iterative approach to develop WolfConnect, with each phase focusing on tasks like VM deployment, messaging updates, and a discussion forum. We had weekly meetings with our sponsor and professor to share progress, adjust requirements, and set goals. As a developer, I worked on these features and adapted our approach based on their feedback. We stayed connected using Slack for communication and Zoom for meetings. We created agendas for sponsor meetings, and presented updates to the class and sponsors, which helped improve my communication skills. This experience taught me the importance of teamwork, adaptability, and communication in completing a large project.