Flutter application to share location with a group. (under development)

Overview

Beacon

About the Project

This project is a flutter build native interface to ease the group travelling (or hiking). By using this, the group leader would be able to share his location with the entire crew, and in case if someone loses contact with the group, he can quickly get in the right place by following the beacon.

Getting Started

For setting up the development environment, follow the steps given below.

  • Clone this repository after forking using git clone https://github.com/<username>/beacon.git
  • cd into beacon
  • Check for flutter setup and connected devices using flutter doctor
  • Get all the dependencies using flutter pub get
  • Create a .env file in the root folder, copy the content from .env.example and add respected key's value
  • Run the app using flutter run

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

Project Structure

This project follows MVVM architecture with following structure:

beacon/lib/
├── components/                             # Shared Components such as dialog boxes, button, and other shared widgets
├── enums/                                  # enum files
|   └── view_state.dart                     # defines view states i.e Idle, Busy, Error
├── models/                                 # model classes: beacon, location, landmark, user  
├── queries/                                # includes all graphql query strings
├── services/                               # services
|   ├── database_mutation_function.dart/    # Graphql Queries implementations
|   ├── navigation_service.dart/            # All required navigation services
|   └── ...                                 # all config files
├── utilities/                              # Utilities that includes constants file
├── views/                                  # Views/UI layer
|  ├── auth_screen.dart                     
|  ├── base_view.dart
|  ├── hike_screen.dart
|  ├── home.dart
├── viewmodels/                             # Viewmodels layer
├── splash_screen.dart                      # Very first screen displayed whilst data is loading
├── router.dart                             # All routes to ease navigation
├── locator.dart                            # dependency injection using get_it
├── main.dart                               # <3 of the app

Screenshots

Contributing

Whether you have some feauture requests/ideas, code improvements, refactoring, performance improvements, help is always Welcome. The more is done, better it gets.

If you found any bugs, consider opening an issue.

To know the details about features implemented till Google Summer of Code'21 and future todo's please visit this blog

Community

We would love to hear from you! You may join gsoc-beacon channel of CCExtractor community through slack:

Slack

