Bnoteable — A Platform for Those Who Love To Create Music

Final-3-06-1
MuStack
  • Score Case study score
    5.0
  • Date Published
  • Reading Time 3-Minute Read

Developing and improving the efficiency of a networking platform for musicians.

Project Summary

Continuing the development of a musician networking platform which involved implementing new features, enhancing the existing ones and fixing bugs/errors/issues in the platform by improving its efficiency and productivity along with making the platform responsive.

Problem Statement

Our client (who is the founder and CEO of a new company that connects music students to colleges, and colleges to students) wanted us to design and create a social platform where each and every user is able to connect and interact with one another easily. He came to us after a bad experience with some other company and was expecting to continue the development by improving website performance as well as efficiency. The platform had various bugs which needed to be fixed and some major features were to be added like payment service, otp service, adding more security along with improving existing features. Performance of platform was being affected as there were some major issues like:

  1. Deployment architecture, everything was deployed on a single EC2 instance meaning there were high levels of downtime. The performance was impacted more when the user base was increased.
  2. The videos on his platform were taking a lot of time to load

Solution

  • We followed MVC architecture for developing REST API using express as middleware and mongoose for managing data in MongoDB.
  • Authenticated API with jwt by using jsonwebtoken package.
  • Added payment service in the platform by integrating stripe payment gateway with help of stripe package,
  • Created OTPs for security/validation which was communicated via SMS with help of Twilio.
  • To improve the performance, we deployed the backend on a separate ec2 instance with nginx as reverse proxy and pm2 as process manager which comes with a built in load balancer and helps to keep the application alive forever.
  • Installed nginx on the server, changed the nginx.conf file configurations as per the requirement and it worked as a load balancing solution.
  • Replaced the lets encrypt SSL certificates with ACM(AWS Certificate Manager) to make certificate renewal, provision and management process better and easier.

Adding new features to the platform on the front end involved creating several components, services, directives, pipes and modules in Angular.

  • To reduce the load time we implemented lazy loading with help of lazy load routes. The reason behind increased load time for videos was use of video tag over secured protocol, to solve this we used iframe for rendering videos which proved to be much faster.
  • We changed the existing deployment architecture and moved the frontend to S3 so that load on the server can be reduced.
  • We moved the front end to S3 with CloudFront as CDN for speeding up the distribution of web content and improving performance.

Technologies

Angular 10, Node, Express, MongoDB, AWS S3, EC2, CloudFront

Success Metrics

  1. Provided all the deliverables within the expected deadlines, improved performance as downtime was reduced and videos were no longer buffering for a long time.
  2. Met all the expectations of the client and with positive feedback. All his meetings with directors and students were successful due to which he wanted us to implement some more new features on his platform.
  3. Continuous reporting of progress to the client.