Code Monkey home page Code Monkey logo

momaps's Introduction

MoMaps

Table of Contents

  1. Overview
  2. Product Spec
  3. Wireframes
  4. Schema

Overview

Description

This application allows the user to navigate to any location. You can save favorite locations and future locations to visit. User is able to incorporate saved location into navigation mode.

App Evaluation

  • Category: GPS/ City Navigation
  • Mobile: This app would be developed primarily for mobile - as the step-by-step navigation feature of the app would require the user to navigate through their city using their phone to get to their favorite spots!
  • Story: Allow users to save future locations they want to visit and add favorites to the locations they’ve already visited. To make ease of access - once a favorite spot is added, the imbedded step-by-step navigation feature will allow users to directly get to that location with the latest traffic information.
  • Market: This app caters to users who prefer to drive and explore their city! With our real-time traffic information, users are able to get the safest routes to their desired destinations!
  • Habit: This app could be used as often as the user has the desire to explore their city. Whether it be from going out to their favorite restaurants with their loved ones, to even to a cool park they found and saved on their way back from work!
  • Scope: First users will have the ability to add their favorite locations and any locations they want to visit for future references on the app. Once they’re on their favorite lists they can directly click on one of the spots - and the app will automatically launch its step-by-step navigation directions and take users to their desired locations!

Product Spec

1. User Stories (Required and Optional)

Required Must-have Stories

  • Login/ sign up for user
  • Ask for permission for user’s location to automate gps tracking
  • Provide a general map according to the user’s location on home page
  • Implement a tab bar with 4 categories: search for new location, user's favorite sites, user's plan to visit sites and save new location.
  • Implement a search bar for any address
  • Implement a “go” button to navigate
  • highlight the best possible route to your location

Optional Nice-to-have Stories

  • Real time traffic conditions
  • Should show surrounding well known locations in map
  • Be able to manipulate map with gestures
  • Dark mode/ light mode

1.5 Gifs

register

login

annotations and user pin

map scroll and zoom in

2nd week

Calculated route when selecting an annotiation and also changing the route when selecting a different annotation and reflecting changes on the View

Added UI elements and logic to the add screen and enabled animations and deletions to occur withing the favorites and planner tabs

3rd week

Clicking on annotation's text causes turn-by-turn navigation to happen. Audio directions occur. User is able to see estimated travel distance, travel time, arrival tiem. User is able to cancel and navigate to another location of their choosing.

Navigation continues in the background, audio directions continue in the background.

Addresses get converted into coordinates.

2. Screen Archetypes

  • Login/ sign up

    • User is prompted to input username and password
    • Login if password is correct, unable login if password is wrong
    • button for sign up, signs the user to the password chosen
  • Home

    • General map of user's current location
    • Tab bar is available to add new location, favorite locations and locations to visit
    • search bar is available to search any address to navigate
  • favorites

    • List of your favorite locations with associated name, description and address
  • Add

    • User is able to add a location and save it's name, description and address. This location can be a location inside plan to visit tab or favorite location tab.
  • Places to visit

    • List of your locations you plan to visit with associated name, description and address

3. Navigation

Tab Navigation (Tab to Screen)

  • Search
  • Places to visit
  • Favorites
  • Add Favorites

Flow Navigation (Screen to Screen)

  • Login in/sign up -> home screen (search tab)
  • Search Tab-> search address -> map will zoom into that location
    • step-by-step navigation feature will be enabled -> ability to add that location to favorites
  • Places Tab -> scroll through the places user wants to visit
    • click on a place and navigate to that place through the step-by-step navigation feature
  • Favorites Tab -> scroll through the places user has favorited
    • click on a place and navigate to that place through the step-by-step navigation feature
  • Add Favorites Tab -> users will add places for future visits or any favorite places they’ve visited already.

Wireframes

[BONUS] Digital Wireframes & Mockups

[BONUS] Interactive Prototype

Schema

Models

Users:

Property Type Description
username String The name the user picks for their account
password String The password linked to specific username
location_list array of location object List of location coordinates inside an array of dictionaries

Location Object(where we store locations saved by users):

Property Type Description
coordinates pair<float,float> Pair of longitude and latitude float numbers
Favorite/Plan Char If the location contains an “F” its a favorite, if it contains a “P” its planned to visit
Description string Users can add a description to the specific location
name string user's name of the location

Map Object:

Property Type Description
location_pin Location object Pin is dropped at location selected by user
user_pin pair<float, float> Pin is dropped at user’s current location

Networking

Lists of Network Requests by Screen

  • Login Screen
    • (Read/Get) users can login to their account
PFUser.logInWithUsername(inBackground:"myname", password:"mypass") {
  (user: PFUser?, error: Error?) -> Void in
  if user != nil {
    // Do stuff after successful login.
  } else {
    // The login failed. Check error to see why.
  }
}
  • (Create) Users can sign up for an account
func myMethod() {
  var user = PFUser()
  user.username = "myUsername"
  user.password = "myPassword"
  user.email = "[email protected]"
  // other fields can be set just like with PFObject
  user["phone"] = "415-392-0202"

  user.signUpInBackground {
    (succeeded: Bool, error: Error?) -> Void in
    if let error = error {
      let errorString = error.localizedDescription
      // Show the errorString somewhere and let the user try again.
    } else {
      // Hooray! Let them use the app now.
    }
  }
}
  • Favorites
    • (Read/Get) Query all saved locations of the user
