Your Recipe Companion
Self-hosted recipe manager for home cooks
Cloud Version • Self-Host • Features • Home Assistant • Configuration
Laro is a self-hosted recipe manager for home cooks. Import recipes from any website with AI, track your pantry, plan weekly meals, generate shopping lists, and cook with step-by-step guidance.
Your data stays on your server. No cloud required.
This public repo is a sanitized self-host artefact generated from the production codebase. Production
laro.foodis not deployed from this tree.
Use our cloud version at laro.food - no setup required! Download the Android app from the Play Store and start cooking.
Self-hosted users can also use our official Android app - just point it to your server in the settings.
# Clone the repo
git clone https://github.com/Domocn/Laro.git
cd Laro
# Copy and configure environment
cp backend/.env.example backend/.env
# Edit backend/.env with your settings (JWT_SECRET, DATABASE_URL, …)
# Start services
docker compose up -d
# Open http://localhost:3000 (API on :8001 via compose)
# First user becomes admin!Backend (Python 3.11+):
cd backend
python -m venv venv
source venv/bin/activate # or venv\Scripts\activate on Windows
pip install -r requirements.txt
# Configure
cp .env.example .env
# Edit .env — then export it (config.py does not auto-load .env)
set -a && source .env && set +a
# Run (module is server:app on port 8001)
./venv/bin/uvicorn server:app --host 0.0.0.0 --port 8001Frontend (Node 18+, CRA/craco):
npm install
# Prefer mixed hostnames so the SPA does not collapse API port to same-origin:
PORT=3000 BROWSER=none HOST=0.0.0.0 REACT_APP_BACKEND_URL=http://localhost:8001 npm start
# Open http://127.0.0.1:3000Database (PostgreSQL 15+):
# Create database
createdb laro
# Or with Docker
docker run -d --name laro-db \
-e POSTGRES_USER=laro \
-e POSTGRES_PASSWORD=your-password \
-e POSTGRES_DB=laro \
-p 5432:5432 \
postgres:15- AI-powered import from any URL
- Quick paste - AI parses raw text
- Categories, tags, and favorites
- Scale servings up/down
- Version history
- Track ingredients with expiry dates
- Swipe to mark used or delete
- Find recipes matching your ingredients
- AI recipe suggestions
- Weekly calendar view
- Drag-and-drop planning
- Auto-generate meal plans with AI
- Auto-generate from meal plans
- Check off as you shop
- Smart ingredient grouping + taught grocery aisles
- Offline queue (check / add / remove / aisle / create / delete list)
- UK-first barcode lookup (camera on web when supported)
- Live presence when others view the same list
- Full-screen step-by-step
- AI cooking assistant
- Timer integration
- Ingredient aliases / merge duplicates
- Store aisle overrides
- UK Open Prices + % Reference Intake nutrition
Laro has two separate Home Assistant packages:
Repo: Domocn/laro-ha-intergration
For laro.food or any existing Laro server (sensors, meal calendar, services).
- HACS → Integrations → ⋮ → Custom repositories
https://github.com/Domocn/laro-ha-intergration- Category: Integration
- Download Laro → restart Home Assistant
- Laro Settings → API Tokens → create a token
- Settings → Devices & Services → Add Integration → Laro
- URL
https://laro.food+ paste the token
Repo: Domocn/Laro-home-assistant-addon
Runs a full Laro stack inside Home Assistant OS.
Using laro.food? Skip the add-on — use the HACS integration above.
Download our official Android app and connect it to your self-hosted server:
- Install the Laro app from the Play Store or laro.food
- Go to Settings > Server Configuration
- Enter your server URL (e.g.,
https://laro.yourdomain.com)
DATABASE_URL=postgresql://laro:password@localhost:5432/laro# Generate a secure random string (min 32 characters)
JWT_SECRET=your-very-long-secure-random-string-hereOllama (Free, Self-Hosted):
LLM_PROVIDER=ollama
OLLAMA_URL=http://localhost:11434
OLLAMA_MODEL=llama3OpenAI:
LLM_PROVIDER=openai
OPENAI_API_KEY=sk-your-keyAnthropic Claude:
LLM_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-your-keyEMAIL_ENABLED=true
RESEND_API_KEY=re_your-key
SMTP_FROM_EMAIL=noreply@yourdomain.comGOOGLE_CLIENT_ID=your-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=your-secret
GITHUB_CLIENT_ID=your-id
GITHUB_CLIENT_SECRET=your-secret
OAUTH_REDIRECT_BASE_URL=https://yourdomain.com| Component | Technology |
|---|---|
| Web | React, Tailwind CSS, CRA/craco |
| Backend | FastAPI (Python), PostgreSQL |
| AI | Ollama, OpenAI, Claude, Gemini |
- Fork the repo
- Create feature branch (
git checkout -b feature/amazing) - Commit changes (
git commit -m 'Add feature') - Push (
git push origin feature/amazing) - Open a Pull Request
MIT License - use it, modify it, share it!
Made with love for home cooks
