Giter Club home page Giter Club logo

whats-cookin's Introduction

Can You Smell What's Cookin'?

Contributors

Abstract

FreshPicks is a card UI recipe application where users can view and filter recipes based on their existing pantry ingredients and recipe type. There is also a feature that allows users to favorite their recipes, "shop" for missing ingredients and "cook" a recipe, which removes any ingredients used in the cooking process.

In this project, we refactored an existing code base and ensured that all functionality was working properly, created a robust testing suite, added new features such as Fetch API, SCSS, Accessibility and testing with Chai Spies.

App in Action

Filter Recipes GIF

Favorite Recipes GIF

Search Recipes by Name GIF

Setup & Installation

To view and use the application, clone down this repository and install npm.

git clone [email protected]:npdarrington/Whats-Cookin.git
npm install

To view the test suite:

npm test

Skills

  • OOP using ES6 classes
  • Array iterator methods/Object methods
  • Test Driven Development - designing an application by testing first and pseudo-coding before coding functionality
  • Accessibility - following ARIA guidelines to provide seamless tabbing for screen readers and choosing a color scheme that accommodates for colorblindness
  • Group workflow using a project board, concise commits, linking commits/PR's to issues, automated PR template, and documented code review
  • Refactoring existing code base by following SRP and DRY principles and using newer technologies

Technologies Used

  • Vanilla JS
  • HTML
  • CSS/SASS
  • Webpack
  • Mocha framework
  • Chai library with Spies plug-in for DOM testing
  • NPM
  • Fetch API to GET/POST data to a server
  • GitHub/Git
  • Eslint

Wins & Challenges

Challenges

  • Writing our tests based the wrong data -- in hindsight, we should have checked the API data supplied before writing new tests and methods. We learned later in the process that API datasets differed from original project's repo data and could have saved time with functionality that was unneeded (RIP User.marieCondoMyPantry)
  • Using API data that can be modified by multiple developers (both within our group and other students in the class). We're all learning how to use API data for the first time, so data was sometimes altered in ways that might not work with how our class methods were written.
  • Posting data to the server. We realized as a group that this would have been easier had we used Promise.all to ensure that all data that we needed to post to the server was available as our methods were using it.

Wins

  • Tackling complicated logic involving multiple datasets.
  • Learning how to take advantage of Webpack's features to consolidate our files into one neat bundle. We found that while everything doesn't have to be linked through an html scripts tag, the correct files must be linked in index.js and have a chosen entry point (scripts.js) before deployment.
  • Using Fetch to GET data from a server.
  • Deciding (not) to use inheritance - while this is a new feature we learned during this module, we felt that it did not offer enough advantages to be applicable for how we structured our classes.
  • Implementing Chai Spies to test functionality on the DOM.
  • Exploring SCSS functionality to refactor using nesting and variables.

Additional Links

whats-cookin's People

Contributors

aemcdonald avatar hannakim91 avatar jwoltjen avatar robbiejaeger avatar npdarrington avatar khalidwilliams 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.