Comments
  • Expired beacons fix.

    Expired beacons fix.

    Fixes: #20 Expected Behaviour:

    • [X] Show expired beacons at the very last in your beacons section.
    • [X] Cancel subscriptions (if subscriptions have already been setup) and not setup them up at all (if user opens an expired beacon).
    • [X] Show snackBar if user tries to join expired beacon.
    • [x] Hide the share button if beacon has expired.
    • [x] Stop user from joining expired beacon (Would be handled by backend)
    opened by Aadeesh11 7
  • Make placeholder text in

    Make placeholder text in "Your Beacons" interactable

    Is your feature request related to a problem? Please describe. When the app launches and Your Beacons section is empty, the following screen is shown: image The circled buttons are yellow in colour and hence look interactable, but they aren't.

    Describe the solution you'd like Try to connect these words to their respective actions, similar to the actual buttons

    Are you working on this? Yes

    good first issue 
    opened by devmrfitz 6
  • Leader's name in nearby beacons is returned as null

    Leader's name in nearby beacons is returned as null

    Upon terminating the hike and coming back to home screen, my own beacon is shown as Anonymous.

    Is this a bug or it is supposed to work this way?

    Also note the difference of top-padding between the two columns

    bug backend 
    opened by ItsAdityaKSingh 5
  • Loading animation improvement

    Loading animation improvement

    Is your feature request related to a problem? Please describe. The current loading page looks very basic, also when the app loads for first time it just shows an image without any loading animation

    Describe the solution you'd like Make a better loading page and improve the current loading animations in app

    Are you working on this? (Yes/No) Yes

    good first issue UI improvement 
    opened by codewithkushagra 4
  • Issue #110 and #163 solved (AlterDialog UI fixes and made loading screen)

    Issue #110 and #163 solved (AlterDialog UI fixes and made loading screen)

    #110 and #163

    I have made the Alertdialog box edges round, for logout pop up

    WhatsApp Image 2022-04-16 at 7 47 02 PM WhatsApp Image 2022-04-16 at 7 47 31 PM

    Consistent login screen added everywhere with image from assets and the loading animation

    https://user-images.githubusercontent.com/72088481/163722180-0c661c48-8e2c-460b-b208-9a223614d62f.mp4

    Note: Please check Allow edits from maintainers. if you would like us to assist in the PR.

    opened by codewithkushagra 4
  • Disable Expired beacons to be accessed by users.

    Disable Expired beacons to be accessed by users.

    There is no reason to let any user open any expired beacons, right?

    Instead what we can do is add a popup whenever a user clicks on an expired beacon saying that the beacon has already expired join a new one or create a one.

    https://user-images.githubusercontent.com/86337946/155526046-aef043fa-3d0e-4e78-955f-41c3fd573d6d.mp4

    Do you think it is a good improvement?

    opened by Omegaviv 4
  • Feature Request: Reactivate Beacon after it has expired on leader's demand.

    Feature Request: Reactivate Beacon after it has expired on leader's demand.

    Is your feature request related to a problem? Please describe. Once a beacon has ended there is no way to reactivate, which sometimes can be a bad UX.

    Describe the solution you'd like Would like to allow leader to reactivate an active beacon.

    Are you working on this? (Yes/No) Yes

    opened by Aadeesh11 4
  • Forgot password option

    Forgot password option

    There's no forget password option on the login screen or a way to retrieve a forgotten password of one's account. This makes it really difficult for a user to log in once the password is forgotten. Also, there's no feature of verifying an email address before creating an account with it.

    backend 
    opened by ItsAdityaKSingh 4
  • [Tests]: Write Test for beacon project.

    [Tests]: Write Test for beacon project.

    The following architecture needs to be followed while writing tests:

    • model_tests

    • service_tests

    • widget_tests

    • viewmodel_tests

    • [ ] Login Screen

    • [ ] Home page

    • [ ] beacon_card.dart

    • [ ] create_join_dialog.dart

    • [ ] dialog_boxes.dart

    • [ ] hike_button.dart

    • [ ] hike_screen_widget.dart

    • [ ] shape_painter.dart

    For the Hike screen, MVVM architecture isn't followed so I am creating an issue for refactoring it, once it's done then tests can be added for that screen too.

    Feel free to add/suggest anything that you think is missing.

    opened by devansh12b2 4
  • refresh on pull implemented for group screen tabs +  UI changes to the auth screen

    refresh on pull implemented for group screen tabs + UI changes to the auth screen

    Fixes # Added a custom pull to refresh mentioned in the issue #91 I have also made UI changes to the auth screen mentioned in the issue #158

    Describe the changes you have made in this PR - Issue 91 Made a new TabControllerStorage since we cannot late initialise the tabcontroller, and thus cannot declare it out of the build method. Storing the tab index using this singleton implementation. Added a new package custom_refresh_indicator to implement the pull to refresh feature with a custom icon

    Issue 158 Made changes to the UI to make it better looking and user friendly.

    Screenshots of the changes (If any) - Issue 91

    https://user-images.githubusercontent.com/72869428/198694578-2ddde619-25c0-4ba7-b101-97f0d227f297.mp4

    Issue 158 login signup

    Note: Please check Allow edits from maintainers. if you would like us to assist in the PR.

    opened by Rushour0 3
  • Auto refinement of email address enter by user

    Auto refinement of email address enter by user

    Describe the bug While logging, the redundancies in the Email Address string entered by the users are not filtered automatically by the app, for example if I enter "[email protected] " and the actual account is "[email protected]" the is shows user does not exist

    To Reproduce Steps to reproduce the behavior:

    1. Go to Login Screen
    2. Enter your email address with extra space at the end
    3. Enter password and try to login
    4. See error 'user does not exist'

    Expected behavior It should automatically refine such redundancies in the email string entered by the user.

    Demonstration

    • I have left an extra space at the end
    • It shows the error

    WhatsApp Image 2022-04-16 at 9 21 25 PM

    Environment

    • Device/emulator being used: device version GM1911
    • OS (iOS/ Android); If Android then android version: OS: 11
    • Flutter version: 2.10.3

    Additional context The problem solution will improve the user experience.

    Are you working on this issue? (Yes/No) Yes

    enhancement good first issue 
    opened by codewithkushagra 3
  • Pull to refresh feature with UI changed

    Pull to refresh feature with UI changed

    Fixes # Added a custom pull to refresh mentioned in the issue #91 I have also made UI changes to the auth screen mentioned in the issue #158

    Describe the changes you have made in this PR - Issue 91 Made a new TabControllerStorage since we cannot late initialise the tabcontroller, and thus cannot declare it out of the build method. Storing the tab index using this singleton implementation. Added a new package custom_refresh_indicator to implement the pull to refresh feature with a custom icon

    Issue 158 Made changes to the UI to make it better looking and user friendly.

    Screenshots of the changes (If any) - Issue 91

    https://user-images.githubusercontent.com/72869428/198694578-2ddde619-25c0-4ba7-b101-97f0d227f297.mp4

    Issue 158 login signup

    opened by Rushour0 6
  • TextFormField separator removal

    TextFormField separator removal

    Fixes #158

    Describe the changes you have made in this PR -

    • Removed the separator between TextFormFields and inserted UnderlineInputBorder in both Existing and New Account Screen

    Screenshots of the changes (If any) -

    Screenshot 2022-10-13 at 4 13 20 PM Screenshot 2022-10-13 at 4 13 28 PM

    Note: Please check Allow edits from maintainers. if you would like us to assist in the PR.

    opened by RohanSengupta326 10
  • Google & Facebook oauth sign up and sign in

    Google & Facebook oauth sign up and sign in

    Is your feature request related to a problem? Please describe. Currently, the app only accepts email sign in/signup. Having oauth would be better for the user, then user can sign in with ease. Also there is PR for email verification, having oauth wont even need email verification. (Although that feature would be required for user sign in with their email).

    Describe the solution you'd like Having a google and/or Facebook oauth at sign-in page of app.

    Are you working on this? (Yes/No) Not right now, but if I get confirmation from maintainer, I would start working on it.

    enhancement backend 
    opened by jaiakash 10
  • Dark Mode for the app

    Dark Mode for the app

    Is your feature request related to a problem? Please describe. The UI could do a major improvement by introduction of dark mode

    Describe the solution you'd like I would like to add dark mode to the application

    Describe alternatives you've considered

    Additional context

    Are you working on this? (Yes/No) YES

    opened by K1RA-16 4
  • This line is misleading as a text field

    This line is misleading as a text field

    Is your feature request related to a problem? Please describe. This line is misleading as a text field and if it is acting as a partition still it is not symmetric

    Screenshot Screenshot_1647773488_1

    Describe the solution you'd like I think we should remove it

    Describe alternatives you've considered -Else we can make it symmetric -Or Bring it just below the text field

    Additional context Sol 1
    Screenshot_1647773488_2

    Sol2 Screenshot_1647773488_3

    Are you working on this? (Yes/No) Yes

    good first issue UI improvement 
    opened by vik4114 10
  • Feature Request : Filter functionality in our beacons

    Feature Request : Filter functionality in our beacons

    Is your feature request related to a problem? Please describe. Suppose in crew of several members different people are able to create a beacon. It will become a tedious task to look upon every beacon to search a particular beacon.

    Describe the solution you'd like Here the filter functionality can play a vital role to optimize searching based on the person who had created a beacon. Currently in every beacon card has beacon name and who had made it as "Beacon Name by Creator Name" So at the time when we take information from backend about every beacon and display it on cards we will store the owner names in a set and use these names to provide filter functionality.

    Describe alternatives you've considered Alternative to this can be to implement search bar where user can search a particular beacon name. But in this case we need to know perfect name of beacon otherwise we'll end up no result found.

    Additional context

    1. Use of Icon Button (with provided button color in theme as yellow).
    2. Use of pop-up menu by onTap on icon button.
    3. Showing the list of all beacon owners of whom we have joined the beacons from earlier(like as if we have registered it).

    Are you working on this? (Yes/No) Yes

    enhancement 
    opened by Arjun2905 3
