Raymond Lee

Our Cookbook

Collaborative cookbook web app

Our Cookbook homepage
Technologies
  • React
  • Node.js
  • MongoDB
  • GraphQL
Links

Overview

Our Cookbook is a web app designed to allow users to contribute and add their favourite recipes to the online community. I created this project as a result of having too many bookmarked recipes that were not organized and in one central hub. The front end was built using React, and the back end was built with Node.js along with MongoDB to store the data and GraphQL for querying data.

Process

Back End

For this project, I wanted to incorporate GraphQL, a new technology I have been wanting to learn. Therefore, I built a GraphQL server with Node.js for the back end. For the database, MongoDB was used because the recipes did not have many relationships and a simple approach was best. The images are stored on Cloudinary as they have a great API but as it was challenging to incorporate Cloudinary with GraphQL, I had to create a REST endpoint for sending the images to the back end.

Front End

The front end was built using React with custom-made styling. My goal for the interface was to be minimal and clutter-free, unlike many recipe websites. This would allow for quick navigation for users. Instead of building a user system to post recipes, I utilized Google Sign-in. This would allow for frustration-free signup, and allow the authentication process to be in the front end.

Our Cookbook home page
Home page displays all of the recipes.
Recipe page for Slow Cooker Beef Chili
The minimal interface of each recipe allows users to see essential information.
Page to add a new recipe
The process to add a new recipe is quick with its few required fields.
Home page in mobile view
Responsive interface allows the web app to be accessed from different type of devices.

Reflection

During the design process, I had many ideas but my ultimate goal was a hassle-free user experience. This meant keeping everything minimal while incorporating fun ideas such as the “Random Recipe” function that would give users a random recipe. For this project, Google sign-in was used but in the future, I would like to incorporate a user system to include those who do not want to sign in through Google. Additionally, a search function will be necessary for the future as the number of recipes grows. Utilizing GraphQL for the first time allowed me to make cleaner API calls, something I would consider for my future projects.