Giter Club home page Giter Club logo

amesride's Introduction

Ames Ride

When using public transportation, it is vital to know where your bus is. In Ames, Iowa, there are two existing applications which attempt to cater to this need. With ratings on the Play Store of 1.9 stars and 2.3 stars, the existing solutions are unreliable and unmaintained.

Ames Ride strives to be a reliable, modern application that informs riders of current bus locations and arrival times.

The app is available on the Apple App Store, Google Play Store, or as an APK in the releases section.

Download on the App Store Get it on Google Play

Features

Ames Ride has nearly all features present in alternative applications.

  • View busses on a given route.
  • Mark your frequent routes as favorites.
  • View arrival times at a particular stop.

To ensure reliability, Ames Ride does not allow users to view multiple routes at a time. Switching routes is a simple tap away!

Screenshots

View all routes/stops

View all routes/stops

View upcoming arrivals at a stop

View a route

Select a route

Select a route

Mark your Favorite Routes

Select favorite routes

Demo

Here is a video by Iowa State University showcasing the app.

ames_ride_demo.mp4

Permissions

  • Location: Ames Ride requests location permissions to locate the user on the map. This permission is not required.

Contributing

Community involvement in Ames Ride is welcomed and appreciated. Ames community members of all technical abilities can help the project thrive. Some ways you can get involved:

  • Join the Ames Ride Discord server to share feedback, get help with issues, learn about contributing code, or just to say hello ๐Ÿ‘‹
  • Submit pull requests
  • Share bug reports
  • Become a beta tester
    • Android users, join here
    • Apple users, you will need to install the "Test Flight" App which is released by Apple. Then, join the beta group.
  • Tell your friends about Ames Ride!

Privacy

This application does not log or store user data.

However, the application does communicate with third party services during normal usage.

External Services

  • Google Maps is used to display the map within the application. Google privacy policy.
  • Expo is used to manage app deployments. When you launch the application, a request is sent to Expo to check if a new version is available. If there is a new version of the application, it will then be downloaded from Expo's servers. Expo does not collect end-user data. Privacy policy.

Assets

Icon

The icon was generated using Android Asset Studio.

amesride's People

Contributors

patrickdemers6 avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

amesride's Issues

Only Jump to User Location if in Ames

If a user opens the app out of Ames, it is useless to have the map move to them. Setup a rule to not move the map to the user if they are outside Ames.

Here is the function that automatically moves to the user's location on Map load.

const moveMapToUser = () => {
if (!location) return;
mapRef.current.animateToRegion({
latitude: location.coords.latitude,
longitude: location.coords.longitude,
longitudeDelta: 0.01,
latitudeDelta: 0.01,
});
};

Proposed borders

West longitude: -93.79180211954629
East longitude: -93.50245309137533
North latitude: 42.11249786499128
South latitude: 41.94664427464395

Exception com.facebook.react.common.JavascriptException

Seeing a number of occurrences of the following error:

Exception com.facebook.react.common.JavascriptException:
  at com.facebook.react.modules.core.ExceptionsManagerModule.reportException (ExceptionsManagerModule.java:72)
  at java.lang.reflect.Method.invoke
  at com.facebook.react.bridge.JavaMethodWrapper.invoke (JavaMethodWrapper.java:372)
  at com.facebook.react.bridge.JavaModuleWrapper.invoke (JavaModuleWrapper.java:188)
  at com.facebook.jni.NativeRunnable.run
  at android.os.Handler.handleCallback (Handler.java:942)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage (MessageQueueThreadHandler.java:27)
  at android.os.Looper.loopOnce (Looper.java:226)
  at android.os.Looper.loop (Looper.java:313)
  at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run (MessageQueueThreadImpl.java:228)
  at java.lang.Thread.run (Thread.java:1012)

Add Ability to See All Routes

If you are unsure what bus you need to take, the ability to see all routes and stops on the map at one time would be useful.

Add Settings Page