Owner
CCExtractor Development
CCExtractor Development
Flutter Tutorial - Google Map with Live Location Tracking

Flutter Tutorial - Google Map with Live Location Tracking Build Google Map app with Live Location Tracking in Flutter. ✌   App Preview Android Preview

Samuel Adekunle 10 Dec 22, 2022
A Flutter package for iOS and Android for picking location and images.

location and image picker package for Flutter A Flutter package for iOS and Android for picking location and images. Demo Installation First, add loca

sk shamimul islam 9 Sep 28, 2022
Location picker for Flutter.

Flutter Place Picker The missing location picker made in Flutter for Flutter. With dark theme and custom localization support. ⚠️ Please note: This li

Degreat 143 Dec 6, 2022
🌍 Map location picker component for flutter Based on google_maps_flutter

google_map_location_picker Location picker using the official google_maps_flutter. I made This plugin because google deprecated Place Picker. Using Pu

Ibrahim Eid 189 Dec 5, 2022
A Flutter plugin to easily handle realtime location in iOS and Android. Provides settings for optimizing performance or battery.

Flutter Location Plugin This plugin for Flutter handles getting a location on Android and iOS. It also provides callbacks when the location is changed

Guillaume Bernos 953 Dec 22, 2022
An Android App, which lets you work on Location Data, built with :heart: using Flutter

