Coder Social home page Coder Social logo

oisinq / dbikes-planner Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 1.0 200.56 MB

dBikes Planner: A predictive journey planner Android app and Python back-end API for Dublin Bikes

Python 39.35% Java 60.65%
android cycling dublin-bikes dublin ireland flask python

dbikes-planner's Introduction

dBikes Planner

dBikes Planner Banner

dBikes Planner is an Android journey planning app for cyclists using the Dublinbikes bike-sharing scheme. It allows users to generate cycling routes from their location to a destination, taking into account the availability of bikes at each station.

The back-end for this project is a Flask web server in Python. It uses a microservices approach, building a HTTP API. scikitlearn is used for generating predictions. The app is currently designed to run on Google AppEngine, incorporating many Google Cloud features. CycleStreets and OpenStreetMap are used for generating routes.

UML diagram of system architecture

The front-end is an Android application. It displays the location and status of each station in Dublin, as well as historical data for a station. Users can input a destination, and will receive a cycling route to reach this destination, incorporating bike-sharing stations. Basic directions are also provided.

This app is currently designed for use in Dublin. It could easily be extended for other international bike-sharing schemes.

Installation

The back-end is designed to run on a Google Cloud AppEngine instance. It can be deployed using:

gcloud app deploy

To function correctly, you will need to set up a bucket to store historical bike data. The data in this repo's /data folder can be used for this purpose.

The Android app also requires a Google Maps API key. Change the value in the two google_maps_api.xml files to your Google Maps API key.

If you want to download the latest .apk without compiling from source, the /releases tab is the place to go.

Have fun!

dbikes-planner's People

Contributors

dependabot[bot] avatar oisinq avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

ets-android5

dbikes-planner's Issues

Tweaks to station selection

Would like to fix this up so that it will select a moderate station if it thinks the bikes will be there when the user arrives eg if the rate of usage at that time is generally low, still select it

Migrate files to Google Cloud again

I tried this before, but it didn't work. Would be nice to try again: would make deploying easier and might be able to switch to a Standard instance of AppEngine.

Need to add VGI component

This could be a notification after a journey asking "were you waiting long" or something along those lines.

Doesn't really take waiting into account

Would be nice if the predictor could figure out if you'd be better off waiting until bikes arrive. Kinda hard to do because we only have data from every 10 minutes and we only see the current availability, not exact numbers for how many bikes came in and out.

Black bar when there's hardware buttons

This issue is based on a mix of street views and bottom sheets. Potential fixes I can think of are:

  1. Moving from bottom sheet to a different kind of interface when a station is clicked
  2. Maybe replacing the StreetView with an image or a custom 360 image that we can use there

Or just some better way of indicating that the bottom sheet can be dragged up

Refactor code

The code (especially the Android code) is not in good shape. It needs a full refactoring to get up to standard.

Better graphs

Via feedback:

my only complaint was the I wish you could make the graph full screen when you tapped or swiped up on it- be cool to see it more clearly. I felt like I could keep swiping up when the graph showed up and it felt weird when I couldn't.

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.