Settings page should be navigated to through a hamburger menu (slides out from left).

On settings page, there should be (at this point)

  • link to GitHub repository
  • email for user feedback/bug reports (is there a better way to do this than having a gmail?)
  • Disclaimer that data is provided by GMV Syncromatics. Accuracy not guaranteed.

Favorites added out of order cause incorrect result when selecting

When selecting a favorite route, there are issues if the routes were not added in descending order.

Steps to reproduce:

  • Clear your favorites
  • Favorite 1 Red West
  • Favorite 1 Red East
  • Click the top most row, 1 Red East

Notice 1 Red West shows up as being selected.

Incompatible Versions Installed


Running "expo doctor"
- Finding all copies of expo-modules-autolinking
- Finding all copies of @expo/config-plugins
[stderr] [02:07:19] Expected package @expo/config-plugins@^5.0.0
[stderr] [02:07:19] Found invalid:
[stderr] [02:07:19]   @expo/[email protected]
[stderr] [02:07:19]   (for more info, run: npm why @expo/config-plugins)
- Finding all copies of @expo/prebuild-config
- Finding all copies of @unimodules/core
- Finding all copies of @unimodules/react-native-adapter
- Finding all copies of react-native-unimodules
[stderr] [02:07:23] Some dependencies are incompatible with the installed expo package version:
[stderr] [02:07:23]  - expo-updates - expected version: ~0.14.6 - actual version installed: 0.14.5
[stderr] [02:07:23]  - react-native - expected version: 0.69.6 - actual version installed: 0.69.5
[stderr] [02:07:23] Your project may not work correctly until you install the correct versions of the packages.
[stderr] To install the correct versions of these packages, please run: expo doctor --fix-dependencies,
[stderr] or install individual packages by running expo install [package-name ...]
Command "expo doctor" failed.

Show Minutes Until Arrival Corrected By Timezone

When in a different timezone than Central, the minutes until arrival are incorrect. These should either be passed from the backend or calculated on the frontend while respecting timezone differences.

Current Behavior

If the bus is arriving in 10 minutes, someone on the west coast will see 130 minutes due to being two hours behind.

Expected Behavior

If the bus is arriving in 10 minutes, someone on the west coast will see 10 minutes until arrival.

Allow showing only upcoming arrivals for favorite routes

When viewing upcoming arrivals for a certain stop, add a user configurable option to show only arrivals from favorite routes.

Why?

When looking at the list of upcoming arrivals, there can be many irrelevant buses shown. This allows the user to focus on what is important to them - finding the bus that meets their needs.

Proposal

A small icon is shown on the drawer that appears when a stop is selected. It allows the user to toggle between showing all arrivals and only those for their favorite routes.

Location-Related Exception

Seeing a number of occurrences of the following error:

Exception java.lang.RuntimeException:
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4657)
  at android.app.ActivityThread.handleResumeActivity (ActivityThread.java:4690)
  at android.app.servertransaction.ResumeActivityItem.execute (ResumeActivityItem.java:52)
  at android.app.servertransaction.TransactionExecutor.executeLifecycleState (TransactionExecutor.java:176)
  at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:97)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2267)
  at android.os.Handler.dispatchMessage (Handler.java:107)
  at android.os.Looper.loop (Looper.java:237)
  at android.app.ActivityThread.main (ActivityThread.java:8167)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:496)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1100)
Caused by java.lang.reflect.InvocationTargetException:
  at java.lang.reflect.Method.invoke
  at expo.modules.ReactActivityDelegateWrapper.invokeDelegateMethod (ReactActivityDelegateWrapper.kt:237)
  at expo.modules.ReactActivityDelegateWrapper.onResume (ReactActivityDelegateWrapper.kt:126)
  at com.facebook.react.ReactActivity.onResume (ReactActivity.java:58)
  at android.app.Instrumentation.callActivityOnResume (Instrumentation.java:1454)
  at android.app.Activity.performResume (Activity.java:8111)
  at android.app.ActivityThread.performResumeActivity (ActivityThread.java:4647)
