Hungary's longest running festival in Szeged, attended by tens of thousands each year. We have developed iOS and Android apps to support participants during the festival.
Explore the inherited codebase: Before our company took over the development in 2019, there were two native SZIN apps, both built with older technologies. They also functioned erratically and with errors. The Android version sometimes even crashed immediately after launch. The two native codebases used Java and Objective-C - two languages that were replaced years ago in the mobile development world - followed no industry standards and had no architectural design. A third codebase - the backend - was handed over in an incomplete form - whole chunks of code were missing, which meant that some functionality simply did not work. Also, there was no documentation and/or knowledge transfer in any form. Ensure high code- and product quality: After considering the possibility of fixing the native app bugs, we decided to do a full rewrite in Flutter. By then Flutter had reached a level of maturity that we felt was satisfactory to try. As it turned out, the Flutter components work pretty well on both platforms, not to mention the various packages available out there solving the most common mobile development problems. Supplementing that with the growing community and support behind Flutter, it was quite obvious to us that this was the way to go. Restore reputation of the apps: An app that crashes immediately does not please its users or serve them in any way - it just produces tons of one-star ratings and negative feedback. That was the Android app before 2019, and the verdict on the iOS version was not much better. So our second goal - besides the rewrite - was to raise user satisfaction to the highest possible level.
Native apps rewritten in Flutter and Dart: The natural choice for applications like SZIN is Flutter, which can provide a cross-platform and uniform experience. With a powerful language like Dart behind it, development is easier, more efficient, and faster. The machine-optimized code generated by ahead-of-time compilation leads to better performance on both Android and iOS devices, while just-in-time compilation results in immediate reflection of changes to the source code, while also providing stateful hot reload, where changes can be reflected in the running app without losing any state of the app. Complete User Interface redesign: We worked with a design studio to thoroughly redesign the app's user interface. The new design they created was well thought out, consistent, and visually appealing from the start. The consistent design also made our job easier, allowing us to create reusable components that look exactly the same out-of-the-box on both platforms - again, thanks to Flutter. Introduction of a CI/CD tool: To ensure code quality and consistency, perform testing, and automate code signing and publishing to app stores, using a continuous integration/delivery and deployment tool can be a solution. In the case of SZIN we chose Codemagic which is capable of doing all of the above. It also manages different product flavours (dev and prod in our case), environment variables (like Firebase configuration files), and manages the secrets associated with app signing.