Coder Social home page Coder Social logo

abbasnikbakht / env-can-wx-app Goto Github PK

View Code? Open in Web Editor NEW

This project forked from david-hurley/env-can-wx-app

0.0 1.0 0.0 3.77 MB

Web application to download and visualize historical weather data across Canada

Python 82.14% CSS 17.36% JavaScript 0.49%

env-can-wx-app's Introduction

Weather History Canada Web App

Weather History Canada is an open source web application tool for accessing historical weather data from over 8000 active and inactive Environment and Climate Change Canada (ECCC) maintained weather stations going as far back as 1840. With a few clicks of the mouse you can search, download, and visualize hourly, daily, and monthly ECCC weather data for any desired record length. The goal of Weather History Canada is to better the user experience by making it easier and quicker to download and interpret large amounts of historical weather data.

CLICK HERE TO VISIT SITE

Key Features

  • Built in pure Python using Plotly Dash and deployed to a Heroku free dyno
  • Periodic URL request via AWS Lambda to avoid sleeping of free Heroku dynos (i.e. eliminates slow load times)
  • Map based searching and realtime filtering of weather stations based on multiple criterion
  • Execution of long-running tasks as background jobs via Celery and Heroku Redis to avoid Heroku request timeouts
  • Handles concurrent download requests via execution of tasks in Celery using Gunicorn Gevent worker class
  • No file storage on disk. Downloads are stored on AWS S3 and delivered on request via pre-signed URL
  • Interactive graphing and figure capture to quickly visualize and share data
  • Multi-browser functionality. Manually tested on Chrome 78, IE11, Firefox 68, and Safari 10.1

Screenshots

What do the files do

app.py

This initializes the Plotly Dash app. It is called on by index.py

index.py

This is where the app is referenced to the server. Data from different pages that persists in memory or session storage is referenced here. This sets the path to different pages.

tasks.py

This connects the "Generate Data" request to Celery and Redis backend to download data. The results of the download are sent to AWS S3 bucket.

Procfile

File defining commands to be run by Heroku web and worker dynos. This tells Gunicorn to run the web server.

home_page.py

Contains all of the application layout and callbacks for the Home Page. This includes the HTML and CSS and React.js callbacks.

graph_page.py

Contains all of the application layout and callbacks for the Graph Page. This is where the generated data is visualized. The figures can are interactive and can be saved as an image.

about.py

The What, Why, Who, and Where of Weather History Canada.

chriddyp.css

Defualt Plotly Dash CSS styleguide.

style.css

This is extra styling for the app.

env-can-wx-app's People

Contributors

david-hurley avatar

Watchers

James Cloos avatar

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.