Recipe corpus (#108): - Add _MAIN_INGREDIENT_SIGNALS to tag_inferrer.py (Chicken/Beef/Pork/Fish/Pasta/ Vegetables/Eggs/Legumes/Grains/Cheese) — infers main:* tags from ingredient names - Update browser_domains.py main_ingredient categories to use main:* tag queries instead of raw food terms; recipe_browser_fts now has full 3.19M row coverage (was ~1.2K before backfill) Bug fixes: - Fix community posts response shape (#96): add total/page/page_size fields - Fix export endpoint arg types (#92) - Fix household invite store leak (#93) - Fix receipts endpoint issues - Fix saved_recipes endpoint - Add session endpoint (app/api/endpoints/session.py) Shopping list: - Add migration 033_shopping_list.sql - Add shopping schemas (app/models/schemas/shopping.py) - Add ShoppingView.vue, ShoppingItemRow.vue, shopping.ts store Frontend: - InventoryList, RecipesView, RecipeDetailPanel polish - App.vue routing updates for shopping view Docs: - Add user-facing docs under docs/ (getting-started, user-guide, reference) - Add screenshots
69 lines
1.8 KiB
Markdown
69 lines
1.8 KiB
Markdown
# Installation
|
|
|
|
Kiwi runs as a Docker Compose stack: a FastAPI backend and a Vue 3 frontend served by nginx. No external services are required for the core feature set.
|
|
|
|
## Prerequisites
|
|
|
|
- Docker and Docker Compose
|
|
- 500 MB disk for images + space for your pantry database
|
|
|
|
## Quick setup
|
|
|
|
```bash
|
|
git clone https://git.opensourcesolarpunk.com/Circuit-Forge/kiwi
|
|
cd kiwi
|
|
cp .env.example .env
|
|
./manage.sh build
|
|
./manage.sh start
|
|
```
|
|
|
|
The web UI opens at `http://localhost:8511`. The FastAPI backend is at `http://localhost:8512`.
|
|
|
|
## manage.sh commands
|
|
|
|
| Command | Description |
|
|
|---------|-------------|
|
|
| `./manage.sh start` | Start all services |
|
|
| `./manage.sh stop` | Stop all services |
|
|
| `./manage.sh restart` | Restart all services |
|
|
| `./manage.sh status` | Show running containers |
|
|
| `./manage.sh logs` | Tail logs (all services) |
|
|
| `./manage.sh build` | Rebuild images |
|
|
| `./manage.sh open` | Open browser to the web UI |
|
|
|
|
## Environment variables
|
|
|
|
Copy `.env.example` to `.env` and configure:
|
|
|
|
```bash
|
|
# Required — generate a random secret
|
|
SECRET_KEY=your-random-secret-here
|
|
|
|
# Optional — LLM backend for AI features (receipt OCR, recipe suggestions)
|
|
# See LLM Setup guide for details
|
|
LLM_BACKEND=ollama # ollama | openai-compatible | vllm
|
|
LLM_BASE_URL=http://localhost:11434
|
|
LLM_MODEL=llama3.1
|
|
```
|
|
|
|
## Data location
|
|
|
|
By default, Kiwi stores its SQLite database in `./data/kiwi.db` inside the repo directory. The `data/` folder is bind-mounted into the container so your pantry survives image rebuilds.
|
|
|
|
## Updating
|
|
|
|
```bash
|
|
git pull
|
|
./manage.sh build
|
|
./manage.sh restart
|
|
```
|
|
|
|
Database migrations run automatically on startup.
|
|
|
|
## Uninstalling
|
|
|
|
```bash
|
|
./manage.sh stop
|
|
docker compose down -v # removes containers and volumes
|
|
rm -rf data/ # removes local database
|
|
```
|