{"id":31782487,"url":"https://github.com/andrewohnsland/cocktailberry","last_synced_at":"2026-05-05T09:02:26.410Z","repository":{"id":36995865,"uuid":"185077056","full_name":"AndreWohnsland/CocktailBerry","owner":"AndreWohnsland","description":"Easily serve Cocktails with Raspberry Pi and Python on any cocktail machine 🐍 + 🍸 = 🥳","archived":false,"fork":false,"pushed_at":"2025-10-03T07:21:06.000Z","size":39819,"stargazers_count":69,"open_issues_count":5,"forks_count":10,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-03T09:21:44.730Z","etag":null,"topics":["cocktail","cocktail-berry","cocktail-machine","cocktail-maker","cocktailberry","cocktails","pi-hardware","pyqt5","python","raspberry","raspberry-pi"],"latest_commit_sha":null,"homepage":"https://cocktailberry.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndreWohnsland.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/support.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2019-05-05T20:06:50.000Z","updated_at":"2025-09-09T16:11:28.000Z","dependencies_parsed_at":"2023-09-22T00:27:57.209Z","dependency_job_id":"4ac2124b-f49a-4429-866d-69d8dabbb42b","html_url":"https://github.com/AndreWohnsland/CocktailBerry","commit_stats":null,"previous_names":[],"tags_count":98,"template":false,"template_full_name":null,"purl":"pkg:github/AndreWohnsland/CocktailBerry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreWohnsland%2FCocktailBerry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreWohnsland%2FCocktailBerry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreWohnsland%2FCocktailBerry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreWohnsland%2FCocktailBerry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndreWohnsland","download_url":"https://codeload.github.com/AndreWohnsland/CocktailBerry/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndreWohnsland%2FCocktailBerry/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279003411,"owners_count":26083581,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cocktail","cocktail-berry","cocktail-machine","cocktail-maker","cocktailberry","cocktails","pi-hardware","pyqt5","python","raspberry","raspberry-pi"],"created_at":"2025-10-10T09:22:18.244Z","updated_at":"2026-05-05T09:02:26.319Z","avatar_url":"https://github.com/AndreWohnsland.png","language":"Python","funding_links":["https://www.buymeacoffee.com/AndreWohnsland"],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"docs/pictures/CocktailBerry.svg\" alt=\"CocktailBerry\"/\u003e\n\n\u003cbr/\u003e\n\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/AndreWohnsland/CocktailBerry)\n![GitHub Release Date](https://img.shields.io/github/release-date/AndreWohnsland/CocktailBerry)\n![Python Version](https://img.shields.io/badge/python-%3E%3D%203.13-blue)\n![GitHub](https://img.shields.io/github/license/AndreWohnsland/CocktailBerry)\n![GitHub issues](https://img.shields.io/github/issues-raw/AndreWohnsland/CocktailBerry)\n[![Documentation Status](https://readthedocs.org/projects/cocktailberry/badge/?version=latest)](https://cocktailberry.readthedocs.io)\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=AndreWohnsland_CocktailBerry\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=AndreWohnsland_CocktailBerry)\n![GitHub Repo stars](https://img.shields.io/github/stars/AndreWohnsland/CocktailBerry?style=social)\n\n[![Support CocktailBerry](https://img.shields.io/badge/Support%20CocktailBerry-donate-yellow)](https://www.buymeacoffee.com/AndreWohnsland)\n\nCocktailBerry is a Python and Qt (or React for v2) based app for a cocktail machine on the Raspberry Pi.\nIt enables you to build your own, fully customized machine, while still being able to use the identical software on each machine.\nDetailed information, installation steps and SetUp can be found at the [Official Documentation](https://docs.cocktailberry.org).\n\n\u003ca href=\"https://demo.cocktailberry.org/\"\u003e\u003cimg src=\"docs/pictures/demobutton.png\" alt=\"v2-demo\" height=\"70\"/\u003e\u003c/a\u003e\n\nSupercharge your next party to a whole new level! 🐍 + 🍸 = 🥳\n\n\u003ca href=\"https://cocktailberry.org/\"\u003e\u003cimg src=\"docs/pictures/websitebutton.png\" alt=\"website\" height=\"70\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://docs.cocktailberry.org/\"\u003e\u003cimg src=\"docs/pictures/docbutton.png\" alt=\"documentation\" height=\"70\"/\u003e\u003c/a\u003e\n\u003ca href=\"https://stats-cocktailberry.streamlit.app/\"\u003e\u003cimg src=\"docs/pictures/dashboardbutton.png\" alt=\"dashboard\" height=\"70\"/\u003e\u003c/a\u003e\n\nThis app is used to control a cocktail machine and easily prepare cocktails via a nice-looking user interface.\nIt also offers the option to create and manage your recipes and ingredients via the interface and calculates the possible cocktails to prepare from given ingredients.\nTrack and display cocktail data for different teams to even further increase the fun.\nLet's get started!\n\nLike this project? Give it a star on GitHub! ⭐\n\n# TL;DR\n\n\u003cimg src=\"docs/pictures/Cocktailmaker_action.gif\" alt=\"Cocktail in the making\" width=\"400\"/\u003e\n\n# Features\n\nCocktailBerry currently comes in two versions, v1 and v2.\nThe v1 is the stable version which ships the QT app as a single application.\n[v2](https://docs.cocktailberry.org/web/) is the new version with a separate API and UI, which offers more flexibility, but might have some issues on built-in touchscreens.\nBoth versions have the full feature set listed below.\n\nCocktailBerry can do:\n\n- Prepare cocktails of a given volume and adjusted concentration of alcoholic ingredients\n- Let customers pay via NFC chips/cards\n- Add new ingredients and recipes with needed information via the UI\n- Specify additional ingredients for later hand add within a recipe (like sticky syrup)\n- Define connected ingredients to the machine and existing additional ingredients via the UI\n- Auto calculate and display possible recipes dependent on given information\n- Option to serve cocktails without alcohol\n- Execute a cleaning program to get rid of remaining fluids\n- Visualize the cocktail data and get insights\n- Run headless, so you can access it from another device\n- Send cocktail production data to a given endpoint, for example a webhook\n- Keep track of cocktail count and volume from different teams for some fun competition\n- Select different themes to fit your liking\n- Switch between user interface languages\n- Support WS281x LEDs on your machine\n- Support for RFID/NFC reader\n- Support for Service Personnel\n- Implement your own [addon](https://github.com/AndreWohnsland/CocktailBerry-Addons) to extend the base functionality\n\nIn addition, there is the possibility to use and set up a second device as a dashboard:\n\n- Provide the teams API to post and get cocktail data\n- Display different modes of data for a team-by-team comparison\n- _Optional_: Use the dashboard as WiFi hot-spot\n\n# Quickstart\n\nHere are some simple steps to get CocktailBerry running. You need to have **Python 3.13** or newer and **git** installed.\nIf you are using a Raspberry Pi and a current OS, you should be good to go.\n\nOn the RPi, you can try the new [all-in-one installer script](https://github.com/AndreWohnsland/CocktailBerry/blob/master/scripts/all_in_one.sh).\nOne command should install everything:\n\n```bash\nwget -O - https://raw.githubusercontent.com/AndreWohnsland/CocktailBerry/master/scripts/all_in_one.sh | bash\n```\n\nOtherwise, you can manually install it using [uv](https://docs.astral.sh/uv/getting-started/installation/):\n\n```bash\ncd ~\ngit clone https://github.com/AndreWohnsland/CocktailBerry.git\ncd CocktailBerry\nuv sync --extra v1 --extra nfc # \u003c- use the nfc extra only if you want nfc support\nuv run runme.py\n```\n\nThis will start the CocktailBerry program. You may want to run the provided installer script for the RPi instead of pip.\nSee [Installation](https://cocktailberry.readthedocs.io/installation/) for more information.\n\n```bash\nsh scripts/setup.sh\n```\n\nNow you can [Set Up](https://cocktailberry.readthedocs.io/setup/#setting-up-the-machine-modifying-other-values) your CocktailBerry and tweak the settings to your liking.\n\n# Interface\n\nThe interface was programmed with PyQt6 (v1) for the users to easily interact with CocktailBerry and enter new ingredients/recipes.\nThere are different views for the tasks.\n\nThe Maker GUI:\n\n\u003cimg src=\"docs/pictures/Main_ui.png\" alt=\"Maker\" width=\"600\"/\u003e\n\n\u003cimg src=\"docs/pictures/Selection_ui.png\" alt=\"Maker\" width=\"600\"/\u003e\n\nThe Ingredient GUI:\n\n\u003cimg src=\"docs/pictures/Ingredients_ui.png\" alt=\"Ingredient\" width=\"600\"/\u003e\n\nThe Recipe GUI:\n\n\u003cimg src=\"docs/pictures/Recipes_ui.png\" alt=\"Recipe\" width=\"600\"/\u003e\n\nThe Bottle GUI:\n\n\u003cimg src=\"docs/pictures/Bottles_ui.png\" alt=\"Bottle\" width=\"600\"/\u003e\n\n\u003cbr/\u003e\n\n# Pull Requests and Issues\n\nIf you want to support this project, feel free to fork it and create your own pull request.\nTo get started, have a quick look into the [Guidelines for contributing](./CONTRIBUTING.md).\nEncounter a problem? Open a ticket or issue to let us know.  \nHave an idea for an important feature? Submit a feature request—it may be implemented in the future.\n\n## Contributing Possibilities\n\nHere is a general list of features or refactoring things, I may do in the future.\nWith your help, these things come even faster!\nIf your idea is not on the list, feel free to open a feature request!\nGenerally, it is recommended to first open an issue or an discussion to talk about your idea before directly implementing it.\n\n- `easy`: Translate all dialogs / UI to your native language\n- `easy`: Submit a feature request or issue\n- `easy-hard`: Implement a cool [addon](https://github.com/AndreWohnsland/CocktailBerry-Addons) and make it verified\n\n# Development\n\nThis project uses [uv](https://docs.astral.sh/uv/), [node.js](https://nodejs.org/en) and [yarn](https://yarnpkg.com/getting-started/install) to manage all its Python dependencies.\nTo get started, you need to install the tools and then install the dependencies.\nSee also at the [dev notes](./docs/.devnotes.md) section for a complete run down as well as extra information.\n\n```bash\nuv sync --all-extras\n```\n\n## Just Commands\n\nThis project uses [just](https://just.systems/) as a command runner for common development tasks. To see all available commands, run:\n\n```bash\njust --list\n```\n\nWe also use pre-commits to check the code style and run some tests before every commit.\nYou can install them with:\n\n```bash\nuv run pre-commit install --install-hooks\n```\n\nThis will install all dependencies and you can start developing.\nThen just run:\n\n```bash\nuv run runme.py\n```\n\nIf you want to develop the api, you can also run it with\n\n```bash\nuv run fastapi dev ./src/api/api.py\n```\n\nand run the web UI via:\n\n```bash\ncd web_client/\nyarn install\nyarn dev\n```\n\n## Mocking RFID/NFC Reader and Services\n\nYou can set the `MOCK_RFID` and `MOCK_PAYMENT_SERVICE` environment variables to use the mock implementations of the RFID reader and payment service respectively.\nThis is useful if you want to develop these features without having the actual hardware or service available.\n\nThe mocked NFC reader will cycle through two predefined IDs every minute. It will return a read card ID every 5 seconds for testing purposes.\nIf you want to test specific behavior, it is recommended not to mock but use the real hardware.\n\nThe mocked payment service will simulate successful payments without actually connecting to any external service.\nIt will create non-existing IDs with a default balance of 20.\nThe adult flag will cycle between true and false for each new id.\n\n## Building Documentation\n\nYou can build the documentation locally using:\n\n```bash\nuv run mkdocs serve\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewohnsland%2Fcocktailberry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewohnsland%2Fcocktailberry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewohnsland%2Fcocktailberry/lists"}