Weather Greeting Application
This project demonstrates how to use Python to create web applications. It is primarily meant for educational purposes, specifically created for the WorldQuant University - Introduction to Data Science Module.
The skills and tools used are:
- Python's
requests
package. - Python's
flask
web framework. - working with JSON.
- modular programming.
When a client visits the application, it:
- gets the client's IP address.
- uses the IP address to look up their location.
- uses their location data to greet them with temperature of the city they are located in.
Prerequisites
All required Python packages can be found in the requirements.txt
file. Additionally, the provided Makefile
can be used to create a virtual environment by running make venv
. You will also need a Heroku account, and to have installed the Heroku CLI.
Running the app locally using Flask
You may want to run the app using Flask locally before deploying it to Heroku, especially if you have made any changes to the code. To run locally:
- clone the repository.
- in the repository, run
make deploy
. - open the link provided in the command line.
If you are using Windows, you can:
-
create and activate the virtual environment.
py -3 -m venv venv venv\Scripts\activate.bat
-
set FLASK_APP=weather_app/app.py
in the command line. -
run
python -m flask run
. -
open the link in the command line.
Alternatively, you can deploy using Docker.
docker build -t weather_app .
docker run -d -p 5000:5000 weather_app
Deploying to Heroku
Make sure your app is ready to be deployed to Heroku by running Flask locally. To deploy to Heroku:
- clone the repository (if you haven't yet).
heroku login
and enter your credentials.heroku create
orheroku create app-name
where app-name is a custom app name.git push heroku master
.heroku config:set DEPLOY=heroku
.heroku open
or open the app online through your Heroku profile.
Future work
Since this is a short demonstration of what you can do using Python to create web applications, consider extensions to the project. Some ideas include:
- showing a plot of the forecast.
- using their location to display other location specific data.
Contributing to this project
Please see the contributing guidelines found in CONTRIBUTING.md
.
Contributors
Thanks to the following people who have contributed to this project:
License
This project is distributed under the GNU General Purpose License. Please see LICENSE
for more information.