-
Notifications
You must be signed in to change notification settings - Fork 26
Description
Our plan for the next 6-12 months is to create two apps:
- @dwyl App = personal effectiveness: https://github.com/dwyl/product-roadmap#what - help people capture everything that is on their mind in order to de-clutter. Help them transform the raw text/thoughts into actionable items (of various kinds) and then focus on the most important items.
The @dwyl App is our priority because we want to use it to improve our personal effectiveness ASAP!
- @home App = all home-related functions e.g: to door entry, hot desk reservation, library book checkout, etc.
These two Apps have a decent amount of overlap: Auth, UI/Layout, Notifications,
Given that we would like to make the @home App a Native Mobile App so that it functions as fast as possible, we spent a bit of time over the last few weeks investigating our options for writing a cross-platform native mobile app.
Our short-list included Ionic https://ionicframework.com and NativeScript https://www.nativescript.org but we quickly dismissed those because we want the benefits of native performance not a "wrapped" JS (WebView) app with native components and APIs.
Why Flutter?
@dwyl we have guiding principals for technology selection for the Apps we build: #33
- 1. Security: advanced security features: https://flutter.dev/security
- 2. Accessibility: Support for screen readers, high contrast and large fonts: https://flutter.dev/docs/development/accessibility-and-localization/accessibility
- 3. Open Source: Flutter was initially developed by Google but has since been spun out into an independent GitHub Org. Google still handles security reporting and that's a good thing because you know someone at Google is responsible for acting fast when a security report is made.
- 4. People Centric: the fact that it can ship to any device/platform makes it very people-centric because the UX will great no matter where the person is using it.
- Gorgeous Native User Interaction including built-in support for gestures, voice, transitions and animations. These might feel like "nice to have" but some people really love these micro-interactions.
- Native performance up to 120fps means buttery smooth UI anywhere (where there is a display with a sufficiently high refresh rate) because of the Dart compiler.
- 5. Mobile First: the first platform Flutter targeted was (Native) Android. Flutter is still predominantly used for Mobile UI but it can be used to build Desktop, Google Assistant, Web Apps and "Ambient Computing"! See: https://flutter.dev/showcase and https://youtu.be/NfNdXgJZfFo?t=884
- 6. Responsive: The Flutter UI framework is designed to work on any screen size without the Dev(s) having to jump through hoops to check the device width/height and debug random screen sizes!
see: https://flutter.dev/docs/development/ui/layout/responsive - 7. Offline First: SQLite database for caching/storing data locally:
https://flutter.dev/docs/cookbook/persistence/sqlite - 8. Developer Effectiveness - from everything we have seen - excellent documentation, regular predictable releases, good IDE support and stateful hot-reloading for rapid development - we are keen.
- 9. Internationalisation: Flutter has been built for internationalisation from the start: https://flutter.dev/docs/development/accessibility-and-localization/internationalization
- 10. Custom UI: with Material Theming, Devs/Designers can have full control over the UI see:
https://www.youtube.com/watch?v=NfNdXgJZfFo&list=PLjxrf2q8roU0o0wKRJTjyN0pSUA6TI8lg
With that in mind we have tasked padawan @miguelmartins17 - who has experience of building Native Android Apps - with being our sherpa in exploring this exciting tech! He is on a mission to become a Flutter Expert in the next 6 months and make the journey as easy as possible for everyone that follows!
Note: I (Nelson) planning to invest 2 weeks to learning Flutter soon to determine if it can be our front-end tech of choice. I am currently doing work for @home so I need to figure out when I will have time ... 💭
Google ...
Google is investing heavily in Flutter and they are using Flutter for several of their cross-platform Native Mobile Apps including Google Assistant, Google Adds (their main money maker) and Stadia their recently launched gaming platform.
https://flutter.dev/showcase
This is not a reason to use a particular technology, but the fact that they are backing it and using it for their apps means it's a decent bet.
Proposal
I propose that we investigate using Flutter for cross-platform mobile apps.
My first objective is to test Flutter Web and see how easy it is to build a PWA: dwyl/learn-flutter#9
Then I will attempt re-use the same code for an Android Native App.