Code Monkey home page Code Monkey logo

barkeeper's People

Contributors

scivarolo avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

barkeeper's Issues

Make Cocktails

Story

As a user, I want to tell the app when I've made a cocktail, so that the ingredients used will be
automatically deducted from my inventory.

Acceptance Criteria

When a user wants to make a cocktail, they can add it to their tab and queue up multiple cocktails they are about to make.
Then the app can update the user's inventory once the tab is completed.

When a user "makes" a cocktail
Then the app uses the ingredients list to deduct the amounts used from the user's inventory.

Remove from Shopping List

Story

As a user, I can remove items from my shopping list, and update my inventory with purchased items.

Acceptance Criteria

  • Given a user no longer wants an item in the shopping list
    Then the user can delete the item from the shopping list

  • Given a user has acquired an item in the shopping list
    Then the user can add the item to their inventory
    Then the item is removed from the shopping list

Reorder ingredients

When creating or editing a recipe, it would be nice to be able to re-order ingredients without having to just re-enter them in the correct order.

Use sortOrder? and swap the sortOrders of ingredients when you click an up or down arrow.

Drag and drop would be even cooler.

Editing Recipes

Story

  • As a user, I should be able to edit recipes I have created

Acceptance Criteria

  • Given a user wants to edit a recipe they created
    Then a user can click edit
    And the user is presented with a form to edit the recipe.

  • Given a recipe has been edited
    When the user hits submit
    Then the entry in the database is patched with the modified information

Adding to Inventory

Story

As a user, I can add new items to my bar's inventory

Acceptance Criteria

Given a user wants to add an item to their inventory
When the user presses the add item button
Then the user can search existing products in the database
And add the existing product to their inventory

Given the item is not already in the database
Then the user can create a new item
And the user is presented with a form to do so.

Form fields

  • Name
  • Ingredient Type (whiskey, vodka, gin, liqueur, bitters, fruit, herb, etc)
  • Total Volume
  • Available Volume w/ units

Ingredients database and a joiner table to link to users

Remove Recipes from Recipe List

Story

As a user, I should be able to remove recipes from my list

Acceptance Criteria

Given a user wants to remove a recipe from their list
When a user clicks an affordance to delete a recipe
Then the relation between the user and the recipe is removed from the database
And the recipe remains in the database for other users to access

Search Autosuggest

Story

As a user, I expect to start seeing results as soon as I start typing in a search box because I'm too lazy to type whole words

Acceptance Criteria

  • When a user is searching for a recipe (from the local database)
    Then the search input should start suggesting results while the user is typing

  • When a user is adding to their inventory
    Then the input should list any matching existing products as the user is typing to prevent duplicate products in the main database

  • When a user is searching to add to their shopping list
    Then the input should list any matching existing products as the user is typing

Recipes that can be made from current inventory

Story

As a user, I can see what recipes I can make right now with my current inventory

Acceptance Criteria

  • Given a user wants to make a cocktail
    And the user has saved recipes
    And the user has items in their inventory
    Then the app can display which cocktails can be made

View Shopping List

Story

As a user, I can view the items I have added to my shopping list

Acceptance Criteria

  • Given a user is viewing the shopping list
    Then the items in the user's shopping list are displayed.

Adding New Recipes

Story

As a user, I should be able to create and add a new recipe to my list of recipes

Acceptance Criteria

Given a user wants to add a recipe to their list

  • Then a user can see a list of recipes they don't have
  • And save a recipe to their list

Given a user did not find the recipe

  • Then the user can create a new recipe
  • User can fill out a form to create the recipe
  • Form data is saved to the database and linked to the user

Form Fields

  • Recipe Name
  • Ingredients, multiple rows/inputs added dynamically?
  • Mixing type (for filtering) [shaken, stirred, blended, on the rocks, etc]
  • Mixing Instructions
  • Source (optional)
  • Notes? (optional)

Additional Data When Saving to Database

  • User (who created it)
  • Creation Date
  • Edited, or Original Recipe Id (stretch)

Delete recipes from database

Given a user wants to delete a recipe from the database
Then the app checks if any other users have this recipe saved
Then the recipe is deleted only if no other users have that recipe saved
And an alert is displayed if the recipe cannot be deleted

AlertContainer location

See if it makes sense to mount AlertContainer in Barkeeper and pass down the method as needed to the different views instead of recreating it in every view.

Remember User Login

  • Users can click "remember me" and app will use LocalStorage instead of SessionStorage

User Authentication

Story

As a user, I should be able to register a new account with a display name, username/email, and password, and be able to login to the application once I have an existing account

Acceptance Criteria

  • Landing Page
  • Users can register a new account.
  • Users can login to an existing account
  • Users can click "remember me" and app will use LocalStorage instead of SessionStorage #26
  • Form validation
  • Logout link in NavBar when logged in. #21

Viewing Inventory

Story

As a user, I can view my entire inventory in one place

