Semester Project
The goal of the project was to build a platform for movies on the cloud while using best practices for DevOps throughout the development. The platform was required to use OMDb or TMDb as data source for movies or own data set. It was also required that the platform can persist user data such as favourite movies and movie ratings on the cloud. Lastly the platform should also be deployed live and be accessible to everyone on the internet.
The chosen technology stack for the project was MongoDB Atlas (Cloud based NoSQL Database) and Realm for the backend cloud infrastructure of the application. React was chosen for the frontend together with Redux, React Query and several other component libraries to assist the development of the application.
In terms of DevOps, a CI/CD pipeline was integrated in the project to automate tasks. The DevOps tool of choice was CircleCi and by integrating it in the project, workflows such as project build, testing, test coverage and deployment were fully automated. Lastly, a set of processes and methodologies about software development had to be followed throughout the project. That includes performing adequate analysis about the problem domain followed by creating the system design and documentation and finally implementing the solution.
Features
The application was designed to fulfill the business requirements of the project. Those requirements are listed as features which were implemented during the project period.
User Authentication
The web application allows users to register and login so they can access and use the platform.
Users are authenticated through the cloud provider - MongoDB Realm which offers the user authentication service using JWT token.
Design and Development
The components in React were designed to satisfy the latest trends in web design. Consistent style throughout the components informs both the aesthetics and user experience across the website and its content. Material UI and ReactStrap component libraries were used to speed up the development of the web application due to the short project period of 3 weeks.
Testing and Deployment
Jest and Enzyme were used to test the components in React for any defects before deploying changes to the production codebase. Upon successful test run, if all component tests are passing, the new code will be automatically deployed and the updated web application hosted on Firebase Hosting. The process of pushing new code, then testing that new code and finally deploying it live was fully automated by the CI/CD pipeline in CircleCi.
Testing and deployment of the backend services and functions was done through the available tools from MongoDB Cloud.
Project outcomes
All user stories/requirements were successfully implemented over the course of 3 weeks. The project team consisted of me, together with 2 other colleagues from college. From this project I learned concepts and considerations about Cloud Computing as well as development in such environments.
Furthermore, I have gained an understanding of CI/CD and how important it is for medium to large sized projects. It can greatly assist the process of implementing, testing and deploying software by automating these workflows. What is more, I became more advanced in React development since I was mainly responsible for the client side. The project was graded 12 on the Danish 7-point grading scale.