Gleam frontend to the Mealie recipe manager
- Gleam 88.2%
- CSS 8%
- JavaScript 3.1%
- HTML 0.4%
- Makefile 0.3%
| .assets | fix step->ingredient refs, upgrade glaze_oat | |
| public | add split button helper, use it in view recipe | |
| src | search: load more results | |
| test | upgrade deps | |
| .gitignore | view-recipe improvements, deploy make target | |
| gleam.toml | upgrade deps | |
| index.html | cook: keep screen up | |
| LICENSE | edit: display ingredient list, add and delete | |
| Makefile | retrieve and display recipe comments, add nested json todo item | |
| manifest.toml | upgrade deps | |
| package-lock.json | use console.log instead of echo | |
| package.json | use console.log instead of echo | |
| README.md | upgrade deps | |
| vite.config.mjs | split js bundle | |
Logo of the project: a pink mandu with happy eyes and rose cheeks
Mandu
A Gleam frontend for the Mealie recipe manager
Original image by freepikMandu is a custom frontend for the Mealie recipe manager, built with Gleam and Lustre with the long-term goal of replacing the backend once the frontend is stable. It is:
- a fun side-project to learn Gleam and Lustre: code quality will need improving
- licensed under the EUPL: it's compatibility clause allows reuse of parts of this codebase into projects with compatible copyleft licenses
- not a feature-complete frontend: only a subset of Mealie's features will be implemented to keep the interface simple. New features will be experimented with.
- not an open-contribution project: issues and PRs are disabled, but feel free to send feedback and ideas by email or Fediverse.
Screenshot of the recipe search interface Screenshot of the recipe search interface Screenshot of the recipe edition interface Screenshot of the recipe edition interface
How to run
Run it locally
make runwill start a Vite dev server that proxies to https://demo.mealie.io, for easy testing- To use your own Mealie instance, create a
.envfile and set theVITE_MEALIE_HOSTvariable
Deploy it on a server
- Run
make buildand copy the contents ofdist/on your server - Then, setup your web server to proxy the
/api/*subpath to your Mealie server and serve the static files. Here is an example Caddy configuration:
my.subdomain.example {
handle /api/* {
reverse_proxy 127.0.0.1:9432 { # Optional header, to enable "Open in Mealie" links
header_down X-Backend-Url https://external.mealie.address
}
}
handle {
root * /path/to/the/mandu/build
route {
try_files {path} /index.html
header /index.html Cache-Control "public, max-age=0, must-revalidate"
}
file_server
}
}