Git Product home page Git Product logo

p5__foodlik's Introduction

Foodlik, an API for good people

oooooooooooo                           .o8  oooo   o8o  oooo
'888'     '8                          "888  '888   '"'  `888
 888          .ooooo.   .ooooo.   .oooo888   888  oooo   888  oooo
 888oooo8    d88' '88b d88' '88b d88' '888   888  `888   888 .8P'
 888    "    888   888 888   888 888   888   888   888   888888.
 888         888   888 888   888 888   888   888   888   888 `88b.
o888o        'Y8bod8P' 'Y8bod8P' `Y8bod88P" o888o o888o o888o o888o

An elegant UI based on OpenFoodFact.

NOTE : enlarge the window of your SHELL for an optimal result

The application has a large portion of French food listed on OpenFoodFact. It repeats these foods, displays their information and generates substitute foods with a higher nutri-score.

Scrum project made with Trello: trello image

I - Installation

This UI need some other programs to work well.

1.1 - Install Python

Foodlik is based on python, an elegant coding langage. Get the last Python's version at the following link. Be sure you got the 3.6 version (or newer). Check for "pip" and for the root integration during the installation.

1.2 - Install the database

Curently, Foodlik support PostgreSQL and MySQL.

PostgreSQL installation : follow the link. MySQL installation : follow the link. Install the MySQL GPL version.

1.2.1 - ID, password and environnment variables

You can create a new file and write your ID and password database. Create an app_env file at the root of the project. insert in:

export POSTGRES_USER="your_id"
export POSTGRES_PASSWORD="your_password"

export MYSQL_USER="your_id"
export MYSQL_PASSWORD="your_password"

Replacing the identifiers and passwords with yours. Then start the file in your console (source app_env or . app_env). Environment variables will be loaded at each application launch, which will save you from having to retype your username and password.

The name "app_env" is automatically ignored by Git. I advise to enter users who have all access to avoid unpleasant surprises ("postgres" for PostgreSQL and "root" for MySQL).

1.3 - Install some Python's libraries

Foodlik uses some third-party Python's librairie.

Note: You should set a new virtual environment before installing.

  • pip install psycopg2. Only if you want to use PostgreSQL.
  • pip install mysql-connector. Only if you want to use MySQL.
  • pip install docopt. Allow you to write a good Shell parser.
  • pip install prompt-toolkit. Allow you to use auto-completion.
  • pip install requests. Allow you to use the requests easily.
  • pip install termcolor. Allow you to display colored texts.

II - Quickstart

  1. Install python 3.6 and PostgreSQL or MySQL.
  2. Create a new virtual environment and install the required modules (pip install -r requirements.txt will install all required packages).
  3. Launch the chosen server. You can save your ID and password using environnment variables.
  4. Open your favorite SHELL at the root of the folder.
  5. Type python main.py --psql create_database and wait few minutes.
  6. Type python main.py --psql.
  7. Enjoy.

Note : you can type --msqlin place of --psql if you want to use the MySQL database.

III - Structure

3.1 - User Interface

The user interface has a Home and two parts with 3 and 2 sections.

The first part is the product selection and contains:

  • the categories
  • products of a category
  • the selected product

The second part is the substitute view and contains:

  • the substitutes list
  • the substitute page

each section follows the following pattern:

  • A header: displays the title of the section.
  • a body: displays the contents of the section.
  • a footer: displays the possible commands in the section.

Exemples :

home categories product

3.2 - DATAS

The data in this program is all from the OpenFoodFact API. First data are the categories, numbering 234.

next come the products (about 18,000 products). Each product has:

  • a name (title)
  • a description
  • some stores
  • some categories
  • an url to the OpenFoodFact page
  • a nutri-score

then substitutes. They simply link the products (they are products).

3.2.1 - Filters

The products have been filtered. Have been set aside:

  • those who did not belong to the categories selected
  • those who did not have a nutri-score
  • duplicate products (a product with a similar name has already been added)

3.2.2 - Substituts

Substitutes follow two algorithms, each of which returns a substitution product.

  • The first will look for a product with a better score in the current category.
  • The second will look for a product with a higher score in the lowest category of the targeted product (the result is generally more accurate).

IV - Options

The UI has several options that have passed since the SHELL.

4.1 - Load the datas

Note : The update is done slowly. Do not be presced.

  • Type python main.py --load_pages. This option retrieve data from the OpenFoodFact site.

Note : You can also specify the desired page number by typing python main.py --load_pages 1 to 5. The pattern is as follows: main.py (-l | --load_pages) [FIRST-PAGE [to LAST-PAGE]]

4.2 - (Re)create the database

  • Data are stored in a Json file. Let's go to the Data-base : python main.py --create_database. This will delete and recreate the database foodlik, and add all Json data inside.

Note : Recreate the MySQL database is fifteen times longer than the PosteSQL database. It's due to their respective python library.

4.3 - the mix of both

  • Type python main.py --psql --full_install to use the mix of the two previous methods.

Note : don't forget you can replace --psql by --msql.

V - FAQ

could not connect to server: Connection refused When i launch the application.

  • Be sure the PostgreSQL / MySQL server is running.

ERROR: database "database_name" is being accessed by other users When i launch the application.

  • Disconnect your pgAdmin connection. A way to solve it is to restart the server.

p5__foodlik's People

Contributors

8area8 avatar

Stargazers

 avatar

Watchers

 avatar  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.