locatorz A Simple Flutter based Android Application to work with Location based Data ;) Documentation :: Work in Progress :) Screenshots :: Screen Rec

Anjan Roy 31 Aug 23, 2022
Flow is a water source location app that helps students of the University of Bamenda, Bambili to find/locate clean water sources.

Flow is a water source location mobile app that helps students of the University of Bamenda, Cameroon to find/locate clean water sources.

DSC UBa 12 Oct 21, 2022
DinoRide allows you to book a trip and have dinosaurs deliver you to your desired location!

DinoRide ?? Inspiration We wanted to reimagine a modern app in a prehistoric context. We thought a taxi service but with dinosaurs would have been fun

Westdale Software Dev Club 1 Jun 30, 2022
flutter_map plugin to request and display the users location and heading on the map

The plugin is discontinued. Feel free to fork it or checkout similar plugins. Flutter Map – Location plugin A flutter_map plugin to request and displa

Fabian Rosenthal 19 Oct 11, 2022
Mapbox-flutter - A repository to demonstrate the use of Mapbox - it's Maps and Navigation SDKs in a Flutter application

MapBox Flutter This repository contains code corresponding to the Youtube video

AB Satyaprakash 39 Dec 30, 2022
Localizator is a flutter application that provides your current/given position,and gives you weather Forecasts

Locativity Locativity is a flutter application implements flutter_map and Geolocator plugins to provide your current/given position then render it on

Houssemeddine Souissi 48 Nov 6, 2022
A car rental flutter application using firebase and google maps API

A car sharing & rental app using Flutter, Firebase & Google Maps APIs ?? About the App ?? hopOn is flutter based application for car sharing and renta

Shivani Singh 97 Dec 30, 2022
Flutter Aris Map Application

Flutter Aris Map Application Version 1️⃣ . 0️⃣ . 0️⃣ ➕ 1️⃣ 4️⃣ Getting Started $ git clone https://github.com/ariscybertech/aris_map.git $ flutter pac

Behruz Hurramov 4 Dec 22, 2022
Localizator is a flutter application that provides your current/given position,and gives you weather Forecasts

Locativity Locativity is a flutter application implements flutter_map and Geolocator plugins to provide your current/given position then render it on

Houssemeddine Souissi 48 Nov 6, 2022
A migration of Google Maps Application with Flutter & Google Maps APIs including: Maps SDK for Android & IOS, Places API & polylines

google_maps A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if t

TAD 1 Mar 4, 2022
A clone of the video conferencing application, Google Meet.

Gmeet ?? A "clone" of the video conferencing application, Meet, by Google LLC. Description Gmeet is a video conferencing application that looks and fu

Amal Nath M 6 Sep 3, 2022
ParkPort is a smartphone application that utilizes geolocation to guide the user to explore Tulsa's parks and collect augmented reality stamps.

A smartphone application that utilizes geolocation to guide the user to explore Tulsa's parks and collect augmented reality stamps.

Adam Taylor 5 Dec 20, 2022
A new flutter plugin for mapbox. You can use it for your map backgrounds inside flutter applications

A new flutter plugin for mapbox. You can use it for your map backgrounds inside flutter applications

Boris Gautier 5 Sep 14, 2022
Flutter Community - A central place for community made Flutter content.

Flutter Community A central place for community made Flutter content. The Flutter Community is an organization aimed at providing a central place for

Flutter Community 1.3k Jan 1, 2023