A realtime, browser-based menu picker for shared ordering. The UI is a single index.html file served by a lightweight aiohttp websocket server.
- Realtime shared session state with per-room people and carts
- Local allergen filters (per browser) with persistent selection
- Vegan-only and gluten-free-only filters stored in
localStorage - Multi-term search with AND/OR matching that expands matching sections
- Menu “Expand all” / “Close all” controls
- “Show ALL selected food.” modal with per-person collapse/expand controls
index.html— UI, styling, and client-side logicmenu.json— menu data and title used by the UIserver.py— aiohttp server and websocket room/state handling
- Python 3.9+ recommended
aiohttp
sudo apt install python3.12-venv
python3 -m venv myenv
source myenv/bin/activate
python3 -m pip install aiohttppython3 server.pyThen open:
http://localhost:8080in a browser
- Rooms are in-memory only; restarting the server clears all rooms.
- The UI connects to the default room; room handling is still supported server-side.
- Allergen and diet filters are per-browser and stored in
localStorage. - Duplicate person names are blocked per room.
- The server logs key user actions with timestamps in the console.
- Menu data is loaded from
menu.json, so serve the UI over HTTP.
- Open “Allergen key” and toggle allergens to exclude matching items.
- Use “Vegan only” or “Gluten-free only” to keep just those items.
- “Clear filters” resets both allergen and diet filters.
- Use search terms separated by spaces, then toggle AND/OR to control matching.
- Add a person: click “+ Add person”
- Filter menu: open “Allergen key” and toggle allergens, Vegan only, or Gluten-free only
MIT — see LICENSE.