let query = PFQuery(className:"GameScore")
query.getObjectInBackground(withId: "xWMyZEGZ") { (gameScore, error) in
    if error == nil {
       	 let score = gameScore["score"] as? Int
let playerName = gameScore["playerName"] as? String
let cheatMode = gameScore["cheatMode"] as? Bool

    } else {
        // Fail!
    }
}
    • (Delete) Users can delete a saved location
PFObject.deleteAll(inBackground: objectArray) { (succeeded, error) in
    if (succeeded) {
        // The array of objects was successfully deleted.
    } else {
        // There was an error. Check the errors localizedDescription.
    }
}
  • Plan to visit screen
    • (Read/Get) Query all saved locations of the use
let query = PFQuery(className:"GameScore")
query.getObjectInBackground(withId: "xWMyZEGZ") { (gameScore, error) in
    if error == nil {
       	 let score = gameScore["score"] as? Int
let playerName = gameScore["playerName"] as? String
let cheatMode = gameScore["cheatMode"] as? Bool

    } else {
        // Fail!
    }
}
    • (Delete) Users can delete a saved location
PFObject.deleteAll(inBackground: objectArray) { (succeeded, error) in
   if (succeeded) {
       // The array of objects was successfully deleted.
   } else {
       // There was an error. Check the errors localizedDescription.
   }
}
  • Add screen
    • (Create) Create a new location to be saved as either planned or favorites
let gameScore = PFObject(className:"GameScore")
gameScore["score"] = 1337
gameScore["playerName"] = "Sean Plott"
gameScore["cheatMode"] = false
gameScore.saveInBackground { (succeeded, error)  in
    if (succeeded) {
        // The object has been saved.
    } else {
        // There was a problem, check error.description
    }
}
  • [Add list of network requests by screen ]
  • [Create basic snippets for each Parse network request]
  • [OPTIONAL: List endpoints if using existing API such as Yelp]

momaps's People

Watchers

 avatar

momaps's Issues

Project Feedback!

👍 Great job on the first implementation sprint! The app is really starting to come together. There are 2 weeks left to complete all of the required stories so that you have an MVP (minimum viable product). The purpose of this is to get the minimum set of functionality implemented first and then focus on adding in optionals afterwards. This ensures you have all the basics in place before adding in the additionals and polish.

Add Logic

Create a screen for every screen in wireframe

  • user is able to save location in favorites tab
  • user is able to save location in plan tab
  • user is able to navigate to saved location
  • user is able to delete a saved location
  • User is able to choose plan or favorite location

Navigation/geocoding

  • Clicking on an annotation's text causes turn-by-turn navigation to happen
  • Audio directions occur
  • user is able to see estimated travel distance, travel time, and arrival time.
  • user is able to cancel and navigate to another location of their choosing
  • navigation continues in the background and the audio directions continue in the background.

Project Feedback!

👍 Nice work on the second implementation sprint! Excited to see your progress next week!

Sign up/ Login

Sign up/Log in

  • user is able to sign up
  • user is logged in after closing the app until clicked on logout
  • user is able to log in

Project Feedback!

👍 Nice job on the wireframes! Wireframing is a common practice when building apps as it lets you create a blueprint for the app before writing any code. Having a really good blueprint that you can refer to throughout the rest of the project is a really valuable resource and will make it much easier to split up work across your team.

With the wireframes in hand, you should have a good idea of what your app will look like when you finish the project. Next week we'll jump into the data schema.

Project Feedback!

It looks like the following deliverables are not included in this milestone:

  • Sprint Plan: GitHub Project Board created
  • Sprint Plan: Issues added to project and assigned to specific team members

In order for us to count these towards your submission, please push your updates and submit your group milestone again through the course portal within 48 hours from the posted deadline so that we can regrade it.

Create the screens

Create a screen for every screen in wireframe

  • create the login/signup screen
  • create the home screen
  • create the favorites screen
  • create places to visit screen
  • add new screen

Create tab Bar + bring Home map

#Create tab Bar + bring Home map #

  • show map on home screen
  • add tab bar ui
  • implement pin for user
  • implementing navigation to a location
  • add map UI (like gestures to zoom)

Sign up/Log in

Sign up/Log in

  • user is able to sign up
  • user is logged in after closing the app until clicked on logout
  • user is able to log in

Project Feedback!

👍 Thanks for submitting your progress for this sprint! This is a big milestone as now it's all about adding optionals and additional polish to the app. Next week we go into the final sprint before demo day.

Project Feedback!

👍 Nice work on getting the data schema defined! Next week we jump into the first implementation sprint. You'll have 3 sprints (one week each) to complete all the required stories for your app and 2 sprints (one week each) to work on optionals and add polish. Let us know if we can help in any way!

Create New Screens

Create a screen for every screen in wireframe

  • create the login/signup screen
  • create the home screen
  • create the favorites screen
  • create places to visit screen
  • add new screen #

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.