Pioneer Research Center Nepal (PRCN), established in 2019 is an independent research venture created with an aim to introduce positive change by offering new insight through research. The institution attempts to explore innovative possibilities in various sectors including Tourism, Public policy, international relation, politics and other aspects of society. PRCN provides innovative ideas, possibilities and implementation strategies based on open source, to policymakers, concerned stakeholders and interested groups.
Scan Nepal is a tourism promoting mobile application supported by the Nepal Tourism Board. The main motive is to promote local tourism by laying QR codes on tourism sites which, when scanned, tells their stories. Scan Nepal is currently operating at Jhapa, Nepal but aims to cover the whole of Nepal, aweing tourists with exciting stories of lesser known as well as popular tourist destinations.
During the project discovery phase we faced a problem when we learnt that the application needed to work completely offline. Our constraints to make the app work without an internet connection meant we couldn’t get a response from the API on an QR Scan.
While coming up with a solution, we considered the approach of pre-packaging the bundle with a SQLite database, this however would mean increased app size and lower flexibility. Adding new locations would also be a mess.
We went with an approach where we created a minimal API endpoint with bear minimum attributes for each field. We then stored the API data into a local SQLite database on the first run of the app. For new locations data, the app checked and added new data to the local database when it had an internet connection.
The following were the objectives of this Scan Nepal Mobile App:
- Build a hybrid mobile application able to effectively share code among platforms
- Adopt an architecture that is highly scalable as the initial application will only be a shadow of the end product </li
- Make the app work offline, without any loss of notable functionalities
We choose Flutter as our framework for this project. Even though we only needed to support android for the first version of the application. The client did have the intention to make the application available on all platforms in the future.
Considering this was just the first phase of the product. We had to make sure the code remained highly scalable, flexible and immune to library changes.
We are firm believers of good code architecture that can be easily added on. For the overall app development, we used Test Driven Development with Clean architecture popularized by Uncle Bob. Decreasing coupling, making the app maintainable and easy to add functionality.
For state management, we went with the Flutter recommended BLoC pattern.
During the Design and Analysis phase, we studied ways by which we could make the app functional offline and also keep its size to the minimum. We also had to decide on a software architecture which kept the code maintainable and adding functionality easy.
We also had to settle on a QR code type. We had QR Code Model 1 and Model 2, Micro QR Code, iQR Code, SQRC and Frame QR to choose from, we went with iQR code because of its higher numerals capacity.
We went with Montserrat as the font and chose the classic contrasting red-blue duo for our app-colors. The main part of the app was QR Scanning, so we put a lot of focus into it, with a big red button begging to be clicked.
The design is not final and plans are being laid out to improve it on future phases.
We successfully completed the mobile application Phase-1, fulfilling all the intricacies in record time. Scan Nepal has already started its operation in Jhapa, Nepal and is laying groundwork for further expansion. Also, the Phase-2 development also is already in the pipeline starting somewhere around late 2020.