Coder Social home page Coder Social logo

trovami's Introduction

DISCLAIMER

I want to stress on three main points:

  • This was my first Flutter project so I have not used any best practices and it needs a lot of code refactoring.
  • DO NOT USE real emails during sign up
  • DO NOT USE real location when testing. They are NOT encrypted and the database is open to public!

Trovami

A Live location sharing app created in Flutter using Firebase as the backend

Features

  • Create groups and choose to share your live location
  • View group members on the map
  • Google Sign-in

Preview

preview

Dependencies

Getting Started

1.Setup Flutter

2.Clone the repo

$ git clone https://github.com/Samaritan1011001/Trovami.git $ cd trovami/

3. Setup for google maps, firebase

All the setup is already done. I am using the free credit I got for the google account so you don't have to do anything until it runs out. IMPORTANT NOTE: DO NOT PROVIDE YOUR REAL EMAIL ADDRESS IN THE APP WHILE SIGNING UP SINCE THE BACKEND IS PUBLIC AND ANYONE USING THIS APP CAN ACCESS IT.

5. Run the app

$ flutter run

Tasks to complete

  • Firebase Authentication
  • Google Sign in
  • Chat screen
  • Deleting groups
  • Deleting members of the group after creation of the group
  • Refresh feature of the map For help getting started with Flutter, view our online documentation.

trovami's People

Contributors

alankley avatar samaritan1011001 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

trovami's Issues

Add a splash screen

Use the splash screen to do the following

  • Show a basic splash screen image with app name
  • Navigate to Sign In page after a few seconds

Move to Cloud Firestore API

Need to migrate to cloud_firestore library from firebase_database library.

GroupsManager
groups
LocationsManager
locations
ProfileManager
users

Potential Security Issue

👋 Hello, we've received a report for a potential critical severity security issue in your repository.

Next Steps

1️⃣ Visit https://huntr.dev/bounties/1-other-Samaritan1011001/Trovami for more advisory information.

2️⃣ Sign-up to validate or speak to the researcher for more assistance.

3️⃣ Propose a patch or outsource it to our community.


Confused or need more help?

  • Join us on our Discord and a member of our team will be happy to help! 🤗

  • Speak to a member of our team: @JamieSlome


This issue was automatically generated by huntr.dev - a bug bounty board for securing open source code.

Firebase Database Structure

Hi @Samaritan1011001

I am a newbie. Possible to share the firebase database structure?

FYI, I have try to run the code. It has been run but it struck at login page.

Login through Google account will only loading.
image

Login through normal login will return null.
image

Kindly advise.

Refactor Signup page

Refactor the complete code to use the new folder structure, firestore and provider

can't run this project because of old sdk version

can't run this project because of this...

The current Dart SDK version is 2.1.0-dev.5.0.flutter-a2eb050044.

Because locate_pal requires SDK version >=1.9.0 <2.0.0, version solving failed.

pub get failed (1)
Process finished with exit code 1

Toggle button

does anyone knows how to make this toggle button on by default and hide it from user view or access?

Android key.properties file is missing

Hi,

I have same issue open and close without any response earlier.

When try execute de app in Android I receive this error:

FAILURE: Build failed with an exception.

  • Where:
    Build file '/Trovami/android/app/build.gradle' line: 20

  • What went wrong:
    A problem occurred evaluating project ':app'.

/Trovami/android/key.properties (Nonexistent file or directory)

How can I fix this?

Thanks,

Create unit test to simulate user movement

Implement Testing Route that you can be used to setup Unit Tests.
The first one can run through list of locations and make Firebase call to update locations Table for logged in user, at given interval (every 3-5 seconds?)

UPDATE??

Will you update this project?

thank you¡¡¡

Refactor database Tables for optimal performance

Consider creating a Locations table since that's the piece of data that will be transferred frequently.

Groups should have only Name and list of User Ids

Users should have profile data, no location data which is constantly changing

Android key.properties file is missing

I try to run the app on android phone with the last flutter beta version 0.2.3
In the android/app/build.gradle file:
line 18: def keystorePropertiesFile = rootProject.file("key.properties")
But the file "key.properties" does not exist and there is an error:

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\flutter\Trovami\android\app\build.gradle' line: 20

* What went wrong:
A problem occurred evaluating project ':app'.
> C:\flutter\Trovami\android\key.properties (Le fichier spécifié est introuvable)

Clarify EmailId

What is a valid email id?
I'm unable to use valid dynamic gmail addresses with special characters (+, .)

We should distinguish "correct" email address (what user provided) and correctly FORMED email addresses.
If incorrectly formed we should display what format we expect as an error message

I recommend we refer to the email always as an email. I don't recommend we use it as an ID to identify a user in the database. The user might want to change their email. We CAN allow them to use it to login. Optionally we can offer a username. A username can be used in the UI to identify a user on the map, etc.

The ID of the user item in the database can be duplicated inside the User item and used as a unique key/id. It can serve as the key in Maps for convenient retrieval.

Enhance Splash Screen

  • Decide where to direct the user based on their preference [Home page or login]
  • Init services used by the app and ask permissions if needed
  • Transition fade when navigating away

(settings.isInitialRoute)

In IOS I face issue like (settings.isInitialRoute) error ? other than that all are with no errors

cannot work

Running "flutter packages get" in test_app...
Package quiver has no versions that match >=0.17.0 <=0.26.2 derived from:

  • flutter_test 0.0.0 depends on version 0.28.0
  • uri 0.11.1 depends on version >=0.17.0 <=0.26.2
    pub get failed (1)