Acceptance Criteria

Given a user has items in their inventory
When the user views their inventory
Then the inventory is displayed on one page

Alert system with Bootstrap toasts

The new Bootstrap toasts look much nicer than the current alerts, maybe I can come up with my own alert system instead of using react-bs-notifier which uses bootstrap alerts.

NavBar active link

Active link on navbar needs to be differentiated so the user knows where they are.

Add to Shopping List

Story

As a user, I should be able to add to a shopping list of items I need to purchase

Acceptance Criteria

  • Given a user wants to add an ingredient to the shopping list
    When the user is a viewing a recipe that is missing ingredients
    Then the user can click an affordance to add the missing ingredient to the shopping list

  • Given a user is viewing their shopping list
    Then the user has the ability to add ingredients or products to it

  • When the user is has an ingredient/product in the shopping list
    Then the user can change the quantity.

First Steps

  • Add react-router-dom, reactstrap, bootstrap, and node-sass to project
  • Setup API module for base API calls to local database #24
  • Setup initial routes #2
  • Setup user authentication and login/registration views #1

App Navigation

Navbar of some sort that allows easy access to the following areas of the app:

  • User's recipes
  • User's bar inventory
  • User's wish list/shopping list

Combine multiples of item in inventory

Acceptance Criteria

  • When a user has more than 1 of a product (e.g. 3 limes, 2 bottles of Hendrick's Gin)
    Then only one entry should be displayed, showing the quantity.

Pagination

It would be nice if there was pagination for when the lists of cocktails get really long. Might not be feasible with json-server and the way cocktails and ingredients are fetched.

Editing/Deleting Inventory

Story

As a user I can edit the quantity of an item in my inventory, and remove items no longer in my inventory

Acceptance Criteria

  • Given a user wants to edit the quantity of an item in their inventory
    Then the user can click edit to do so

  • Given a user wants to delete an item
    Then the user can remove the item from their inventory

Discover route

The discover cocktails section probably needs it's own route. So that it can be targeted when needed.

User Profiles

Story

As a user, I want to see data about the cocktails I make most, and the ingredients/alcohols I use the most. I should also be able to update my name, password, etc.

Acceptance Criteria

TBD

Viewing Recipes

Story

A user can view recipes they have saved to their list.

Acceptance Criteria

  • A user's recipes are displayed to them once they are logged in

View Single Recipe

Story

As a user I should be able to click on a recipe and view it on it's on view.

Acceptance Criteria

Given a user has chosen a recipe
When the user clicks the recipe
Then the user is taken to a view with only that recipe

Could be 'page' of its own, or a modal, or some other way.

Logout User

Story

As a user, I should be able to log out of the app with a logout link in the navbar.

Acceptance Criteria

When a user logs out of the app
Then SessionStorage and LocalStorage credentials are cleared, and the user is returned to the login page.

Filtering recipes

Story

As a user, I can browse my recipes by filtering them with different criteria to narrow down my options

Acceptance Criteria

  • Given a user wants to narrow down recipes
    Then the user can click an affordance to show filtering options
    Then the user can select options and be shown filtered results

Filtering options

  • Liquor

  • Mixing type (shaken, stirred, on the rocks, blended, etc)

  • ...other things

  • Given a user wants to search their recipes
    Then the user is presented with a search box to narrow down results

Dashboard

Story

As a user, I want to see a snapshot/dashboard as my point of entry when I login to the app.

Acceptance Criteria

When a user logs in
Then the user is presented a welcome screen/dashboard that suggests a cocktail to make, and other relevant information/entry points to other areas of the app.

External API integration for Recipe Discovery

Story

As a user I should be able to search an extensive collection of recipes and add them to my collection.

Acceptance Criteria

Given a user wants to find recipes
Then a user should be able to perform a search that queries an external API
Then the user should be able to save a desired recipe to their list

  • Integrate an external API (maybe Edamam or Yummly)
  • Added recipes will either store a reference to the recipe that is fetched each time, or a copy of the recipe is stored in the local database and available for all users to find when searching locally. Depends on the request limits of the chosen API

Data Manager

HOC for data management with local API. Class with generic methods for POST, GET, PUT/PATCH, and DELETE from the local API that can be extended with specialized methods.

Acceptance Criteria

  • GET all data from any resources in the database
  • GET specific data from any resource in the database
  • POST new item to any resource in the database
  • PUT/PATCH an item in any resource in the database
  • DELETE an item in any resource in the database

Recipe Groups

Story

As a user I should be able to create a group of recipes because I want to be super organized

Acceptance Criteria

A user can perform the following actions:

  • Create a group and name it
  • Edit the group name
  • Delete the group
  • Add recipes to the group
  • Remove recipes from the group

Account for product quantity

A product can have quantity.
If quantity > 1, then amountAvailable refers to the "open" one.
The rest are assumed to be full.

For calculations, amountAvailable + (fullAmount * (quantity -1))

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.