Giter VIP home page Giter VIP logo

snowman_challenge's Introduction

Snowman Labs Challenge

A mobile challenge using Flutter for Snowman Labs. Implemented using Provider, GeoLocator, Google Maps, Firebase, Firestore and Facebook authentication.

User Stories and Business Rules implemented

๐Ÿ”’ As an anonymous user

โœ… I want to sign up using my Facebook account.

โœ… I want to sign in using my Facebook account.

๐Ÿ”“ As a logged in User

โŒ I want to see a list of tourist spots in a 5 km radius from a given location.

โŒ I want to search for tourist spots by name.

โœ… I want to register a tourist spot (picture, name, geographical location and category).

โœ… I want to comment about a tourist spot.

โœ… I want to see comments about a tourist spot.

โœ… I want to add pictures to a tourist spot.

โŒ I want to remove pictures I added to a tourist spot.

โœ… I want to favorite a tourist spot.

โœ… I want to see my favorites tourist spots.

โœ… I want to remove a tourist spot from my favorites.

โœ… I want to upvote a tourist spot.

โœ… I want to see the tourist spots I registered.

โŒ I want to create new categories.

Business Rules

โœ… Anonymous users can only see things.

โŒ Initial Categories are "Park", "Museum", "Theater", "Monument"

A few notes about the project:

๐Ÿ“Œ Although i've created the layout with responsiveness in mind, i only had time to test it on a Nexus 5X emulator, there's no way to know if the app is gonna look responsive on different screensizes. Please keep that in mind.

๐Ÿ“Œ The project is supposed to run on iOS as well and i fully configured it to do so. But, as i said, i only had time to test it on a Nexus 5X, and also i don't have an iOS system to test on.

๐Ÿ“Œ Unfortunately, i didn't implement a loading state on a few screens (i.e Sign Options screen when signIn/signUp button is pressed), that doesn't mean the feature/screen isn't working, just wait a few seconds.

๐Ÿ“Œ Terminal and Logcat might show a few errors depending on which feature you're testing, but most of those errors come from non-implemented exception treatments.

๐Ÿ“Œ From time to time, GeoLocator (dependency for getting the user's current location and parsing coordinates) throws the following exception: PlatformException(ERROR_GEOCODING_COORDINATES, grpc failed, null). According to the dependency's issues section on github, this exception occurs for people that are in a region that are restricted for accessing Google Play Services. (Baseflow/flutter-geolocator#398 ; Baseflow/flutter-geolocator#223) When that happens, the only solution for me is to restart the app, call flutter clean and wait for a few minutes.

๐Ÿ“Œ I didn't have time to implement google places, so in order to add a new tourist spot, you have to type in correctly the full address (i.e Avenida Paulista, 1230)

๐Ÿ“Œ Since it's a test project, i've left the API key inside the project. I hope there's no problem.

๐Ÿ“Œ Facebook authentication doesn't work on real devices, due to Facebook's policy to only allow it's SDK to work with apps that already have privacy policy and license terms defined. On top of that, the Emulator's current location always defaults to Google's office in Palo Alto, which means you'll be testing only as an anonymous user or as a Palo Alto's tourist. Because of that, i've created a new branch that points directly to SnowMan Labs' office coordinates. That should make it easier to test all of the app's features at once. Just switch branches to snow_coords and you're good to go!

๐Ÿ“Œ That's it! Thank you for this opportunity, and i sincerely hope you guys have enjoyed my 1-week project. ๐Ÿ˜Š

snowman_challenge's People

Contributors

thassio-vinicius avatar

Stargazers

Thalles Vicenzo Costa avatar

Watchers

 avatar

snowman_challenge's Issues

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.