All Projects → joshnuss → xuber2

joshnuss / xuber2

Licence: other
An example ridesharing app built with Elixir

Programming Languages

elixir
2628 projects

Projects that are alternatives of or similar to xuber2

geodist
Golang package to compute the distance between two geographic latitude, longitude coordinates
Stars: ✭ 133 (+454.17%)
Mutual labels:  geolocation
Geolocator-2
Learn how to find and work with locations in Django, the Yelp API, and Google Maps api.
Stars: ✭ 24 (+0%)
Mutual labels:  geolocation
serverless-orleans
A demonstration of local development and debugging + serverless Azure deployment of a Dockerized Orleans application.
Stars: ✭ 21 (-12.5%)
Mutual labels:  actor-model
loc
🌍 Helps anyone play with locations
Stars: ✭ 17 (-29.17%)
Mutual labels:  geolocation
CLAVIN-rest
A Spring Boot microservice that serves the CLAVIN (https://github.com/novetta/CLAVIN) library for geo rectifying locations mentioned in text.
Stars: ✭ 16 (-33.33%)
Mutual labels:  geolocation
CLAVIN-NERD
Stanford NLP Implementation of the CLAVIN LocationTagger
Stars: ✭ 22 (-8.33%)
Mutual labels:  geolocation
geolocation
A laravel integration for using the IPInfoDB and Ip2Location services
Stars: ✭ 38 (+58.33%)
Mutual labels:  geolocation
ripple
Simple shared surface streaming application
Stars: ✭ 17 (-29.17%)
Mutual labels:  actor-model
trackanimation
Track Animation is a Python 2 and 3 library that provides an easy and user-adjustable way of creating visualizations from GPS data.
Stars: ✭ 74 (+208.33%)
Mutual labels:  geolocation
kotlin-akka
Akka-Kotlin sample, and support library.
Stars: ✭ 25 (+4.17%)
Mutual labels:  actor-model
geo
Geospatial primitives and algorithms for Crystal
Stars: ✭ 17 (-29.17%)
Mutual labels:  geolocation
IP2Location-C-Library
IP2Location C library enables the user to find the country, region, city, coordinates, zip code, time zone, ISP, domain name, connection type, area code, weather station code, weather station name, mobile, usage types, etc that any IP address or hostname originates from.
Stars: ✭ 37 (+54.17%)
Mutual labels:  geolocation
orange3-geo
🍊 🌍 Orange add-on for dealing with geography and geo-location
Stars: ✭ 22 (-8.33%)
Mutual labels:  geolocation
tutorial
Tutorials to help you build your first Swim app
Stars: ✭ 27 (+12.5%)
Mutual labels:  actor-model
xoom-cluster
The VLINGO XOOM platform SDK cluster management for Reactive, scalable resiliency of JVM tools and applications running on XOOM LATTICE and XOOM ACTORS.
Stars: ✭ 25 (+4.17%)
Mutual labels:  actor-model
ip2location-nginx
Nginx module that allows user to lookup for geolocation information using IP2Location database.
Stars: ✭ 33 (+37.5%)
Mutual labels:  geolocation
ip2location-iata-icao
This list contains the airport codes of IATA airport code and ICAO airport code together with country code and region name supported in IP2Location geolocation database.
Stars: ✭ 39 (+62.5%)
Mutual labels:  geolocation
osx-location
🌎 Utility for polling OS X Location Services for current geographic coordinates. Works on Lion or better.
Stars: ✭ 31 (+29.17%)
Mutual labels:  geolocation
ip2location-cakephp
IP2Location CakePHP plugin enables the user to find the country, region, city, coordinates, zip code, time zone, ISP, domain name, connection type, area code, weather, MCC, MNC, mobile brand name, elevation, usage type, IP address type and IAB advertising category from IP address using IP2Location database.
Stars: ✭ 17 (-29.17%)
Mutual labels:  geolocation
ipapi-python
Python bindings for https://ipapi.co (IP Address Location) - Use with python / django / flask for IP address location lookup
Stars: ✭ 42 (+75%)
Mutual labels:  geolocation

XUber

A reference design for a ride sharing application (similar to Uber & Lyft)

Overview

Ride sharing apps are uniquely suited to Elixir/Erlang because the are:

  • Asynchronous: examples of async operations are passenger requesting a ride, drivers notifying the server of their locations, broadcasting a driver's coordinates to mutiple passengers.
  • Parallel: Millions of peers can be connected simultaneously (theoretically, not yet benchmarked).
  • Soft-realtime: Communication between drivers & passengers occur in near realtime (subsecond).
  • Full-duplex: Phoenix supports full-duplex WebSockets between mobile device and cloud.
  • Fault tolerance: Failures do no propagate. For example a exception in a specific ride cannot effect another, same goes for a node, cell and data center.
  • Resiliency: Failures can have backup plans. For example, if a driver is not responding to a pickup request, a different driver can be dispatched.
  • Multi DC: The management of drivers and passengers is sharded geographically (like a cell phone network). If failure occurs in a specific geographic region, other regions are unaffected.

Installation

hub clone joshnuss/xuber2
cd xuber2
mix do deps.get, ecto.create, ecto.migrate

Running examples

mix run --no-halt examples/basic.exs

Actual log data

Passenger `mary` has joined at coordinates {10, 10}
Driver `tom` has joined at coordinates {10, 10}
Driver `tom` has indicated they are available
Passenger `mary` is searching for drivers within 5km of coordinates {10, 10}
Passenger `mary` found drivers: `tom` @distance=0.0km
Passenger `mary` is searching for drivers within 5km of coordinates {10, 10}
Passenger `mary` found drivers: `tom` @distance=0.0km
Passenger `mary` is searching for drivers within 5km of coordinates {10, 10}
Passenger `mary` found drivers: `tom` @distance=0.0km
Passenger `mary` has requested a pickup at coordinates {10, 10}
Dispatcher received request for pickup at {10, 10} for `mary`
Dispatcher assigned driver `tom` to pickup `mary`
Driver `tom` has been notified to pickup passenger `mary`, pickup #PID<0.878.0>
Passenger `mary` has been notified that driver `tom` will pick them up, pickup #PID<0.878.0>
Driver `tom` has moved to coordinates {10, 15}
Driver `tom` has moved to coordinates {10, 16}
Driver `tom` has arrived at destination {10, 16}
Ride #PID<0.879.0> has started for passenger `mary` and driver `tom`
Driver `tom` has departed, ride #PID<0.879.0>
Passenger `mary` has been picked up and is departing with ride #PID<0.879.0>
Ride #PID<0.879.0> is at {10, 16}
Driver `tom` has moved to coordinates {10, 16}
Ride #PID<0.879.0> is at {10, 16}
Passenger `mary` has moved to coordinates {10, 16}
Driver `tom` has moved to coordinates {10, 17}
Ride #PID<0.879.0> is at {10, 17}
Passenger `mary` has moved to coordinates {10, 17}
Ride #PID<0.879.0> is at {10, 17}
Ride #PID<0.879.0> is at {10, 18}
Driver `tom` has moved to coordinates {10, 18}
Passenger `mary` has moved to coordinates {10, 18}
Ride #PID<0.879.0> is at {10, 18}
Passenger `mary` has arrived at destination {10, 18}
Driver `tom` has dropped off passenger `mary` at coordinates {10, 18}
Ride #PID<0.879.0> has been completed. Dropoff location was {10, 18}
Passenger `mary` has gone offline
Driver `tom` has indicated they are unavailable
Driver `tom` has gone offline
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].