An interactive Dash application for exploring Michelin-rated restaurants, French socioeconomic data, and wine appellations across France.
- Live application
- First place in Plotly's Autumn App Challenge 2024
- Guide: Search French locations, filter restaurants by geography and Michelin rating, and select map markers for restaurant details.
- Analysis: Compare restaurant distributions and rankings across regions, departments, and arrondissements.
- Economics: Explore socioeconomic indicators alongside Michelin restaurant distributions and optional starred-restaurant overlays.
- Wine: Browse French AOCs by region or appellation, show regional outlines and starred restaurants, and select an appellation for generated information.
Built with Python 3.12, Dash, Flask, Plotly, pandas, GeoPandas, Flask-Caching, and the OpenAI API.
git clone https://github.com/pineapple-bois/Michelin_App_Development.git
cd Michelin_App_Development
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -r requirements_dev.txtOn Windows, activate the environment with .venv\Scripts\activate.
Create a .env file in the repository root:
APP_ENV=development
OPENAI_API_KEY=<your-openai-api-key>
FLASK_SECRET_KEY=<local-development-secret>OPENAI_API_KEYis required by the current import-time OpenAI client and powers Wine appellation information.FLASK_SECRET_KEYis required in production. It is optional locally, where an omitted value produces a temporary key and sessions reset after restart.OPENAI_REQUEST_LIMIToptionally sets the generated-information limit per session; the default is10.CACHE_TYPEandCACHE_DEFAULT_TIMEOUToptionally configure Flask-Caching; the defaults are process-localSimpleCacheand3600seconds.FORCE_HTTPSoptionally overrides automatic production HTTPS handling.DASH_DEBUGoptionally enables Dash debug mode; the default is false.APP_ENV,FLASK_ENV, orDASH_ENVset toproduction, or the presence of Heroku'sDYNO, enables production defaults.
Start the application:
python michelin_app.pyThen open http://127.0.0.1:8050.
Run the test suite from the repository root:
python -m pytestThe tests do not send OpenAI requests, but application import still requires OPENAI_API_KEY to be configured.
The production process declared in Procfile is:
web: gunicorn michelin_app:server
The deployment uses Python 3.12 and installs the GIS system packages declared in Aptfile. Production requires stable FLASK_SECRET_KEY and OPENAI_API_KEY values. HTTPS defaults to enabled when the environment is detected as production.
See AGENTS.md for the current architecture, module ownership, operating conventions, and validation guidance.
This project is released under the MIT Licence.
The Michelin Star logo is by Nikolaos Dimos and is used under CC BY-SA 3.0 via Wikimedia Commons.