Finding people that share your passions and that can help you develop your skills further is no easy task these days, and traditional tutoring and education websites hardly help. It's often difficult to engage in one on one discussions – especially during quarantine – to facilitate teaching and learning. This has especially disadvantaged many of our group members, who found it difficult to be engaged with school after in-person engagement became a thing of the past. With online schooling continuing in many states and provinces in the 2020-21 school year, this problem will continue to hinder the learning of students.
But what if you could be friends with your teacher, making friendships while learning unique new skills? Introducing LassoLearn: a social learning platform where you can teach and learn in one on one discussions, build a support network of learners, and most importantly, be a cowboy in the wild west.
What it does
LassoLearn is a platform for users to engage in one-on-one discussions to teach and learn new skills. When a user creates an account on LassoLearn, they can select the topics that they would like to teach (this is referred to as “Ransom”) or learn (this is referred to as what is “Wanted”). To learn about a topic, users can search that topic using the search bar and find other users who they can talk to. Others can also contact the user to learn from them.
Clicking on a learner takes the user to the LassoLearner’s account page, where they can view more info and start a new chat. Starting new chats expends one coin, adding it to the tutoring learner’s account. It’s an economy of friendship and kindness!
All contact is done through the LassoLearn instant messaging service. Our live chat service updates in real time, and retains messages between every session. A unique live chat room is created for each pair of users.
How we built it
We built this app using React in order to develop the front-end client side of LassoLearn as well as Firebase to create, read, update, authenticate and edit user accounts. We used Firestore to store each unique user (authentication managed by Firebase Auth API) and enable our application’s various real-time chat rooms. Lastly, we used the React Context API to create a global state instance and avoid prop-drilling.
The primary dependencies we used are as follows: react-router-dom, MaterialUI, bootstrap, styled-components, Firebase tools etc.
Challenges we ran into
Our group members had very little experience using Firebase and some had no experience with React. As a result, it was a big challenge to implement both technologies into our project. To familiarize ourselves with these tools, we invested time in learning the basics of Firebase and React.
Another challenge we faced was optimization. Due to our lack of experience, the structure of our query requests drastically impacted the performance of our application, resulting in slow loading times and frequent server disconnects. Nonetheless, our willingness to reference related videos on YouTube, scavenge Stack Overflow and reach out to mentors helped us along the way.
Finally, making an instant messaging service was incredibly difficult. Making the website connect to Firebase fast enough to ensure real-time updates was difficult and required a lot of optimization on our part. Rahul eventually revamped the chat system from scratch, eventually achieving terrific real-time efficiency.
Accomplishments that we're proud of
We are proud to have created a web application and have learned the fundamentals of React and Firebase in such a short period of time. Furthermore, we are thrilled to have created an instant messaging service that updates in real time!
What we learned
We learned the fundamentals of React:. JSX syntax, class & functional components, state management, component life-cycle hooks, routing, props, and more. Similarly, we learned how to connect Firebase to a web application, create database queries, setup Firestore, manage documents, etc.
What's next for LassoLearn
In the future, we would like to bring LassoLearn to iOS and Android. In addition, we would also like to create new ways for users to teach/learn such as blogs, videos, video chat, and more!