Giter Site home page Giter Site logo

lab-react-ironnutrition's Introduction

logo_ironhack_blue 7

React | IronNutrition

Introduction

Since the beginning of the bootcamp, you just realized that your diet is not healthy and it may have an impact on your health (and productivity) and the long term.

To take care of the food you eat, you decided to create a nutrition app that will track everything you eat!

Installation

Create the starter-code

You can create a new React app (create-react-app) and move the file foods.json in the src folder:

$ create-react-app starter-code starter-code
$ cd starter-code
$ mv ../foods.json src
$ npm start

Bulma installation

We will use Bulma for the design :)

$ npm install bulma --save
// src/index.js
import 'bulma/css/bulma.css';

Import a JSON

You will need to save into the variable foods the result of ./foods.json

import foods from './foods.json'

About the design

If you struggle with the design, you can find a static example of what is expected inside example.html

Instructions

Iteration 1 | Create FoodBox component

Create a FoodBox component that takes at least food as a prop and displays a box with all the information about an ingredient.

We recommand to use that HTML to display properly the FoodBox:

<div className="box">
  <article className="media">
    <div className="media-left">
      <figure className="image is-64x64">
        <img src="https://i.imgur.com/eTmWoAN.png" />
      </figure>
    </div>
    <div className="media-content">
      <div className="content">
        <p>
          <strong>Pizza</strong> <br />
          <small>400 cal</small>
        </p>
      </div>
    </div>
    <div className="media-right">
      <div className="field has-addons">
        <div className="control">
          <input
            className="input"
            type="number" 
            value="1"
          />
        </div>
        <div className="control">
          <button className="button is-info">
            +
          </button>
        </div>
      </div>
    </div>
  </article>
</div>

Iteration 2 | Display food

In your App component (your main component), display as many FoodBox as elements inside the variable foods.

Iteration 3 | Implement search bar

Create a Search component to perform a search that updates the list of all meal.

Iteration 4 | Create add buttons

On your FoodBox, you have an input an "+" button. Use them so that when a user clicks on the button, it adds them on a list on the right called "Today's foods".

You will also need to display the total amount of calories at the bottom of the list as a recap.

If you don't remember how to create responsive columns with Bulma, you can check the documentation.

Iteration 5 | Bonus | Group ingredients

You made an awesome application, but you have found a little problem in the UX. For example, if you click twice on "Pizza", it will display 2 lines "1 Pizza = 400 cal" instead of 1 line "2 Pizza = 800 cal". Fix that problem.

Iteration 6 | Bonus | Allow the user to remove an ingredient

On the "Today's food", add a trash icon to let users removing one of their items.

Solution

You will find the solution here: https://github.com/mc100s/training-labs-react/blob/master/src/lab-react-data-binding/solution.js

You can replace the content of your src/index.js by the solution.

lab-react-ironnutrition's People

Contributors

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