Eat well and cheaper than usually
Table of Contents generated with DocToc
- Introduction
- Objective - Workshop in 1 sentence
- How to do that?
- Just tell me what to do
- Examples of steps to do
- Don't forget
- Licence
Each year, Michelin publish the Michelin Red Guide which awards Michelin stars to some restaurants.
The criteria for the stars are:
- Michelin star "A very good restaurant in its category" (Une très bonne table dans sa catégorie)
- Michelin stars: "Excellent cooking, worth a detour" (Table excellente, mérite un détour)
- Michelin stars: "Exceptional cuisine, worth a special journey" (Une des meilleures tables, vaut le voyage)
Ther average price for a starred restaurant could start from 50€ up to more than 400€.
Thanks the LaFourchette, you can book a restaurant at the best price and get exclusive offers and discount up to 50%.
Get the current deal for a French Michelin starred restaurants.
By creating a link between restaurant.michelin.fr, lafourchette.com and the end-user.
Node.js + React + Material Design (mdl, bootstrap, foundation...) + ES6 [+ docker + redis ...]
- Fork the project via
github
- Clone your forked repository project
https://github.com/YOUR_USERNAME/top-chef
❯ cd /path/to/workspace
❯ git clone [email protected]:YOUR_USERNAME/top-chef.git
- Follow the steps
- commit your different modifications:
❯ cd /path/to/workspace/top-chef
❯ git add -A && git commit -m "feat(restaurants): fetch list of starred restautants"
(why following a commit message convention?)
- Don't forget to push before the end of the workshop and before the end of the 2 dedicated sessions
❯ git push origin master
Note: if you catch an error about authentication, add your ssh to your github profile.
- If you need some helps on git commands, read git - the simple guide
- How it works https://restaurant.michelin.fr
- What are the given properties for a starred restaurant: name, adress, town, stars, chef... ?
- ...
Some things to do:
- Browse the website
- define the JSON schema for a restaurant
- ...
Example of Restaurant: https://restaurant.michelin.fr/2abl39j/le-chiberta-paris-08
- How it works https://www.lafourchette.com
- What are the properties that we need to provide to lafourchette.com to get a deal ?
- How to identify a deal on the page ?
- ...
Some things to do:
- Browse the website
- Check how that you can get the deal: api etc.... (check network activity)
- define the properties required to get a deal
- define the JSON schema for a deal
- ...
Example of a deal: https://www.lafourchette.com/restaurant/le-chiberta-stephane-laruelle-guy-savoy/2828
Some things to do:
- How to create a link between the starred restaurant and lafourchette?
Create a module called michelin
that return the list of restaurant
const michelin = require('michelin');
console.log(michelin.get());
Some things to do:
- scrape list of French starred restaurants
- store the list into JSON file, nosql database (like redis, mongodb...)
- create a node module that return the list
Create a module called lafourchette
that return the available deal for a given restaurant
const lafourchette = require('lafourchette');
...
const restaurant = {...};
console.log(lafourchette.getDeal(restaurant));
Some things to do:
- create the calls (api, http) to get the restaurant page
- get the deal (by scraping or decoding api response)
- return the deal
MVP to do:
- List French starred restaurant and their current deals
Next features:
- Add filters:
- filtering by name
- sorting by stars
- Bonus: Display on a map only the starred restaurants with an active deal
Some things to do:
- Notify me (discord or slack) a new deal for any starred restaurant
- Monitor and notify a new deal for a given restaurant
Focus on codebase and UX/UI