AMA BEATS: FAST MOBILE DEVELOPMENT
SUPER APP: GAME OF SONGS
Game of Songs is our music game hub. It aims to be the single place to play all Amanotes music games & partners.
This idea started with Silver, our co-founder shared "How to optimize the user's playing time, so instead of having to download all the music games one by one and have to switch back and forth, jump to different apps, now players can centralize 1 app and play them all.
After years of development, we’ve achieved creating a super app. It’s a relatively complex application with many screen elements, experiences with many components (choice of games, favorite songs), screen experiences from swiping, scrolling complexity of UI, and development.
The development framework needs to be optimized efficiently to ensure all the run smoothly. In this issue, we will dive into two fundamentals that Amanotes has applied. If you are looking for best practices on technology for your next mobile app, this issue is just for you!
FLUTTER FOR CROSS-PLATFORM
Native vs cross-platform is a never-ending debate that has divided the tech community for years. Companies like Uber are coming up with their cross-platform app framework—Ribs— to rewrite their driver app.
Cross-platform framework seeks to generate an app that reaches out to as many users as possible by covering a wide number of end devices during the programming and creation process. If you planning to develop an application that will target mass users then a cross-platform framework is your choice.
If you're planning to develop an application that will target mass users then a cross-platform framework is your choice. Several cross-platform app development frameworks are out there, each with its own pros and cons. At Amanotes, we're using Flutter.
Flutter offers a hot reload and you can make practically any change instantly, a noticeable improvement is a performance it doesn’t depend on additional APIs like React Native.
The advantages of Flutter are budget-friendly, the app's performance is high & shortens app development time compared to development in native programming languages such as Swift/Objective-C & Kotlin/Java.
However, Flutter uses Dart programming language - a less popular language, less documentation is used by the programmer community, and the support libraries are not many. To learn and use Flutter effectively, programmers often need previous mobile native coding experience and high self-learning ability.
CI/CD FOR APP DEVELOPMENT
Continuous Integration (CI) and Continuous Delivery (CD), also known as CI/CD, embody a culture, operating principles, and a set of practices that application development teams use to deliver code changes more frequently and reliably.
The main concepts attributed to CI/CD are continuous integration, continuous delivery, and continuous deployment. CI/CD is a solution to the problems integrating new code can cause for development and operations teams (AKA "integration hell").
How does CI/CD work?
Our CI/CD process will be a combination of (1) the Git repository and (2) the CI/CD tool. When the Developer makes any changes on the Git repository (for example, creating a pull request), the Git repository will issue a notification to the CI/CD tool that there is such a change. In response to the message, the CI/CD side will automatically perform the actions previously set for the pull request action.
After executing all the above-installed commands, the CI/CD will update the opposite results to the Git repository to know whether the generated pull request has passed all processes (including testing) on the side of CI/CD or not. Accordingly, when reviewing the code, the Reviewer only needs to look at the final state of the pull request (passed or failed) to know if the pull request has met the quality, and has been optimized, or not.
Pros & Cons Explored
When to use the CI/CD process?
We encourage the team to apply the CI/CD process and the integration should be done as soon as possible. Giang's point of view is that when there is a good process, the quality of the Developer's work is also more optimal. Even when implementing individual projects, it is still advisable to integrate CI / CD (free services can be selected) to take advantage of the listed advantages.
However, in some cases such as: if the organization does not have people capable of operating the CI/CD process, the Developer has not yet mastered the tool and does not know how to ensure the CI/CD process then you can consider not using it. Because if an unexpected problem occurs but there is no person with enough expertise to handle it, it will take a lot of time, causing a lot of unnecessary interruptions.