Inspiration

We were inspired by Reddit, as we found that the features in Reddit are a mix of what we have learnt in previous modules such as CRUD Methods in BED, Front-End Work in FED and security features learnt in ESDE. Our logo, which depicts a creature with resemblance to a squid, was inspired by the series on Netflix, ‘Squid Game’ (only the squid part though).

We also found features that we can implement via Self-Directed Learning such as emailing a user to confirm their signup, using Captcha to verify the user is human, emailing a user to allow him/her to reset password in the event where they forgot their password.

We are able to implement features that are not found in Reddit, such as real-time Discussion Rooms, SMSing a user to reset their password (provide another option to reset their password) , statistics based on the upvotes and downvotes the user received on his posts (which was inspired by Youtube Creator Studio’s Analytics, where YouTubers are able to see details regarding their videos), making our application more unique and would standout.

What it does

This is Krakin, a reddit clone with multiple interesting features that promotes interaction between users through posts, discussion rooms and many more!

BUILT AS A MEN STACK

  • MySQL database
  • Express backend
  • NodeJs environment

Challenges we ran into

  • Arif: The key challenge that occurred numerous times while doing this project was learning how to integrate features into our project after learning via online resources. This is due to the fact that our project is set up very uniquely compared to resources online, which would make it less straight-forward. One way that I overcame this challenge is by actually questioning each line of code and its purpose. By doing so, I am able to understand the function of each code and able to adapt and integrate it into my project to make it work. Another way that I overcame this challenge is by consulting my team members in case of any hurdles. They were able to give another perspective and view the problem from a different angle. As a result of this and a different skill set, they would help me fix the problems that I faced, which would make the project better. What I have learnt from this experience is that to adapt, I should understand as it would be different for each situation and I should be more vocal in terms of receiving/giving help to and from my teammates, as we would overcome these problems at a faster rate while improving the team dynamic. I believe that I would take the experiences gained here and apply them in future situations.

  • Jim: The key challenge faced was to integrate the chatroom system into the server, where I had to use socket.IO. The issue of having to integrate different libraries and resources was always a recurring issue within our team, as the way our code was initially set up is different from the resources online. By referring to online resources and documentation, and experimenting on the code and causing the code to break at times, I was finally able to create a proper setup, and was able to get the server and client talking to each other via event-based communication. The help from online resources and documentation allowed me to grasp a better understanding of how the code works, and allowed me to conceptualise the event-based communication system to do more complex logics within the code, such as keeping track of rooms and users and making the real-time discussion room a functioning system. My takeaway from this experience is that not only have I discovered a new topic, which is about websockets that I can improve, research and use in future projects, I have also learnt that whenever something goes wrong, we must learn to take risk and fix the situation, and persevere in finding a solution.

  • Ruzaini: The key challenge I faced was my lack of skill in coding. The advanced feature that I had researched and chosen had been a challenge for me since I lacked some basic skills. Fortunately. I had been able to brush up on some basics and figured out how to integrate the advanced feature, charts, with our app. My teammates have also been very helpful as they helped me whenever I faced a brick wall in front of me. The other improvements that I wanted to implement were also difficult for me to implement but through watching tutorials online as well as researching on the internet I managed to be able to implement it in the app. On some areas, I had to adapt to the time frame given and thus were not able to flesh out the full detail of my feature. If I had been stubborn and not managed my time well, I would not have been able to meet the minimum requirements. Through this experience, I have learnt the importance of the basics, adapting to situations and research. I believe I will take these lessons learnt and apply it for my upcoming projects as well as for my daily life.

  • Yihen: One key challenge that I faced was that I could not do the confirm user feature because there was an error with the token and it was directly connected to the website so I could not get back the response, so I decided to consult my team members and they helped me to work together to solve the error. What I learnt from this experience is that getting help is very important if you are stuck, since the more brains the better.

  • Weilin: A challenge that I faced was when I was working on the Edit User Post function, I got a message saying that post edit was successful, but it was actually not successful in the backend. I was confused and got help from my team. It was then that I realised the post id was not allocated to the function. I have learned from this experience as well as finding out that seeking help from the team is a good way to overcome difficulties more easily.

Accomplishments that we're proud of

  • Payment
  • Fuzzy Search
  • Captcha
  • Statistics
  • Realtime Discussion Rooms
  • Many more

What we learned

As a team, one key learning that we as a team experienced is the importance of communication. We found that it was important for everyone to be on the same page in terms of the progress of the project and the quality of each of our features, as it would ultimately benefit us in the long run with the end product. We kept track of each other’s changes via GitHub, where each of us can see what a person has done specifically to the website. We also held meetings and face-to-face conversations regarding our progress and gave our own honest inputs regarding the quality of our own work. In these conversations, we knew we should be honest, critical (even if the truth may hurt) and be receptive to constructive criticism as all of us have the same common goal regarding this project = to deliver the best product based on our capabilities. From this key learning experience, we hope to take the benefits earned and apply it in future situations such as in a work environment, our Final-Year Project or even as soon as applying it in our current modules where group coordination is integral.

What's next for Krakin

Further enhancement of features and more features to implement more user interaction in the app

Share this project:

Updates