Giter VIP home page Giter VIP logo

airwatch's Introduction

Logo

Airwatch is an open web application that consumes data from the AirNow API (https://docs.airnowapi.org/Data/query) and allows a visitor to view the reported events on a map.

Type URL
Release โ˜€๏ธ http://airwatch-proxy.airwatch-stack.sjmatta.svc.tutum.io/
Master Branch ๐Ÿš€ http://airwatch-proxy-snapshot.airwatch-stack-snapshot.sjmatta.svc.tutum.io/

Build Status Code Climate

Team and Development Process

  • DevOps and Project Lead: sjmatta
  • Developer: treyyoder
  • Senior Software Consultant and Scrum Master: etrudeau

Our development process requires selection of a project lead to run the project. This individual is ultimately responsible for project success and product quality. A senior software consultant assists by coaching the team during sprint planning, daily scrums, and independent reviews. On most projects, DevOps would be a separate team member, but due to the small size of this project, the lead handles the DevOps setup and tweaks. We conduct code review directly in GitHub through comments and issues and in our Slack collaboration environment. Issues are automatically synced with Waffle.io Agile boards.

Technology Stack

Airwatch is built on Meteor.js and MongoDB using Leaflet and OpenStreetMaps as the mapping layer and map provider, with Twitter Bootstrap as the CSS framework. We leverage CircleCI for continuous integration. The app is deployed in a Docker container hosted on DigitalOcean. We leverage Tutum to manage the Docker container on DigitalOcean.

Most of the technologies in Airwatch are free and open source. However, several tools used in the development process are only free to use on open source projects. These include Tutum, CircleCI, and NewRelic. The software licensing is as follows:

  • Meteor: MIT
  • Jasmine: MIT
  • Leaflet: BSD
  • MongoDB: GNU AGPL v3.0
  • OpenStreetMap: ODbL
  • HAProxy: GPL v2.0
  • Docker: Apache 2.0
  • Twitter Bootstrap: MIT

Use of Airwatch is limited by the licensing of its component parts. The Airwatch source code is licensed under GPL v3.0.

Continuous Integration

Automated continuous integration and deployment is managed through CircleCI. On commit to the Master branch, the code is automatically deployed to Docker Hub. Tutum describes the container configuration, layout, and relationships, and automatically downloads/starts the Docker containers on a node at DigitalOcean.

For additional details, please see the wiki.

Configuration Management

Configuration for the app (Meteor in .meteor), CircleCI (circle.yml), and Tutum (tutum.yml) are managed through their respective config files in the repo. Confidential information (passwords, etc.) are stored as environmental variables in CircleCI and aren't available in GitHub.

Continuous Monitoring

The release containers are monitored by New Relic. The Tutum stack consists of 2 HAProxy (http://www.haproxy.org/) containers -- one for production/release, and one for the master branch, doing round robin load balancing to 4 Airwatch containers. Each set of 2 Airwatch containers share a MongoDB container. Two New Relic containers monitor half of the running containers each.

Unit Tests

Unit tests are written using Jasmine and run using the Velocity test runner for Meteor. CircleCI runs the unit tests as part of the build/deploy process. See the Development section to run the unit tests.

Development

  1. Install Meteor
  2. Clone this project
  3. cd into the project directory
  4. Optionally run unit tests: meteor --test
  5. Run the project: meteor
  6. Go to http://localhost:3000/

Running

Deploy to Tutum

There are several ways to run the application. You can use the badge above to create the Tutum stack (some environmental variables required), follow the instructions in the Development section, or launch the Docker container with the directions below:

  1. Set the following environmental variable
  • SSL_CERT: Base64-encoded DER private key and certificate, all on one line, with the text \n replacing line separators
  1. Launch the required Mongo database: docker run -d --name mongo mongo
  2. Launch the Airwatch container: docker run -d --name airwatch --link mongo:mongo -e ROOT_URL=http://localhost -p 80:80 ditinc/airwatch
  3. Navigate to http://localhost/

Credits

Hot Air Balloon graphic by Freepik from Flaticon is licensed under CC BY 3.0. Made with Logo Maker

airwatch's People

Contributors

dan-nyanko avatar etrudeau avatar sjmatta avatar treyyoder avatar waffle-iron avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

airwatch's Issues

Update map tile layer

Use Open Street Map instead of Mapbox so that there are no API key or limit issues in the future.

Change Airwatch info card

Change the text in the info card that pops up from the logo to read:

Select a state from the drop down to zoom to that state, or click within the state on an area without a marker. Click a marker to see details about the air quality station. Data pulled from airwatch.gov.

--> Also change the legend to use the full color range for the markers

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.