Giter VIP home page Giter VIP logo

rideshare's Introduction

The motivation for building this app is the current traffic condition of Bengaluru.

Most of the People travel alone in their vehicle, even though people want to travel together they wouldnt know who stays near their route.

There are already ride sharing platforms but most of them are open for public, so the safety and security question is still open, if the app is private we need to pay money making it private. And for every ride we need to pay money, which doesnt make any sense.

Being nth car pool app, it should solve the fundamental problem of connecting people together and it should be free for the employees to use. Thats exactly what it does, just suggests people going near your destination.

This app is built on Firebase and follows serverless architechture. The running costs are almost nil. Which is major difference between this and other apps.

The app is running in my company since April 2017 without spending a penny on hosting and other services.

Follow the below steps for installing the app, Or email I can help you in installation.

Demo

https://the-ride-share.firebaseapp.com

Firebase and its config

  1. Go to https://firebase.google.com/
  2. Sign in
  3. Click "Get Started"
  4. Click "Add Project"
  5. Give a project name, click save
  6. From project home page go "Authentication" , click "Set up sign in method" and enable "Google"
  7. On the firebase project page, click on "Hosting" and click on get Started"
  8. Follow the instructions Install the firebase tools (Node and npm have to be installed)
  9. Type "firebase init" to initialise the app.
  10. Do the config as per the below image

Installation of the app

  1. Clone the repo to a seperate directory
  2. Copy all the files except .firebaserc file
  3. Copy and replace all the existing files
  4. Go back to firebase project page and click "Add Firebase to your web app"
  5. Replace the contents firebaseConfig.js with your app cofig
//REPLACE THE CONFIG WITH YOUR CONFIG
var config = {
    apiKey: "AIzaSyA9BvgAK00Af1lXWBiXbjQ1afKrm0oV3Cg",
    authDomain: "the-ride-share.firebaseapp.com",
    databaseURL: "https://the-ride-share.firebaseio.com",
    projectId: "the-ride-share",
    storageBucket: "the-ride-share.appspot.com",
    messagingSenderId: "4721624756"
};
firebase.initializeApp(config);

  1. Create one more gmail account, this will help sending the verification emails

  2. Type in credentials for newly created gmail account
    firebase functions:config:set gmail.email="" gmail.password=""

  3. We need to set these things for nodemailer to send emails, other wise google will block the login

  4. Remove captcha https://g.co/allowaccess
    https://www.google.com/settings/security/lesssecureapps
    https://accounts.google.com/b/0/displayunlockcaptcha

  5. Replace "gmail.com" in with your company domain
    line 22 in "database.rules.json"
    line 137 in app.js
    line no 131 of index.html,
    this makes sure your app stays private to your company.

  6. Set your city's geocode at line 386 and office geocode at line 568 in mydetails.js

  7. cd to functions directory and do type npm install, this will install necessary npm modules

  8. Add API keys for google maps, Visit for further instruction https://developers.google.com/maps/documentation/javascript/

  9. In command line type "firebase deploy" and hit enter

  10. After successful deploy, copy the hosting url and open in browser

Now you have private carpool app for you company For any question and clarification please email me.

Day to day operations

  • Delete the existing requests on a nightly basis
    • Why? Whenever a person requests for a ride, the app reduces the capacity of car of the person who is offering ride
    • We cannot track the completion of the ride currently, hence we cannot reset the capacity after the ride completion, hence every night we need to reset the capacity

Set up a cron job to trigger the http endpoint

  • The http method is in functions folder in index.js i.e. removeActiveRequests
  • We create and set a key to securely trigger this,
npm install -g crypto
node -e "console.log(require('crypto').randomBytes(20).toString('hex'))"

firebase functions:config:set cron.key="<GENERATED_KEY>"
firebase functions:config:get cron.key
  • The url will be
https://us-central1-<PROJECT-ID>.cloudfunctions.net/removeActiveRequests?key=<YOUR_KEY>
  • we will use https://cron-job.org/en/ to set up the nightly trigger, because its free
  • Open and sign up for cron-job.org, put the above url, and set to frequency to everyday 23.30 Hrs

Developer docs

To be updated

App design

Database structure

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.