scivarolo / barkeeper Goto Github PK
View Code? Open in Web Editor NEWTake the guesswork out of making cocktails at home
Home Page: https://barkeeper.sebastiancivarolo.com
Take the guesswork out of making cocktails at home
Home Page: https://barkeeper.sebastiancivarolo.com
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.
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.
As a user, I can remove items from my shopping list, and update my inventory with purchased items.
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
Add an affordance for adding all missing ingredients in a cocktail to the shopping list.
create a class for converting volume units.
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.
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
As a user, I can add new items to my bar's inventory
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.
Ingredients database and a joiner table to link to users
As a user, I should be able to remove recipes from my list
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
Specify a size when adding a product to inventory, or specify size when creating a product.
Just need a way to allow different sized bottles to be added, and they would be grouped separately.
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
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
As a user, I can see what recipes I can make right now with my current inventory
Recipes are currently being output in order by id.
As a user, I can view the items I have added to my shopping list
Instead of showing all cocktails, the modal should only show cocktails the user can add to their list.
Recipe ingredients are not being displayed according to their sort order.
As a user, I should be able to create and add a new recipe to my list of recipes
Given a user wants to add a recipe to their list
Given a user did not find the recipe
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
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.
Quantity isn't being saved when a new product is added on the bar inventory view. Make sure it's included in the object.
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
As a user, I can view my entire inventory in one place
Given a user has items in their inventory
When the user views their inventory
Then the inventory is displayed on one page
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.
Active link on navbar needs to be differentiated so the user knows where they are.
As a user, I should be able to add to a shopping list of items I need to purchase
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.
Non-liquid ingredients. how to handle?
If a user adds a cocktail to their tab that isn't already in their favorites, it will get added, so that the number of times it has been made can be tallied.
Navbar of some sort that allows easy access to the following areas of the app:
View and browse all recipes available in the app, and allow a user to search and filter the results.
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.
As a user I can edit the quantity of an item in my inventory, and remove items no longer in my inventory
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
The discover cocktails section probably needs it's own route. So that it can be targeted when needed.
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.
TBD
A user can view recipes they have saved to their list.
As a user I should be able to click on a recipe and view it on it's on view.
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.
As a user, I should be able to log out of the app with a logout link in the navbar.
When a user logs out of the app
Then SessionStorage and LocalStorage credentials are cleared, and the user is returned to the login page.
As a user, I can browse my recipes by filtering them with different criteria to narrow down my 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
As a user, I want to see a snapshot/dashboard as my point of entry when I login to the app.
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.
From NewProduct component, if the ingredient doesn't exist, a user should be able to create it at the same time. Right now, a user can only select an existing ingredient.
As a user I should be able to search an extensive collection of recipes and add them to my collection.
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
Need to be able to prevent duplicate entries of ingredients in the database, and notify user when they are trying to create an ingredient that already exists
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.
When creating a cocktail recipe, a user should be able to remove an extra ingredient input.
Let users include a description/story about a recipe they are adding.
As a user I should be able to create a group of recipes because I want to be super organized
A user can perform the following actions:
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))
Show all products for each ingredient in groups on the inventory page
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.