giftofgrub / team-bluejay

Website to book a chef. Tech stack: React, Material UI, Python, Flask, Postgres SQL, Amazon S3, SocketIO, Stripe

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

BookAChef

It’s always nice to have a homecooked meal that is authentic and made in your own kitchen. BookAChef is a marketplace where customers can book a chef in their area based on cuisine type and availability.

Contributors

Gabriel Atienza, Moshe Siegel, Kareem Sakr

Tech stack

  • React
  • Material UI
  • Python
  • Flask
  • Postgres SQL
  • Amazon S3
  • SocketIO
  • Stripe

Setup instructions

Rename .env.template under both the server and client folders to .env and update the values/settings to your own.

Adding Postgres database

  1. Download Postgres
  2. Create new database using any SQL client such as pgAdmin.
  3. Update server/.env with your database name, user, password, and url.
  4. Set up your database tables by running python init_db.py
  5. Add sample customers, chefs, and cuisines by running python db_seeder.py

Starting the server

  1. Open a terminal and go to the server folder. Make sure you have pipenv installed (pip install pipenv)
  2. Install the dependencies with pipenv install. This also creates a virtual environment, if there isn't one already
  3. Activate the virtual environment with pipenv shell
  4. Start the app with flask run

Starting the client

  1. Open a terminal and go to the client folder
  2. Install the dependencies with npm install
  3. Launch the app on http://localhost:3000 with npm start

Updating SQL database relationships

After changing any database models, you'll need to update your SQL tables by going to your server folder and running:

  1. python manage.py db init to create a "migrations" folder in the project directory (only needs to be done once)
  2. python manage.py db migrate to populate our "migrations" folder with the updated tables
  3. python manage.py db upgrade to apply the changes to the database

Special instructions for running in production

Within your server install the python library eventlet, an optimized engine for web sockets. Flask-socketio will automatically use eventlet if its installed.

Features

  • Authentication
  • Searching by distance
  • Shopping cart
  • Checkout
  • Payments with Stripe
  • Live notifications
  • Meal creation
  • Profile pages
  • Alerts

Feature descriptions

  • Authentication: Uses cookies for access, refresh, and csrf tokens. React Context passes the users's logged in state throughout the app.

  • Searching: Customers can filter chefs based on cuisines and distance from an address

  • Shopping cart: Customers can add meals to their cart for one chef at a time. If they try adding meals for multiple chefs, they will be prompted to empty their cart.

  • Checkout: Customer chooses an availability that works for them, confirms their cart items, and enters their payment details.

  • Payments: Payments are made using Stripe.

  • Live notifications: Chefs are notified via web sockets when they receive an order via Stripe. All notifications start off as "unread" and change to "read" when a chef opens them.

  • Profile Pages: All users can add profile images, cuisines, and an address. Chefs can add meals. General address locations are shown via Google Maps.

  • Meal Creation: Chefs can create and edit meals to include relevant info such as images, pricing, and ingredients.

  • Alerts: Front end alerts are shown whenever a server request returns an error, such as for incorrect logins or an invalid address.

About

Website to book a chef. Tech stack: React, Material UI, Python, Flask, Postgres SQL, Amazon S3, SocketIO, Stripe


Languages

Language:JavaScript 69.4%Language:Python 28.9%Language:HTML 1.2%Language:CSS 0.4%