Lets discuss the front-end stack for TrainingWall!
Fortunately us web developers have a few solid options when it comes to cross platform mobile app development
- Flutter - Written in Dart
- Cordova - WebView with access to native API’s
- React Native
*I’ve included Flutter in the list as it is written in Dart which has web development offerings for both client and server-side.*
Let’s start with Flutter
Flutter is Google’s offering to cross platform app development, it’s fresh, fast and has a growing community.
Sadly I didn’t have the time to sink into this framework along with a new language, I was already learning a new style of development!
The growing community and the ever increasing set of re-usable widgets and the strong integration potential with Material Design is leading Flutter and Dart to continual growth and definitely leaves it in the running for this app. One day I’ll find the time!
Cordova, Apache’s offering
This nifty little framework boasts a vast array of plugins and an interesting architectural design. I really like how approachable this framework is as a web developer. Writing HTML, CSS and JS comes like second nature and in the modern age of mobile first development, once you’re past the initial set up you feel empowered to crack on.
Access to the camera, device location, orientation, file system and many other native API’s can be handled relatively painlessly with plugins from the community.
I didn’t really investigate Ionic as it doesn’t have quite the same sized community as some of the other frameworks and platforms in the list.
I also didn’t really dig into NativeScript very deeply as, at the time, I was more interested in other technologies than Angular for personal projects as I was using it for work.
React Native is Facebooks offering to cross platform applications. Since release in Feb 2015 over 75k GitHub stars have been awarded to React Native.
Community offerings and easy to use UI libraries were a big draw for me when building my first mobile offering, this left an easy choice… Not to mention I’ve worked with React before which shrunk the learning curve a little.