// the find
TomBursch/kitchenowl
KitchenOwl is a self-hosted grocery list and recipe manager. The backend is made with Flask and the frontend with Flutter. Easily add items to your shopping list before you go shopping. You can also create recipes and add items based on what you want to cook.
KitchenOwl is a self-hosted household management app covering grocery lists, recipes, meal planning, and expense tracking. The stack is Flask backend with Socket.IO for real-time list sync, Flutter frontend targeting iOS, Android, web, and desktop from one codebase. It's aimed at households that want full data ownership and a polished native feel rather than a web-only Nextcloud plugin.
The real-time shopping list sync via WebSockets is done properly — not REST polling — which matters when two people are simultaneously checking items off at the store. The backend has a dedicated ML jobs layer (cluster_shoppings.py, item_ordering.py, item_suggestions.py) that runs inference locally without phoning home to any cloud service, which is rare for this category. Flutter genuinely delivers here: one codebase, four platforms, and the screenshots show it actually looks good rather than the usual Flutter gray-box aesthetic. The Home Assistant integration via HACS and a recently added MCP controller endpoint mean it slots into existing home automation and AI assistant workflows without custom wiring.
The project self-labels as 'Public Alpha' and means it — the migration history has 40+ Alembic files with generic names like `0b10d67750be_.py`, which makes schema archaeology painful if something goes wrong during an upgrade. Flask with gunicorn in the default wsgi.ini config is tricky with Socket.IO: you need gunicorn with eventlet or gevent workers or WebSocket connections will misbehave under any real concurrency, and nothing in the README calls this out. The backend lives in a separate git submodule (kitchenowl-backend), so the main repo checkout gives you the Flutter code but not the Python source without an extra step — a friction point that trips up first-time contributors. The expense tracking feature is thin enough that it will disappoint anyone coming from Splitwise; it's clearly an afterthought stapled onto the grocery core.