πŸ§ πŸš• The all-in-one RPI transportation app.

Overview

smartrider πŸš•

home_screenshot

The all-in-one RPI transportation app

developed with Flutter and Firebase.

Our goal is to make transportation in and around RPI safer and more intuitive. RCOS Project

Currently planned features:

  • Allows you to call RPI saferide like uber.
  • Contains CDTA bus and RPI shuttle schedule.
    • Allows you to search for specific departures.
    • Shows closest stops and estimated departure time in minutes.
  • Displays running routes on a map,
    • with live-update shuttle/bus locations.
  • Sexy UI
    • Dark Mode
    • Material Design
    • 3D Map

Interact with our mockups!

Visit the wiki for dev install instruction!

Check out the docs for details on our implementation!

Comments
  • Real time bus and shuttle updates

    Real time bus and shuttle updates

    Pretty big task, not entirely necessary either, however it would help improve the readability of the map. The goal is essentially to have a real-time update of the buses and shuttles on the map like the cdta website or rpi shuttle tracker.

    Unfortunately, the actual google map widget in flutter just uses the default map view for the operating system, so it's not actually written in dart/flutter which means we'll have to code up some platform specific stuff if we want to animate the markers, and use a platform channel in flutter to display that (most likely requires redoing all of the map ui we've written so far).

    Other option, we can fork the plugin repository and try to create this system from the ground up and submit a pull request. Seems way harder, but will help the flutter community in the future. This way we'll also be able to just integrate our changes with what we've already coded in smartrider.

    Either way, here is an example someone made that contains platform specific code for animating markers in flutter. Potentially super helpful.

    https://github.com/Dammyololade/flutter_marker_animation

    Last option, we use the projection api to build the marker widgets on a layer over the map. Takes a lot of computing power since we have to listen for any changes in the positions on the map and update where the markers are drawn. Animations would most likely be pretty slow, but if we can't make the other two options work then it might be our only choice.

    enhancement help wanted 
    opened by sirmammingtonham 5
  • [Frontend Issue #1] scrolling broken on homepage sliding panel

    [Frontend Issue #1] scrolling broken on homepage sliding panel

    When scrolling down on the schedule page, the entire schedule panel moves. The schedule panel should be static when scrolling through the schedule options, but move when the user scrolls the upper tab of the schedule panel.

    bug 
    opened by jlioanag 4
  • Sliding panel issues on iOS

    Sliding panel issues on iOS

    When I tested the app on the iOS simulator, the sliding panel wouldn't actually slide, it just sort of stayed in whatever position you left it and I was unable to interact with the shuttle schedules.

    Not sure if this is an issue with just the simulator, hopefully someone with a Mac can check the issue out. I wasn't able to run the app on a physical device because of the version bug, so hopefully it only happens on the simulator. I haven't seen this issue reported on the sliding panel repo.

    bug iOS 
    opened by sirmammingtonham 3
  • πŸ› Bug Report: Bus Locations not showing up on map

    πŸ› Bug Report: Bus Locations not showing up on map

    Description Bus indicator icons are not showing up on the map.

    To Reproduce Steps to reproduce the behavior:

    1. flutter run in the dev environment
    2. toggle bus routes

    Expected behavior Should be able to see bus indicators on map...

    Device (please complete the following information):

    • Device: Nexus 3
    bug 
    opened by jlioanag 2
  • πŸ”¨ To-Do: Add Map Icons to Legend, Adjust Size, Fix Animation

    πŸ”¨ To-Do: Add Map Icons to Legend, Adjust Size, Fix Animation

    1. Add map icons to the legend (i.e. bus markers for the bus page, shuttle markers for the shuttle page, etc.)
    2. Adjust the size using sizer, and make legend resize depending on contents.
    3. Fix animation; when the legend is opened or closed, the position of the button moves briefly (see below)

    image

    high-priority to-do 
    opened by sirmammingtonham 2
  • Firebase not storing new user data under Cloud Firestore

    Firebase not storing new user data under Cloud Firestore

    Not sure if this is an iOS only bug or on both iOS and Android New users get added to the Authentication tab, but not to the Firestore tab User data only gets stored to onboard app cache Pretty sure it has to do with Issue #36, where registering crashes the app

    bug help wanted iOS 
    opened by amontes261 2
  • πŸ’‘ Feature Request: Schedule UI Improvements

    πŸ’‘ Feature Request: Schedule UI Improvements

    Is your feature request related to a problem? Please describe. Right now, the schedule page is pretty confusing if you just want quick information on the next couple of buses or shuttles. We need a system that can allow you to quickly check the next couple of times for a given stop.

    screenshot1

    Describe the solution you'd like I'm thinking that we replace the current schedule sliding panel with something similar to the cdta bus website. Something like this:

    screenshot1

    You can click to expand a stop, and each stop will list the next 5 pickup times with an estimated arrival time. We can then move the current schedule page to floating button if someone wants to see the full schedule.

    Additional context Gonna involve a lot of work manipulating the bus GTFS and shuttle data. We can start by designing the UI first, and then once the GTFS is modeled (see #24) we can start filling out the page.

    See https://api.flutter.dev/flutter/widgets/AnimatedContainer-class.html and https://api.flutter.dev/flutter/material/ExpansionPanelList-class.html for ideas on how to implement the animated expansion list.

    enhancement 
    opened by sirmammingtonham 2
  • Bus GTFS Modeling for BLoC

    Bus GTFS Modeling for BLoC

    Need to complete integration of the bus GTFS data into the bloc refactor (see here or here for info about bloc pattern). Involves creating a repository and provider class to fetch the data, and model classes to decode and turn the data into usable objects. Look at shuttle bloc and shuttle data for examples.

    Static and Realtime (RT) data are modeled differently, see https://gtfs.org/reference/static/ and https://gtfs.org/reference/realtime/v2/

    Bus data links:

    • GTFS Static Data : https://www.cdta.org/schedules/google_transit.zip
    • GTFS RT Data – Trip Updates : http://64.128.172.149:8080/gtfsrealtime/TripUpdates
    • GTFS RT Data – Vehicle Positions: http://64.128.172.149:8080/gtfsrealtime/VehiclePositions
    • Service Advisories: https://www.cdta.org/service-advisories/json

    Ideally, static data would only be downloaded and unzipped once during the app's first sign-in, and then whenever we push an update to the app. Real-time data should be fetched every couple of seconds, and used to update vehicle positions and route alerts. Probably have to branch off to a separate issue for this, once modeling is finished.

    help wanted good first issue high-priority 
    opened by sirmammingtonham 2
  • Clean Bus Polylines

    Clean Bus Polylines

    Right now they go over themselves which makes the dotted lines look solid sometimes, and they don't perfectly follow the roads.

    Probably involves redoing the polyline coordinates for the bus routes, being extra careful to follow the roads and not double cross.

    enhancement good first issue 
    opened by sirmammingtonham 2
  • πŸ› Bug Report: [Issue Title]

    πŸ› Bug Report: [Issue Title]

    Describe the bug Prior to the shuttle tracker overhaul there seem to be multiple shuttle routes active simultaneously. Right now it seems there's only one route active and no "route name" field in the shuttle tracker API response. Therefore we can probably hard code the route name (e.g. Main Route).

    To Reproduce Steps to reproduce the behavior:

    1. Go to shuttles
    2. Scroll down to see the route name ( right now it's using the ID field in shuttle tracker API response).

    Expected behavior Route name should be Main Route or something along the line.

    Device (please complete the following information):

    • All
    bug 
    opened by BoyuChen118 1
  • πŸ”¨ To-Do: Fully finish notifications

    πŸ”¨ To-Do: Fully finish notifications

    Notifications work, but still lack the following features:

    • Should remind the user 1-2 minutes before arrival, and when the ride arrives.
    • We should have notifications for saferide vehicle updates (i.e. when driver accepts ride, when about to pickup, etc.)
    • Tapping the bus/shuttle notification should zoom into stop on map.
    high-priority sigma-priority 
    opened by sirmammingtonham 1
  • πŸ”¨ To-Do: Forgot Password System

    πŸ”¨ To-Do: Forgot Password System

    There is currently no option for users to reset their password.

    • Users should be able to click 'forgot password' on the log in screen
    • An email should be sent to their rpi email address, would have a link to change their password
    opened by deanvogel 0
  • πŸ’‘ Feature Request: Scroll to closest stop and see bus locations on schedule

    πŸ’‘ Feature Request: Scroll to closest stop and see bus locations on schedule

    Is your feature request related to a problem? Please describe. Navigating all the stops in the schedule page kinda sucks.

    Describe the solution you'd like Enhancement for the schedules similar to the cdta website's proximity indicator, where we show a bus icon instead of the circle on stops which currently have the bus or are about to. Additionally we should scroll the schedule to the closest stop to the user.

    https://www.cdta.org/schedules-route-detail?route_id=87

    enhancement low-priority 
    opened by sirmammingtonham 0
  • πŸ’‘ Feature Request: CAS Authentication

    πŸ’‘ Feature Request: CAS Authentication

    Is your feature request related to a problem? Please describe. Since rpi requires you to log into a VPN to access email off campus now, signing up for the app with the current email authentication is kinda painful if you're not on school wifi.

    Describe the solution you'd like We might want to consider using rpi's CAS authentication service instead, but only if we can ensure the user stays logged in. Probably requires setting up another cloud function to generate auth tokens for firebase.

    enhancement low-priority 
    opened by sirmammingtonham 0
Releases(v1.0.0-alpha)
  • v1.0.0-alpha(Nov 4, 2020)

  • v0.0.1-alpha(Apr 10, 2020)

    Very very early preview of currently implemented features.

    • App layout
      • Safe Ride bar, settings page, map, and sliding panel for schedules
    • Dark mode
    • Bus and shuttle route lines
      • Markers for stops
    • Bus and shuttle schedule page
      • Search filtering
      • Tapping on an entry will zoom to that stop on the map
    • Location autocomplete for Safe Ride prompt
    Source code(tar.gz)
    Source code(zip)
    smartrider-001-alpha.apk(18.97 MB)
Instead of a simple counter app, the @FlutterDev team can provide a simple game like the one below.

Instead of a simple counter app, the @FlutterDev team can provide a simple game like the one below. Thanks to the @rive_app team for their easy-to-use animation kit.

Md. Siam 10 Oct 27, 2022
Flutter_firebase_uber - An Uber like application to order a ride or share one. t

An Uber-like application to order a ride or share one. the main goal of this application is to teach young refugee communities in Iraq, to develop an MVP themselves. We've used Flutter, Firebase Auth, Google Maps, Firebase Firestore, Firebase Database

Hooshyar 11 Sep 29, 2022
Another example of transitioning over a single tap or one click

magic_8_ball_flutter A new Flutter project. It is another example of transitioning over a single tap or one click. Getting Started This project is a s

Avinandan Bose 1 Mar 21, 2022
An One Stop Solution using Flutter for Engineering Students

FlutterFire Samples This repo is created to contain various sample apps demonstrating the integration of Firebase with Flutter. The final goal is to c

Sai Kiran Kopparthi 4 May 14, 2022
This is an E-commerce App that you can buy goods, it has no data base so all you see in this app are created as default

This is an E-commerce App that you can buy goods, it has no data base so all you see in this app are created as default. Once I create a server and connect with it, I will create another repository or simply update this one.

Khusan Flutter Dev 2 Feb 10, 2022
Cryptocurrency App with MVP Design Pattern to track all the coins data in realtime for android & iOS . Written in dart using Flutter SDK.

Flutter CryptoCurrency App (MVP) Cryptocurrency App with MVP design pattern to track all the coins data in realtime for android & iOS . Written in dar

Pawan Kumar 287 Dec 30, 2022
A simple Flutter app that lists all the 151 1st generation pokemΓ³ns.

PokΓ©mon App A simple Flutter project that lists all the 151 1st generation pokemΓ³ns. This project was created for study purposes. Installation You can

Marcelo Dornelles Junior 19 Sep 13, 2022
A Flutter News app which organises and highlights all the latest news

News App A Flutter News app which organises and highlights all the latest news, headlines belong to India so that you can be up to date with all the s

null 2 Dec 12, 2021
This repository contains all the code written throughout the 1ManStartup YouTube tutorials for building a travel budget app using Flutter

Travel Treasury Download The Live App This repository contains all the code written throughout the 1ManStartup YouTube tutorials for building a travel

Dave Faliskie 249 Dec 27, 2022
Collection of all the widgets with their tutorial

Flutter Widgets A collection of flutter widgets with tutorials. Season 1 Episode 1 - Sized Box Episode 2 - Animated Builder Episode 3 - Draggable and

Pawan Kumar 147 Oct 4, 2022
A flutter application that allows users to view all kinds of recipes

food recipe app A flutter application that allows users to view all kinds of recipes and bookmark the ones you like to local storage using sqlite. Use

bayorwor 3 Jun 11, 2022
Create a way so that user can share all his social media profile links on a single click

Pro Share The objective of this project is to, create a way so that user can share all his social media profile links on a single click. The project a

Sarthak Agarwal 5 Nov 20, 2022
The Medito app is a 100% free meditation app built with flutter. The app is available on Android and iOS.

Medito App Meditation can positively transform people's lives. We believe no one should have to pay for it. We are the Medito Foundation, and we've bu

Medito Foundation 438 Dec 26, 2022
App-flutter-travel-app - Travel App Built Using Flutter

App-flutter-travel-app - Travel App Built Using Flutter

Sangvaleap Vanny 69 Dec 4, 2022
Flutter Responsive Game of Thrones Flutter App Flutter Responsive Game of Thrones Flutter App

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

Pawan Kumar 16 Jun 9, 2022
Flutter Gender Prediction App Flutter Gender Prediction App

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

Pawan Kumar 30 May 31, 2022
Flutter Login Page Bloc Pattern App Flutter Login Page Bloc Pattern App

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

Pawan Kumar 99 Oct 20, 2022
Flutter: QR Code Scanner App Flutter: QR Code Scanner App

Flutter QRCode Scanner APP Show some ❀️ and star the repo to support the project A new Flutter project. Features Scan 2D barcodes Scan QR codes Contro

Pawan Kumar 250 Nov 10, 2022