Overview
Discover what makes Mealie powerful
Mealie is a fully self‑hosted recipe management system that exposes a **RESTful API** for programmatic access while delivering a reactive Vue‑based frontend. The application is designed to be lightweight yet feature rich, enabling developers to embed recipe data, meal plans, and shopping lists into larger home‑automation or kitchen‑display stacks. At its core, Mealie functions as a CRUD platform for recipe objects, with auxiliary modules for scheduling (meal planner), inventory (shopping list), and organization (cookbooks). The architecture emphasizes a clear separation between the **API layer** and the **UI layer**, allowing each to be scaled independently.
Backend
Database
Frontend
Containerization
Overview
Mealie is a fully self‑hosted recipe management system that exposes a RESTful API for programmatic access while delivering a reactive Vue‑based frontend. The application is designed to be lightweight yet feature rich, enabling developers to embed recipe data, meal plans, and shopping lists into larger home‑automation or kitchen‑display stacks. At its core, Mealie functions as a CRUD platform for recipe objects, with auxiliary modules for scheduling (meal planner), inventory (shopping list), and organization (cookbooks). The architecture emphasizes a clear separation between the API layer and the UI layer, allowing each to be scaled independently.
Architecture & Technical Stack
- Backend: Python 3.11 running on FastAPI – the async web framework that powers the REST endpoints, authentication (JWT/OAuth), and background tasks such as recipe scraping.
- Database: PostgreSQL (recommended) with optional SQLite for lightweight deployments. SQLAlchemy is used as the ORM, providing declarative models and migrations via Alembic.
- Frontend: Vue 3 with Composition API, leveraging Pinia for state management and Vite as the build tool. The UI communicates with the backend solely over HTTPS using JSON payloads.
- Containerization: Official Docker images are published to GitHub Container Registry and Docker Hub. A
docker-compose.ymltemplate is provided, encapsulating the API, a PostgreSQL service, and optional Redis for caching. - Background Workers: Celery (with Redis broker) handles long‑running tasks such as fetching recipe data from external URLs, converting units, and sending webhook notifications.
Core Capabilities & APIs
- Recipe Import Engine: Exposes an endpoint
/importthat accepts a URL; the backend scrapes metadata, images, and ingredient lists using a pluggable parser architecture (supports major recipe sites out of the box). - Meal Planner API: CRUD operations for weekly plans, including scheduling recipes to specific dates and times. Supports recurring patterns via cron‑style expressions.
- Shopping List Generation: Aggregates ingredients across planned meals, grouping them by supermarket sections. The API
/shopping-listreturns a JSON structure that can be rendered in custom UIs or exported to CSV. - Cookbook Management: Tag‑based grouping of recipes; the API allows nested cookbooks and hierarchical organization.
- Webhooks & Event Hooks: Developers can register endpoints to receive POST notifications on recipe creation, update, or deletion, enabling integration with external services (e.g., voice assistants, home‑automation hubs).
- Authentication & Authorization: Supports OAuth2 password flow and JWT tokens, with role‑based access controls (admin vs. user). The API is fully documented via OpenAPI/Swagger, auto‑generated from FastAPI.
Deployment & Infrastructure
- Self‑Hosting: The application can run on any machine that supports Docker, or directly via Python. Minimal external dependencies beyond PostgreSQL and Redis.
- Scalability: The stateless API can be horizontally scaled behind a reverse proxy (NGINX, Traefik). Celery workers can be added in parallel to handle increased import or webhook load.
- High Availability: PostgreSQL replication and Redis Sentinel can be configured for fault tolerance. Docker Swarm or Kubernetes manifests are available in the repo for orchestrated deployments.
- Resource Footprint: A single container instance typically consumes <200 MiB RAM and <1 CPU core, making it suitable for Raspberry Pi or NAS environments.
Integration & Extensibility
- Plugin System: Mealie ships with a lightweight plugin API that allows developers to hook into the import pipeline, add custom UI components, or extend data models without modifying core code.
- Custom Parsers: Implement a new parser by subclassing the base
RecipeParserinterface; register it in the configuration to support niche recipe sites or local YAML files. - External API Consumption: The public REST endpoints can be consumed by mobile apps, smart displays, or voice assistants. The OpenAPI spec facilitates automatic client generation in languages like TypeScript, Go, or Java.
- Webhooks: Register any URL to receive real‑time events; useful for syncing with grocery delivery services or calendar apps.
Developer Experience
- Documentation: The official docs (https://docs.mealie.io) cover architecture, API usage, deployment guides, and plugin development. The OpenAPI spec is live at
/docswhen the server runs. - Community & Support: Active Discord channel, issue tracker, and contributor guide. The project follows semantic versioning and publishes nightly builds for early adopters.
- Configuration: All settings are exposed via environment variables or a
.envfile, making CI/CD pipelines straightforward. The config schema is validated by Pydantic. - Testing: Unit tests are written with pytest, and the repository includes a GitHub Actions workflow for continuous integration.
Use Cases
| Scenario | How Mealie Helps |
|---|---|
| Home‑automation integration | Expose meal plans to a smart display or voice assistant via the REST API; trigger kitchen appliances based on upcoming recipes. |
| Custom recipe portal | Build a branded frontend that consumes Mealie’s API, adding proprietary analytics or gamification layers. |
| Family recipe book | Sync recipes across devices, share via webhooks to a shared Google Sheet, and auto‑generate shopping lists for weekly grocery runs. |
| Nutrition tracking | Extend the API to expose caloric data; integrate with a fitness app that pulls daily meal information. |
Advantages Over
Open SourceReady to get started?
Join the community and start self-hosting Mealie today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Glowing Bear
Web IRC client for WeeChat, mobile‑friendly and feature rich
Docker Mailserver
Self‑hosted, full‑stack mail server in a single container
DragonFly
Self-hosted apis-services
Tiny Tiny RSS
Self-hosted web feed reader and aggregator
Plone
Secure, modern CMS built on Python and React
Judge0 CE
Open‑source, sandboxed code execution for any application
