Kyle and Alex's Personal Recipes. Hosted at https://recipes.kyleking.me
- Search: Full-text search across all recipes
- Related Recipes: Semantic ingredient matching using spaCy NLP for multi-word phrase extraction
- TRMNL E-ink Display: JSON recipe format for TRMNL e-ink devices (800x480 landscape)
- Change
.htmlto.jsonin any recipe URL for JSON version - See TRMNL Setup Guide for detailed instructions
- Change
Required tools:
- mise - Development environment manager
- uv - Python package manager
- System dependencies:
- macOS: Python development headers (via Xcode Command Line Tools)
- Linux:
python3-dev pkg-config build-essential
-
Clone the repository:
git clone https://github.com/KyleKing/recipes.git cd recipes -
Install mise:
# macOS brew install mise # Or follow https://mise.jdx.dev/getting-started.html
-
Install uv:
# macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh
-
Install system dependencies (macOS):
# Xcode Command Line Tools (provides Python headers) xcode-select --install -
Install project dependencies:
# Install tools via mise (Go, Python, Node packages) mise install # Install Python dependencies and spaCy model uv sync uv run python -m spacy download en_core_web_sm
-
Build the C++ wrapper for go-spacy:
# This creates lib/libspacy_wrapper.dylib (macOS) or lib/libspacy_wrapper.so (Linux) ./setup-spacy.sh # Source the generated .env file to set environment variables for local development source .env
-
Run tests to verify setup:
mise run test -
Build the site:
mise run build
-
Serve locally:
mise run serve # Visit http://localhost:8000
mise run build # Build website (format → go run . → minify → pagefind index)
mise run format # Format code (templ generate → templ fmt → go fmt)
mise run test # Run tests with coverage
mise run serve # Serve built site on port 8000
mise run compress <path> # Compress images
./check_links.py # Check/fix recipe links, add Wayback archive linksC++ compilation errors:
- Ensure Python development headers are installed (
python3-config --includesshould work) - Run
./setup-spacy.shto rebuild the C++ wrapper - Check that
lib/libspacy_wrapper.dylib(macOS) orlib/libspacy_wrapper.so(Linux) exists
Missing Python dependencies:
- Run
uv syncto install Python packages - Run
uv run python -m spacy download en_core_web_smto install spaCy model
mise tool installation issues:
- Run
mise doctorto diagnose issues - Run
mise installto reinstall tools
To display a recipe on your TRMNL e-ink device:
- Change
.htmlto.jsonin any recipe URL (e.g.,https://recipes.kyleking.me/seafood/shrimp_scampi.json) - Create a TRMNL Private Plugin with the Polling strategy
- Use the JSON URL as the polling URL and format it with Liquid templates