Consider making getting started easier

Consider caching user preferences and skipping login and Group selection on startup.

Once a user logs in, we can keep them "logged in" for a period of time or until they "logout". On the login screen, we can have a checkbox giving them the choice of "keep me logged in". If checked, the next time they launch Trovami it skips the login screen.

We can also always use the last group selected. Group management/selection would only display if they choose to edit groups

information details

Hi,. I'm just a newbie. Can you give me your database structure of Firebase?
I don't know how to set up my Firebase's database?

Maps Api key

when i click on show map, the console show an Authorization failure in the console:
E/Google Maps Android API(10834): Ensure that the following Android Key exists:
E/Google Maps Android API(10834): API Key: AIzaSyB4xaxweIhP0F36ZCBpfeiDjpoPc741***
But i change the main.dart MapView.setApiKey with my own Api key, and is not the above mentioned
looks like this is not reading the new Api keys.
if i set
? MapView.setApiKey("")
: MapView.setApiKey("");
the console still show the lines:
E/Google Maps Android API(10834): Ensure that the following Android Key exists:
E/Google Maps Android API(10834): API Key: AIzaSyB4xaxweIhP0F36ZCBpfeiDjpoPc741***

where is store this key to change it?

Refactor group details page

  • Refactor existing code to use the new code structure
  • Use provider
  • Remove all database API calls and use the firebase package
  • Write widget tests to render a list of users
  • Allow users to toggle their location sharing option
  • Update user preference in the database and attach listeners.
  • Allow users to view the group members

Refactor creating a group screen

  • Refactor existing code to use the new code structure
  • Use provider
  • Remove all database API calls and use the firebase package
  • Write widget tests to render a list of users
  • Allow users to enter a group name
  • Allow users to choose users through a drop down
  • Optionally allow them to add through username

Refactor Sign In page

  • Re-write majority of the code to reflect the new code structure.
  • Use provider
  • Write unit tests to make sure login works for a dummy user
  • Stripe out API calls to database and use the firebase package

Refactor the Groups screen

Home screen should show a list of groups user is involved in.

  • Refactor existing code to use the new code structure
  • Use provider
  • Write widget tests to render a list of items
  • Show a button to create a group

Null exception after cloning app

Exception in thread "main" java.lang.NullPointerException
at org.gradle.wrapper.BootstrapMainStarter.findLauncherJar(BootstrapMainStarter.java:34)
at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:25)
at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)

unable to run project

I just download this project and try to run on Android Studio.

I set up properly but I am getting one error createHttpClient is not defined.

screenshot 9

I don't know that I am doing any mistake or what is wrong with my project.

A problem occurred evaluating project ':app'. > Could not get unknown property 'keystoreProperties'

  • Error running Gradle:
    ProcessException: Process "D:\Trovami-master\android\gradlew.bat" exited abnormally:
    Starting a Gradle Daemon, 1 busy Daemon could not be reused, use --status for details
    NDK is missing a "platforms" directory.
    If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to C:\Users\sazar\AppData\Local\Android\sdk\ndk-bundle.
    If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

WARNING: The specified Android SDK Build Tools version (26.0.0-rc2) is ignored, as it is below the minimum supported version (27.0.3) for Android Gradle Plugin 3.1.2.
Android SDK Build Tools 27.0.3 will be used.
To suppress this warning, remove "buildToolsVersion '26.0.0-rc2'" from your build.gradle file, as each version of the Android Gradle Plugin now has a default version of the build tools.
File C:\Users\sazar.android\repositories.cfg could not be loaded.
Checking the license for package Android SDK Build-Tools 27.0.3 in C:\Users\sazar\AppData\Local\Android\sdk\licenses
License for package Android SDK Build-Tools 27.0.3 accepted.
Preparing "Install Android SDK Build-Tools 27.0.3 (revision: 27.0.3)".
"Install Android SDK Build-Tools 27.0.3 (revision: 27.0.3)" ready.
Installing Android SDK Build-Tools 27.0.3 in C:\Users\sazar\AppData\Local\Android\sdk\build-tools\27.0.3
"Install Android SDK Build-Tools 27.0.3 (revision: 27.0.3)" complete.
"Install Android SDK Build-Tools 27.0.3 (revision: 27.0.3)" finished.
Checking the license for package Android SDK Platform 26 in C:\Users\sazar\AppData\Local\Android\sdk\licenses
License for package Android SDK Platform 26 accepted.
Preparing "Install Android SDK Platform 26 (revision: 2)".
"Install Android SDK Platform 26 (revision: 2)" ready.
Installing Android SDK Platform 26 in C:\Users\sazar\AppData\Local\Android\sdk\platforms\android-26
"Install Android SDK Platform 26 (revision: 2)" complete.
"Install Android SDK Platform 26 (revision: 2)" finished.

FAILURE: Build failed with an exception.

  • Where:
    Build file 'D:\Trovami-master\android\app\build.gradle' line: 42

  • What went wrong:
    A problem occurred evaluating project ':app'.

Could not get unknown property 'keystoreProperties' for SigningConfig_Decorated{name=release, storeFile=null, storePassword=null, keyAlias=null, keyPassword=null, storeType=null, v1SigningEnabled=true, v2SigningEnabled=true} of type com.android.build.gradle.internal.dsl.SigningConfig.

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 6m 10s
Command: D:\Trovami-master\android\gradlew.bat app:properties

Finished with error: Please review your Gradle project setup in the android/ folder.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.