🌭 🌮 🍲 🍣 🍹 🥧 🍢 🥟 🍛 🥞 🥘 🍤 🍩
This App will suggest a dining place for user, in order to release the (potential stress or pain) from deciding a place to eat. User can provide his/her current location or to specifiy one, then a dining place nearby will be suggested. If desired, user can make a reservation. When logged-in reservation record can be viewed.
The App mainly consists of a home page, a page to decide whether the current location or a specified location to be used, a result page, a reservation page, an about page, and a reservation record page (for account user). Users can register an account and sign-in, which enables them to view their records.
App icon and home page
User can decide to create an account or not. Guest and account user have different navigation drawer interfaces. Once logged-in users can view their reservation record in listview format.
Users can decide whether to use the current location or specify a location for dining place suggestion generation. After confirming the method (and location for specifying a place) users can proceed by clicking the bottom navigation bar. Alternatively user can shake the phone and start the drawing.
The transaction screens show a quote about food. It was randomly drew from a list of quotes saved in the App. The result shows the information of the dining place including the name, price and rating, as well as the address. On the other hand, the photo was drew from a list of photos saved in the App which may not represent the cuisine. This is due to the abscence of images proved by the appointed API (Google maps nearby search). Users can navigate to the dining place address on google map via package 'maps_launcher'.
If signed-in, the default name and contact information will be suggested. All fields have to be filled or warning will appear. Once successfully submitted user will be notified.
Users can click the buttons or swipe to left/right to move between subpages.
Sign.in.reservation.record.mp4
get.place.mp4
For developer who wants to refine/extend the App, please go to the master branch: WingHongCASACE/casa0015-mobile-assessment/tree/master and download the whole folder and manage/ edit it in your preferable IDE. Please also install Flutter and an IDE such as Android Studio.
This App uses 2 google maps APIs: geocode and nearby search. In addition, it uses 2 services from Firebase: Authentication and Firestore Database. Please replace with you own API key for geocode and nearby search function. For Firebase application, please create a firebase project. Register you App on Firebase by providing your own applicationID
in android>app>build.grade
(for Android App) and download and (re)place the json config file in the Android app module root directory.
For getting a key for google maps APIs, please refer to here.
To set up Firebase in your Flutter App, please refer to here.
Framework/Tools/Packages | Version in used |
---|---|
Flutter | 2.10.3 |
SDK | >=2.15.1 <3.0.0 |
Dart | 2.16.1 |
DevTools | 2.9.2 |
--- | --- |
animated_text_kit | ^4.2.1 |
cloud_firestore | ^3.1.14 |
collection | ^1.15.0 |
geolocator | ^8.2.0 |
firebase_core | ^1.16.0 |
firebase_auth | ^3.3.17 |
flutter_screenutil | ^5.5.2 |
http | ^0.13.4 |
maps_launcher | ^2.0.1 |
modal_progress_hud_nsn | ^0.1.0-nullsafety-1 |
shake | ^2.0.0 |
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
I am happy to discuss about the App - please make a pull request, or contact by email: [email protected]. Even more, I enjoy trying new restaurants and food. 🥨