Coder Social home page Coder Social logo

chrishappy / smooth-shopping Goto Github PK

View Code? Open in Web Editor NEW
2.0 3.0 1.0 5.61 MB

Empowering Food Bank Clients with the Dignity of Choice

License: GNU General Public License v3.0

JavaScript 82.02% CSS 16.63% HTML 1.13% Shell 0.22%
drupal react food-banks headless-drupal

smooth-shopping's Introduction

Smooth Shopping

Empowering Food Bank Clients with the Dignity of Choice

Smooth Shopping enables food banks to allow their clients to shop for goods online using an monthly credit system. In the backend, Smooth Shopping provides an inventory and order processing system.

Backend: Headless Drupal | Front end: a React app.

Developed in partnership with the House of Omeed during #HACKVAN2021.

Please contact one of the code maintainers to learn more about the project and how you can contribute.

Helpful Links:

App Screenshots

Image of Smooth Shopping's Login page Image of Smooth Shopping's Home page

Figure 1-2: The login (left) & home (right) pages on the frontend. See more frontend screenshots.


The Backend Products Page for Smooth Shopping

Figure 3: The product overview page on the backend. See more backend screenshots.

Usage Stories

Outlines the basic functionality of the app.

Family - Ordering Groceries

  1. (Family receives a shopping credit that is topped up each month)
  2. Family opens app on their computer or phone
  3. Family scrolls through catalog and selects what they would like to buy
  4. Family checks out & deducted from credit
  5. Family arrives at the House of Omeed food bank
  6. Family show staff an order number.
  7. Family receives groceries

Staff - Receive Grocery Order

  1. Staff receives a notification
  2. Staff open dashboard with recent orders
  3. Staff view and collect the requested groceries
  4. When family is given the groceries, staff sets the order as complete

Admin - Creating Account for Family

  1. Admin registers a new family on their desktop
  2. Admin helps family install the app on their phone
  3. Input user name and password to log in to family’s account

Staff - Creating or Updating Product

  1. Staff opens backend app on their phone
  2. Staff takes photos of product (replaces old photos if any)
  3. Staff updates any information
  4. Staff saves product

smooth-shopping's People

Contributors

alisonrwu avatar chrishappy avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

hack-van

smooth-shopping's Issues

Enforce Product Quantity Limit

If there is only 1 of product X, only allow users to buy 1 of item X.

In case two people add an item to the cart, the first person to checkout out will receive the item.

Authenticate Users

Connect an access code to each user.

  • Allow clients to log in using their access code
  • Allow clients to submit orders using their access code
  • [Later] Import client information into app (how much credit, etc.)

Re-implement Add & Remove from Cart

  • Create local Apollo variable to store cart items (product_id and quantity)
  • Create Query to find products using product_id
  • Update cart page with above Query

typo in footer.js - class should be className

Hi @chrishappy and team, just ran the project in my VS code and browser and noticed that there's a "Warning: Invalid DOM property class. Did you mean className" in the footer.

I think the issue is in line 30 of footer.js.

class="footer-wrap"
should be
className="footer-wrap"

Tried the change on my local copy and it got rid of the warning.

Backend: Logic for Creating User Accounts

  • Set Current Price to Monthly Credit field on the first of every month
  • Disable Current Price
  • Set Monthly Credit field to the number of family members * some number
  • Generate passwords easily

Frontend: Tweaks

  • Show product descriptions when clicking on a product
  • Show a message bar if added too many of a product
  • Show snackbar if usernams/password is incorrect

Frontend: Validate the product quantities when creating an order

Since product quantities are not updated in real-time, it's possible that the quantities are invalid (e.g. a different client checked out some of the same items recently).

Thus, before we submit an order, we should check that the quantities are still valid.

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.