craigm26 / bike-bus

An App to help organize and plan BikeBus routes

Home Page:https://bikebus.app

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BikeBus

The BikeBus app is software meant to be an one-stop shop for all things related to bicycling in a group. This app should be able to create BikeBus routes, events, and groups. It should also be able to send push notifications to users and allow users to send messages to each other. The app should also be able to show a map of the route and allow users to see the route and the BikeBus group in real time.

Table of Contents

What

BikeBus is a term to describe a group of cyclists that is usually guided by a leader. In the US, this has become a growing activity to help children get to school. This app will help BikeBus leaders create a route, invite new members and allow parents to monitor the BikeBus as it makes it way to school.

This project has always and will be without ads or selling of user data with PII. Anonymous users and anonymized data wherever possible. BikeBus data might be made available to future API to help build safer streets.

The BikeBus User Interface is being developed in the open and we welcome contributions. We are using the GPL-3.0 License. Please see the LICENSE file for more details.

The BikeBus Database (Firebase) is closed and we are not accepting contributions to it at this time. The plan is to safely build a public and private API to access anonymized data in the future.

Other project documentation that is not in this ReadMe are:

How

We are using the Ionic Framework to build the app. We are using Firebase for the backend. We are using Google Maps for the mapping and directions. We are using Firebase Hosting for the web app and Firebase Cloud Messaging for the push notifications.

Who

We are a group of volunteers who are passionate about cycling and safe streets.

Please see the Contributors file for more details.

Why

We think technology could help make this a smoother, more fun experience while promoting cycling and safer streets with data for policy makers on street design.

Features

  • Create a route, make it a scheduled route and call that a BikeBus group. Invite other or new users to join.
  • Map search then allow options to get directions, look for routes or BikeBus groups
  • "Bulletin Boards" allow users in a BikeBus or Organization to send messages
  • Account page allows users to see their details and change them

Contributing

How you can help:

  1. Test the Production app and report bugs
  2. Suggestions for new features should be added to the Discussions Page page
  3. Feedback on the UI/UX is always welcome

We are looking for help with the following:

  1. UI/UX Design
  2. Ironing out bugs
  3. Adding new features
  4. Testing
  5. Documentation
  6. Translations
  7. Accessibility
  8. Security
  9. Performance

Pre-requisites

  • npm 18.20.0

Getting Started

We're using Ionic Framework with React to build the app so be sure to check out their documentation.

To get started, open a terminal and navigate to the directory where you want to store the project and run the following commands:

git clone git@github.com:craigm26/bike-bus.git
cd bike-bus
npm install

This will clone the project, navigate to its directory and install all dependencies.

Next, you will need to create a Firebase project + register an app and add the configuration to an env file. This is just to satisfy the Firebase SDK requirements; feel free to decline analytics, A/B testing, etc.

For your convenience, a .env.example file has been provided with the necessary keys and empty values. The following command will create a .env file for you:

cp .env.example .env

From there, use the values from your Firebase project to populate the .env file as they belong in the firebaseConfig object in src/firebaseConfig.js.

Then, open the .env file and add your Firebase configuration. You can find this in the Firebase Console under Project Settings > General > Your apps > SDK setup and configuration > Config.

With your environment configured, you should be able to run the following commands:

npx ionic serve

npx is not necessary if you have Ionic installed globally but generally that is not recommended. This will start a local development server and open the app in your default web browser. You should now be able to see the app running locally! A Google Maps key will be required to see the map. You can get one from the Google Cloud Console but this is probably out of scope for "Getting Started".

Development Builds

Once you have the app running locally, pick an issue from the Issues list or create a new one. Then create a branch and start working on the issue. Once you are done, create a pull request and assign a reviewer.

The reviewer will check the code and merge it into the main branch then deploy the app to Firebase Hosting for testing.

Once the app is tested, the reviewer will deploy the app to Firebase Hosting for production.

To deploy to iOS TestFlight

  • ionic build
  • npx cap sync
  • npx sync ios
  • manually add the GoogleService-Info.plist file to the ios/App folder
  • manually modify the config.xml file to add the following lines:
<?xml version='1.0' encoding='utf-8'?>
<widget version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <access origin="*" />
  <platform name="ios">
      <resource-file src="GoogleService-Info.plist" />
  </platform>
</widget>
  1. Open Xcode and select the project
  2. Select the target
  3. Select the "Signing & Capabilities" tab
  4. Select the "All" tab
  5. Select the "Signing" section
  6. Select the "Team" dropdown and select the team
  7. Select the "Signing Certificate" dropdown and select the certificate
  8. Select the "Provisioning Profile" dropdown and select the profile
  9. Select the "Product" menu
  10. Select the "Archive" option
  11. Select the "Distribute App" option
  12. Select the "App Store Connect" option
  13. Select the "Next" button
  14. Select the "Upload" button
  15. Select the "Next" button
  16. Select the "Done" button
  17. Go to App Store Connect
  18. Select the "TestFlight" tab
  19. Select the "Builds" tab
  20. Select the build
  21. Select the group for testing the build

To deploy development builds and distribute to Google Play Store

  1. Open Android Studio
  2. Select the project
  3. Select the "Build" menu
  4. Select the "Build Bundle(s) / APK(s)" option
  5. Select the "Build APK(s)" option
  6. Select the "Locate" button
  7. Drag the .apk file to the Google Play Console
  8. Select the "Create Release" button
  9. Select the "Review" button
  10. Select the "Start Rollout" button
  11. Select the "Confirm" button

To deploy to Firebase preview channel

  • ionic build
  • npx cap sync
  • npx sync ios
  • npx sync android
  • firebase hosting:channel:deploy preview

Production Builds

Production builds will be compiled by Craig Merry and pushed out when tested.

To deploy to Web (Firebase production channel)

  • ionic build --prod
  • npx cap sync
  • npx sync ios
  • npx sync android
  • firebase deploy --only hosting:production

To deploy for Android

  • ionic build
  • npx cap sync
  • npx sync Android
  • manually add the google-services.json file to the android/app folder
  • clean build in Android Studio
  • perform a build in Android Studio - .aab file
  • upload to Google Play Store as a new release (production for now)

To deploy for iOS

  • ionic build
  • npx cap sync
  • npx sync ios
  • manually add the GoogleService-Info.plist file to the ios/App folder
  • manually modify the config.xml file to add the following lines:
<?xml version='1.0' encoding='utf-8'?>
<widget version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <access origin="*" />
  <platform name="ios">
      <resource-file src="GoogleService-Info.plist" />
  </platform>
</widget>
  • commit to github

Authors

Acknowledgments

About

An App to help organize and plan BikeBus routes

https://bikebus.app

License:GNU General Public License v3.0


Languages

Language:TypeScript 82.7%Language:JavaScript 13.2%Language:CSS 3.1%Language:Swift 0.4%Language:HTML 0.4%Language:Ruby 0.2%Language:Java 0.2%Language:Shell 0.0%