Caused by java.lang.NullPointerException:
  at java.util.Objects.requireNonNull (Objects.java:203)
  at expo.modules.location.LocationModule.handleForegroundLocationPermissions (LocationModule.java:844)
  at expo.modules.location.LocationModule.lambda$requestForegroundPermissionsAsync$2$expo-modules-location-LocationModule (LocationModule.java:195)
  at expo.modules.location.LocationModule$$ExternalSyntheticLambda17.onResult
  at expo.modules.adapters.react.permissions.PermissionsService.createListenerWithPendingPermissionsRequest$lambda-22 (PermissionsService.kt:271)
  at expo.modules.adapters.react.permissions.PermissionsService.$r8$lambda$Xtr9_3ibuLGU1WXILaGyswj4Ze0
  at expo.modules.adapters.react.permissions.PermissionsService$$ExternalSyntheticLambda0.onRequestPermissionsResult
  at com.facebook.react.ReactActivityDelegate$2.invoke (ReactActivityDelegate.java:198)
  at com.facebook.react.ReactActivityDelegate.onResume (ReactActivityDelegate.java:123)

Stuck on Loading Screen

The app randomly breaks and gets stuck on loading screen. Clearing app data seems to fix the issue.

"When opening the app, it loaded to the map screen like normal but then jumped back to the loading screen."


Affected version: 1.2.0

Anyone able to reproduce, please share!

Email Subject includes %20

When people click to email from the app, %20 is included in the subject and isn't automatically converted to a space.

Static Schedule

Show the static GTFS schedule so riders can plan their trip further in advance.

Show Tooltip on Button Hold

Show a tooltip when a button is held down.

The main button I'm thinking this is needed for is the filter icon that is displayed on the stop details component.

Routes flash on load

When the user opens the application, all routes are flashed temporarily before switching to favorites. Nothing should be shown before making the decision.

Routes Slow to Load

Depending on internet connectivity and speed, the routes can be slow to load.

Incorrect Route shown on Weekends For Brown

On Brows South, the route is different on the weekend.

When a user clicks Brows South, it should show the proper map of the route, instead of the weekday route.

This will require determining the correct pattern to follow when showing a route.

Incorrect route sorting

Route sorting is not always correct.

See image below. Correct order is North, South, regular.

image

Update Screenshots

A few things have changed since last updating app screenshots. They should be updated in the Readme file and the Play Store.

Tapping a Stop Occasionally Crashes App

Tapping on a stop occasionally crashes the app. The behavior is not consistent or reproducible, but has been observed on multiple stops.

signal-2023-06-04-154552.mp4

Support displaying banner

There needs to be an easy way to display a banner to users.

Context: The company contracted to monitor CyRide busses is currently experiencing an outage. It would be great to be able to show a short message to users explaining why the app is not working.

Allow Default Route By Location/Time

Often times, bus users follow a schedule each week. Allowing the user to configure a default route to be shown based on their location and/or time of day would improve user experience.

The user should be able to specify multiple settings:

  • Days of week
  • Time of day
  • Location (maybe a pin on map or draw a region?)

Example user goals

"I want to get on 21 Cardinal whenever I am at my apartment at Freddy Court."
"I want to see 1 Red West when I am near student services on Wednesdays from 10:00am - 12:00pm."

Update screenshots

Now that #89 is in, screenshots need to be updated in the README and for the app stores.

Gracefully handle no locations permission

Currently, the app works fine but an exception is thrown internally.

Possible Unhandled Promise Rejection (id: 0):
Error: Not authorized to use location services.

Arrival Notifications

Add the ability for a user to subscribe to a notification X minutes before a bus arrives.

Minutes to arrival differs from provided time

The minutes until a bus arrives can differ from the time shown due to hidden seconds. The number of minutes until a bus arrives should be shown based on the expected time of arrival.

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.