1.Mobile App development
There is lots of app develop framework which support both iOS and Android, and they required only some minor changes to the source code and native settings to build the app.
In this project, we are planned to use Flutter as our mobile app frontend framework. Flutter is developed by Google and its stable is released at 9th March 2018. It uses Dart as the programming language and it has a build-in UI framework (which use Google’s Material UI). General developer tools like debug logger, hot update function… are included. So we believe Flutter would be good enough to be used in our development.
Objectively, both framework would qualify enough to be our pick, but there are some reasons that support us to prefer Flutter over React-Native.
It is all about the developing experience. During development, React-Native require the computer to run a Node packager to maintain the app state, so when we test the app with the real machine, our machine need to connect, through network socket, to the hosting computer. Whenever there is hot update, the packager will push the update to the device. It means that if we take our device away from the hosting computer network, the app cannot run.
Flutter uses another approach, the ‘packager’ (not sure how is it called) is run in the device and if you want hot update, you need to connect the device to the computer (physically). Flutter will figure out what is your recent changes and only update them accordingly.. After the update, you can disconnect the device from the computer, which mean you can test the app wherever you want. So, in terms of the experience, we think Flutter would give us a better feeling.
2. Server development
We will need a database to store all users’ information and a server to handle all of the matchmaking requests.
3. Machine learning
Machine learning is required in this project in order to study the user’s behaviour. We planned to study the possibility of using Amazon Web Service’s machine learning module. If it is possible, we will try to use it, or we will do it ourselves by using Python.
There are lots of data we have to collect as it is required to train a machine learning model. Besides the user’s schedule and basic information, we need to collect some information such as location, how often they use the app, when they use the app and what they usually do in the app.