/easy_park

YHack 2018 - Runner Up for Best Use of Smartcar Technology

Primary LanguageJavaScript

EasyPark - YHack 2018 Runner Up for Best use of Smartcar Technology

About

Easy Park was created during YHack 2018 as a solution to parking penalties and restrictions. Have you ever left your car in a street cleaning lane, snow plow lane, 2 hour parking, or at a bar? If your car has 3G/4G/LTE capabilities and is made by one of the 13 major brands supported by the Smartcar API, EasyPark can find a trust-worthy individual to move your car for you. Using Smartcar's API, a driver can unlock your car doors, use a key inside (keyless remote start will be supported in the future), move your car, and lock the car when they are done. It's that simple!

Details

Unfinished Product

Please note that this is an unfinished product created during a 32 hour Hackathon. It is not optimized and may break traditional design standards in favor of completing a minimum viable product before the end of the event. A working implementation of the unlock feature and a basic design goal has been provided. Future iterations of this project should correct design inconsistancies and security vulnerabilities in addition to adding features depicted in the design wireframe.

How to Start

MongoDB

MongoDB stores persistant server-side data necessary for the application to perform in a multi-user environment. Interactions with the database are managed by the Node Server. Cloud services such as MLab, Google Cloud Platform, or Amazon Web Services may be used to host the database, however, for demonstration purposes, install MongoDB locally.

Note, by default, Easy Park will attempt to connect to an MLab development database. To test against a local database, update the URL in app.js.

MongoDB on MacOS Using Homebrew

  • Install MongoDB for Homebrew
brew install mongodb
  • Run MongDB Locally
brew services start mongodb
  • Stop MongoDB
brew services stop mongodb

Node Server

The NodeJS server handles all interactions with SmartCar and the Mongo Database. This server could be deployed, but is currently configured for local hosting.

In the Server Directory run:

  • npm install to install dependencies
  • nodemon to start the server.

Angular Front-End

The Angular Client is a basic proof of concept of the features available in the app. To access the client, build a production copy, or run the Angular Development Server.

The following commands should be run from the Client Directory:

  • Installation (Both)
  • Build Production Copy
    • ng build --base-href ./ --prod This will build to the dist directory. Access the index.html file to run the build
  • Launch Angular Development Server
    • ng serve This will launch a live updating development server. It is significantly slower than the build, but will update and refresh all isntances any time the source code is changed. While running, the client can be accessed from localhost:4200.

Disable Allow Control Origin in Browser

A secure connection between the NodeJS server and the client is not configured currently. Modern browsers will block communication between the two services. To disable this feature in Chrome, install and enabled the Allow-Control-Allow-Origin: * Plugin.