Skip to content

imduffy15/carcloud-mobile-app

Repository files navigation

CarCloud

Build Status

Description

The internet of things is a computing vision where everyday physical objects will be connected to the internet and to identify themselves to other devices.

The internet of things is significant because an object than can represent itself digitally becomes something greater than the object itself. No longer does the object relate to just its user, but it is now connected to surrounding objects and a database.

By installing a device with GPS, 3D Accelerometer and GSM modem into a car’s on-board computer one can stream several metrics into the clouds. Such data appeals to many business models and applications including:

  • Ecodriving: fuel calculation, RPM analysis and idling detection.
  • Location aware services: position, heading and speed.
  • Driver safety: braking, acceleration and cornering.
  • Theft notification.
  • Car diagnostics: DTC collection and remote mechanic access.
  • Insurance: Impact detection, Mileage, Speeding and trip engine.

Such information would be useful to various parties including, business’ with company fleets of vehicles, insurance companies, or even parents concerned about their children's driving.

CarCloud will be a mobile and web based desktop application that focuses on supplying car owners with access to trip information and setting alerts for trip events. This will be displayed as points on a map, each point will have various metrics associated with it, this includes things such as speed, RPM, mileage, stopping time, etc.

Programming Languages:

  • Java
  • SQL
  • HTML
  • JavaScript
  • CSS

Programming Tools:

  • Spring boot - Skeleton configuration for creating spring applications.
  • Maven - build automation tool for java.
  • Spring MVC - Web component of the Spring Framework. Provides rich functionality for building robust Web Applications.
  • Jackson - JSON marshaller for java.
  • Spring Data JPA - Easily implemented Java Persistence API based repositories.
  • Hibernate - Object-relational mapping library for java.
  • Liquibase - Allows tracking, managing and applying database schema changes.
  • Ehcache - Second level cache for hibernate.
  • Logback - Log management
  • HakariCP - Connection pooling for JDBC.
  • Metrics - Captures JVM and application-level metrics.
  • Swagger - Automated API documentation generator.
  • AngularJS - JavaScript framework for creating single page web applications.
  • GulpJS - build system for web based front ends.
  • BootStrap - Set of tools for building web applications. It supplies various templates and JavaScript extensions.
  • IonicFramework - Front-End framework for developing hybrid mobile apps.
  • PhoneGap - Hybrid mobile app development framework.
  • MySQL - Relational Database.

Learning Outcomes:

Advances in client side technologies are changing the role of today's web application server. Android, iOS and browsers are powerful computing platforms. Their success has led to a reevaluation of 'classic' web applications. As such client side front end model view controller (MVC) frameworks have been developed, As a result developers can build powerful and compelling user interfaces.

By implementing MVC functionality at client side, it reduces the complexity of the server and results in applications composed around well-defined APIs.

CarCloud will be less focused on application functionality and more interested in modern application design and best practices. The aim of the project is to learn how to develop a scalable, flexible and well-defined RESTful API, Build a modern single page web application and experiment with hybrid mobile application development solutions.

The project will entail both frontend and backend development. One will be required to learn about the Spring Framework for creating the backend and PhoneGap for creating the mobile application.

Hardware / Software Platforms

The backend application will be developed in Java. It will be deployed on Apache Tomcat 7.

The client web based application will be built to support Google Chrome.

The hybrid mobile app will be tested on Android 4.4.

It is likely the client side application will function on other browsers(Safari, Firefox and Internet explorer) and platforms (iOS) however for the sake of this assignment they will not be officially supported.

The device for reporting the car metrics will be supplied by http://munic.io.

Special Hardware / Software requirements

  • Computer capable of running the latest version of Google Chrome.
  • Mobile Device capable of running android 4.4.
  • Munic.io Box device that will interface between the car’s onboard computer and the CarCloud backend.