- Recipe Management - Create, edit, delete recipes; Markdown descriptions & steps; multi-image upload
- Ingredients & Tags - Unified ingredient library and tag system with search and filtering
- Combos - Combine multiple dishes into a single meal, auto-calculate total cooking time
- Shopping List - Auto-generated from recipes or combos, smart ingredient merging, grouped/merged views, one-click copy as plain text
- Cooking Slideshow - Fullscreen step-by-step view with images, cook as you watch
- Review System - Family members can rate and comment on recipes (toggleable via environment variable)
- Import & Export - Export recipes as Markdown files or import recipes from Markdown files
- i18n - Full i18n support, auto-detects browser language
- Dark / Light Theme - Follows system preference or manual toggle
- MCP Server - Built-in Model Context Protocol server, AI assistants can manage recipes directly
- Export as Plain Text - Shopping lists exportable as text for easy sharing
- SQLite Database - Zero-config, single-file persistence, perfect for home use
- Docker Deployment - Up and running with a single command
docker run -d \
--name speciality \
-p 3000:3000 \
-v speciality-data:/app/data \
ghcr.io/ykdz/specialityVisit http://localhost:3000 to get started.
Data (SQLite database + uploaded images) is persisted in the /app/data directory.
Create a compose.yml:
services:
speciality:
image: ghcr.io/ykdz/speciality
container_name: speciality
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- speciality-data:/app/data
environment:
- TITLE=Speciality
- FALLBACK_LOCALE=zh-CN
- REVIEWS_ENABLED=true
- HIDE_LANGUAGE_SWITCHER=false
- FORCE_FALLBACK_LOCALE=false
- MAX_FILE_SIZE=52428800
volumes:
speciality-data:docker compose up -d| Variable | Default | Description |
|---|---|---|
PORT |
3000 |
Server listening port |
DATABASE_URL |
/app/data/recipes.db |
SQLite database file path |
UPLOAD_DIR |
./data/uploads |
Upload image storage directory |
MAX_FILE_SIZE |
52428800 (50 MB) |
Maximum upload file size in bytes |
TITLE |
Speciality |
Page title |
REVIEWS_ENABLED |
true |
Enable review system (true / false) |
FALLBACK_LOCALE |
zh-CN |
Fallback language when browser language cannot be detected |
HIDE_LANGUAGE_SWITCHER |
false |
Hide the language switcher (true to hide) |
FORCE_FALLBACK_LOCALE |
false |
Force fallback language, ignoring browser and cookie settings |
Tip: For a Chinese-only interface, set
FORCE_FALLBACK_LOCALE=trueandHIDE_LANGUAGE_SWITCHER=true.
Speciality includes a built-in Model Context Protocol server at /mcp.
AI assistants (such as Claude, GitHub Copilot, etc.) can manage your recipe data directly via the MCP protocol, including:
- Query / create / edit / delete recipes, ingredients, tags, combos, and reviews
- Search recipes (by name, description, or tags)
- Generate shopping lists (with merging & plain text output)
MCP configuration example:
{
"servers": {
"speciality": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}Made by YKDZ with ❤️ and GitHub Copilot.





