Skip to content

wmwilcox/mix-mind

 
 

Repository files navigation

Mix-Mind

Dynamic menu generator and order manager for your home bar.

Features

There exist some features

Data Model

A relational database is used to manage Users to support the login system. A logged in user can place orders without entering their email every time. Other users may be assigned as bartenders or owners and can manage those settings when logged in.

Ingredients come from a spreadsheet, but are loaded into a bar's database on the site.

Recipes are stored as a json file, with a base file providing a common set of recipes, and each bar being able to add custom recipes.

Entities

Entity model

  • User
    • User is uniquely identified by email
    • Some basic stats are kept on each user
    • The user model has the required bookkeeping for authentication
    • User may supply a nickname
    • If user supplies they Venmo ID, confirmations sent to customers when they are a bartender will include a link to their venmo profile, for tips
  • Role
    • Customer - all users are customers
    • Bartender - this user has been assigned as bartender at at least one bar
    • Owner - this user has at least one bar
    • Admin - admin user may modify any user, assign bars to users, modify the main recipe library, modify any bar
  • Bar
    • A bar represents a collection of ingredients
    • May have up to one bartender on duty (this will be the email address orders are sent to)
    • Has one owner
    • Has a number of configuration values for how to display recipes and set optional prices
  • Order
    • An order is placed at a bar, by a user, served by a bartender once confirmed
  • Ingredient
    • An ingredient is defined with a Type and Bottle, where Type is something like "dry gin" or "bourbon whiskey", and Bottle is the specific brand and bottling, "Bombay Sapphire" or "Old Grand-Dad Bonded"
    • An ingredient may only belong to one bar

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.

Prerequisites

A virtualenv is recommended for setting up this project.

Installing

pip install -r requirements.txt

Configuration

Configuration for the flask app is contained in a config.py and instance/config.py. See the flask config docs

This repo includes an example instance/config_example.py, to be used for all the secret configuration.

For email notifications with the user system and order notifications, an email account with api access will be required. This is easy to do with gmail, and the base configuration assumes as much.

Deployment

The original version of this site is running on PythonAnywhere, which is the author's recommended deployment solution.

Built With

Contributing

Please feel free to check out the open issues and submit a PR!

Versioning

This project uses Semantic Versioning for versioning. For the versions available, see the tags on this repository.

Authors

  • Tim Schumacher - Core Author - twschum

See also the list of contributors who participated in this project.

License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

About

Dynamic menu generator and order manager for home bars

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 64.9%
  • HTML 22.2%
  • JavaScript 10.5%
  • CSS 2.3%
  • Shell 0.1%