Compare commits
1040 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
92ab103b3a | ||
|
|
dec67f6ef9 | ||
|
|
932473d0ff | ||
|
|
288bb65d67 | ||
|
|
cb1dbe34fa | ||
|
|
4a14403274 | ||
|
|
df04b23c88 | ||
|
|
a6b413b431 | ||
|
|
041d7d81fa | ||
|
|
02197677b7 | ||
|
|
0636816167 | ||
|
|
8b31257617 | ||
|
|
825914a4bd | ||
|
|
fb5f13991a | ||
|
|
72b0f11b72 | ||
|
|
78ab232516 | ||
|
|
716c5c1d87 | ||
|
|
5d33694bc6 | ||
|
|
23a85f51d2 | ||
|
|
43b4e4b028 | ||
|
|
251544b2c5 | ||
|
|
c0b531030f | ||
|
|
f7b78783ec | ||
|
|
bca80dcc53 | ||
|
|
9e25e58378 | ||
|
|
4c4e12a794 | ||
|
|
a3f0506ba3 | ||
|
|
f46e730eb5 | ||
|
|
a2e54aaefc | ||
|
|
2855171fda | ||
|
|
209e932482 | ||
|
|
f31c8f4dac | ||
|
|
999b19d148 | ||
|
|
7d061d428f | ||
|
|
2922782e5e | ||
|
|
47a8383ae5 | ||
|
|
a543b89c38 | ||
|
|
702f8b47ac | ||
|
|
f8e4c7f5cd | ||
|
|
8d325198e8 | ||
|
|
afd304f9e5 | ||
|
|
59f4c51e6e | ||
|
|
613e4ef606 | ||
|
|
aceed2a11e | ||
|
|
02682f8ad4 | ||
|
|
085d0ae877 | ||
|
|
b3c0661f52 | ||
|
|
2abae02388 | ||
|
|
e88779f9ec | ||
|
|
ba3a999ed6 | ||
|
|
95aeb0ea05 | ||
|
|
09cf3466e3 | ||
|
|
cc37147a34 | ||
|
|
285ccb408f | ||
|
|
945ffb34fe | ||
|
|
02a545dcb5 | ||
|
|
eecda1be4d | ||
|
|
65ab714c38 | ||
|
|
1187a678ba | ||
|
|
1ec580342f | ||
|
|
c8d3bd4495 | ||
|
|
17d74c451e | ||
|
|
61934537c9 | ||
|
|
c691418cfb | ||
|
|
d74bcd8954 | ||
|
|
d9a1db557c | ||
|
|
87504fbb05 | ||
|
|
0e6a40e210 | ||
|
|
a6cbf1308e | ||
|
|
f1e9615efd | ||
|
|
497424528d | ||
|
|
da3e1b4c00 | ||
|
|
393a1e4c1a | ||
|
|
4e0cf985bc | ||
|
|
d26e29d1c5 | ||
|
|
6ab45bbeff | ||
|
|
a439428ab8 | ||
|
|
60edaf4b16 | ||
|
|
a94bad19ff | ||
|
|
fa28fe51c8 | ||
|
|
590bf9dbc5 | ||
|
|
2945ea8f07 | ||
|
|
f67f00ca53 | ||
|
|
2adbe5a196 | ||
|
|
f4d23b9e1c | ||
|
|
f63196d570 | ||
|
|
48549893bc | ||
|
|
3b3d8fc89d | ||
|
|
29f47d1722 | ||
|
|
8821653dcb | ||
|
|
c0a4ae27b0 | ||
|
|
12a90b6334 | ||
|
|
79e712503c | ||
|
|
d6de0d0b3d | ||
|
|
dce6d86cbf | ||
|
|
3539385429 | ||
|
|
e97f1f805b | ||
|
|
83edff1c78 | ||
|
|
efb72b1859 | ||
|
|
5afa611ec3 | ||
|
|
82cc9e11f7 | ||
|
|
3fc120236d | ||
|
|
e32bae4575 | ||
|
|
327da02fc8 | ||
|
|
c8cd68b4f0 | ||
|
|
f31b76e2ff | ||
|
|
426f91fb50 | ||
|
|
f194a6d8c8 | ||
|
|
6e4f9a234b | ||
|
|
76eccdff8c | ||
|
|
a7330f11e6 | ||
|
|
d993ddf600 | ||
|
|
54f994defc | ||
|
|
db4789099a | ||
|
|
172698afce | ||
|
|
8f9d602004 | ||
|
|
d3b574ea84 | ||
|
|
4f5a0bf9f5 | ||
|
|
d965ceaff6 | ||
|
|
bcd0fcc920 | ||
|
|
085c489b05 | ||
|
|
af46a6ce33 | ||
|
|
b1f81b4b95 | ||
|
|
622c1b11f5 | ||
|
|
7ada42a791 | ||
|
|
ea4adfa335 | ||
|
|
365d77e599 | ||
|
|
0ef8c52c6a | ||
|
|
d419acd61e | ||
|
|
65c35adc9d | ||
|
|
83b4846f0c | ||
|
|
6bc7ada20a | ||
|
|
8ce6f9038a | ||
|
|
e3c6d4c66c | ||
|
|
381a698220 | ||
|
|
c866557d58 | ||
|
|
bb5da2cb54 | ||
|
|
0fed5f54f6 | ||
|
|
f4bde93960 | ||
|
|
62300deea0 | ||
|
|
87f4b23711 | ||
|
|
8983745106 | ||
|
|
8872fd52cd | ||
|
|
b81b97d934 | ||
|
|
f798fafb3e | ||
|
|
dbbbe06a23 | ||
|
|
4b9eb5077a | ||
|
|
ff6db2374d | ||
|
|
3e69ea94d5 | ||
|
|
2e114cfa69 | ||
|
|
eb34ef0156 | ||
|
|
446755f678 | ||
|
|
08fe2d32b0 | ||
|
|
fb653ee2f6 | ||
|
|
a326a8c717 | ||
|
|
6e7cb5fb86 | ||
|
|
9289bd8e05 | ||
|
|
985b5634b7 | ||
|
|
2b2bc041bd | ||
|
|
6e16d4cc91 | ||
|
|
53a566d08a | ||
|
|
fb0a747549 | ||
|
|
6e045bf0c3 | ||
|
|
8d1ce5c190 | ||
|
|
3bf6840cbc | ||
|
|
0053f76531 | ||
|
|
05ac18f00b | ||
|
|
8b6c75877d | ||
|
|
0e25c7485d | ||
|
|
ea0d2ece6a | ||
|
|
f7e595b404 | ||
|
|
d48320f0a5 | ||
|
|
2240ab01d2 | ||
|
|
ae9276b55c | ||
|
|
b5643a9399 | ||
|
|
702180aeda | ||
|
|
458d2bb61b | ||
|
|
5a83f55a00 | ||
|
|
04ef4037b7 | ||
|
|
fdb5ff9ec0 | ||
|
|
302002d630 | ||
|
|
2305438423 | ||
|
|
34bd4a74c2 | ||
|
|
dacd0acff6 | ||
|
|
010c6d8eb2 | ||
|
|
3eac3e6648 | ||
|
|
3dd61f7742 | ||
|
|
99fec90288 | ||
|
|
d05f27dfe5 | ||
|
|
4c84f48e81 | ||
|
|
441b51a6e7 | ||
|
|
bf2a69735d | ||
|
|
61511d17d3 | ||
|
|
248e560a5c | ||
|
|
09beac24c8 | ||
|
|
a7c8b33cca | ||
|
|
674ad237f1 | ||
|
|
8ecddb07ae | ||
|
|
b86c01e405 | ||
|
|
124301823c | ||
|
|
c784a64c44 | ||
|
|
e79aeb9e8c | ||
|
|
85fe770be0 | ||
|
|
6f157b60a5 | ||
|
|
1e6bbc6699 | ||
|
|
543a53cab4 | ||
|
|
a17529bd71 | ||
|
|
1dc7b24146 | ||
|
|
60ea83d737 | ||
|
|
8180aefc0b | ||
|
|
007c99c77a | ||
|
|
292ff8313b | ||
|
|
79b3308f15 | ||
|
|
56a557fc82 | ||
|
|
b8e62ab8dd | ||
|
|
2a9a6fa5e6 | ||
|
|
79b36024a4 | ||
|
|
c40d2d0486 | ||
|
|
8da08cdd60 | ||
|
|
e47d171463 | ||
|
|
80caa5ffaf | ||
|
|
03485ecc73 | ||
|
|
b3ad32ee31 | ||
|
|
6d89fe37ad | ||
|
|
1af2473a72 | ||
|
|
77de9fee98 | ||
|
|
cba381cb67 | ||
|
|
02791e294d | ||
|
|
7f396ab483 | ||
|
|
0e299e98ee | ||
|
|
4e839711eb | ||
|
|
02c0fe993b | ||
|
|
3aea229f2d | ||
|
|
d08b3d8943 | ||
|
|
91353d6d7e | ||
|
|
d12d3d12ef | ||
|
|
e06572b7ca | ||
|
|
a2bdb02a7f | ||
|
|
433336b8b4 | ||
|
|
d50d4bee08 | ||
|
|
445f55812b | ||
|
|
0e247f22f8 | ||
|
|
4e4bc1b542 | ||
|
|
8379e3565f | ||
|
|
d36041fa75 | ||
|
|
655122c390 | ||
|
|
07e70b419d | ||
|
|
b4ebe4f9a6 | ||
|
|
172160c862 | ||
|
|
01a43f28f2 | ||
|
|
00baa397dd | ||
|
|
a2beab6cbb | ||
|
|
56bd68d824 | ||
|
|
a559335bd7 | ||
|
|
b0ed242ff2 | ||
|
|
b5c0104aba | ||
|
|
5ed0ec029b | ||
|
|
4f1abcf4a3 | ||
|
|
7140dcb188 | ||
|
|
8f229b0dde | ||
|
|
113347a6e5 | ||
|
|
c904f2d818 | ||
|
|
49fe6a6057 | ||
|
|
fef3f1cee3 | ||
|
|
fa32a6489c | ||
|
|
3d1b08779b | ||
|
|
f1d56cad9c | ||
|
|
14dbd79c7f | ||
|
|
1bd3d38dfc | ||
|
|
49a392f4e2 | ||
|
|
4c1d855690 | ||
|
|
edf420491f | ||
|
|
75bbe34ce5 | ||
|
|
743d52ef81 | ||
|
|
e125d1a45a | ||
|
|
df359a58a4 | ||
|
|
73fafa9fb3 | ||
|
|
28b0190648 | ||
|
|
8fe1b0c123 | ||
|
|
30cf37effa | ||
|
|
cd305cd47d | ||
|
|
a9dcb1538a | ||
|
|
30699ac4cd | ||
|
|
4712994242 | ||
|
|
38502e82d4 | ||
|
|
f8cd8b00a5 | ||
|
|
8f2f4d45af | ||
|
|
291808b204 | ||
|
|
75166b5b0f | ||
|
|
f7608071d8 | ||
|
|
64a1a652ca | ||
|
|
2053f29ff8 | ||
|
|
82737613b4 | ||
|
|
04dc593b16 | ||
|
|
d1e3b64a19 | ||
|
|
7922e4d2c1 | ||
|
|
f393c05d6d | ||
|
|
eb640ac270 | ||
|
|
02a36509b6 | ||
|
|
1d4ff66824 | ||
|
|
13522a0402 | ||
|
|
ea1f727a8b | ||
|
|
7c274de778 | ||
|
|
2a6922a85c | ||
|
|
c4f753ee32 | ||
|
|
c774f626ee | ||
|
|
abc1174877 | ||
|
|
f7a1ef597a | ||
|
|
12938f9cd5 | ||
|
|
7f4e958198 | ||
|
|
67791e4d86 | ||
|
|
ba363da251 | ||
|
|
e971efd809 | ||
|
|
09b688cc22 | ||
|
|
22edec4d9a | ||
|
|
821766a6ae | ||
|
|
96a2ccb5e4 | ||
|
|
d41273592a | ||
|
|
64273144d9 | ||
|
|
edb43a80a1 | ||
|
|
f736423fff | ||
|
|
fd0257c1b8 | ||
|
|
b1820f9b23 | ||
|
|
cff33cb15c | ||
|
|
8778559a20 | ||
|
|
77208384ed | ||
|
|
dbbd662e7d | ||
|
|
abe4504640 | ||
|
|
d8dbcac196 | ||
|
|
8bd26d2230 | ||
|
|
400d251381 | ||
|
|
7088bea90a | ||
|
|
0eb3e3f7ca | ||
|
|
6f1df3a95e | ||
|
|
c97053ef83 | ||
|
|
f796258529 | ||
|
|
f6cf58334f | ||
|
|
dda6f297d8 | ||
|
|
97c3135a43 | ||
|
|
871160cb42 | ||
|
|
e77b9e972f | ||
|
|
e1f382f8ba | ||
|
|
baf78573f7 | ||
|
|
e579017e6d | ||
|
|
589b226360 | ||
|
|
98ac9cd290 | ||
|
|
6253fdb3db | ||
|
|
7ff532429f | ||
|
|
a14a4bcf89 | ||
|
|
12a4b16bde | ||
|
|
98f91351d5 | ||
|
|
6a4a88371f | ||
|
|
fc749f520a | ||
|
|
5b3be18fe2 | ||
|
|
0aaa40432d | ||
|
|
6ecdb39a2d | ||
|
|
29c5944d92 | ||
|
|
68ec3f7e42 | ||
|
|
59e5094669 | ||
|
|
ed5cd2a0c5 | ||
|
|
bb2badc526 | ||
|
|
41df1d67e0 | ||
|
|
4d3edbfccb | ||
|
|
979a977d77 | ||
|
|
b2c8585ec5 | ||
|
|
70d5f1a918 | ||
|
|
82169fc316 | ||
|
|
c2fb4d3fa7 | ||
|
|
4734fae891 | ||
|
|
787b826aa1 | ||
|
|
22cdb7305b | ||
|
|
107fc138fd | ||
|
|
e9285881f0 | ||
|
|
e0b5d76278 | ||
|
|
9acf9ec27c | ||
|
|
7ef2e91ecf | ||
|
|
220c383ccb | ||
|
|
a3f474e088 | ||
|
|
2ad6e1b198 | ||
|
|
8b6d8e60eb | ||
|
|
9e392cbdad | ||
|
|
29f21a0cd8 | ||
|
|
22e9c8b462 | ||
|
|
eae474d9b9 | ||
|
|
296a1a036c | ||
|
|
0ca1b6e57c | ||
|
|
9636fc82f6 | ||
|
|
e4aeb01acb | ||
|
|
4c6357e8dc | ||
|
|
91a7e09569 | ||
|
|
2c2c07feb2 | ||
|
|
c49610ec74 | ||
|
|
587002c523 | ||
|
|
7466e5d7f5 | ||
|
|
795f5ea4f1 | ||
|
|
9b6f323b6f | ||
|
|
c688114e15 | ||
|
|
042ac6bfa5 | ||
|
|
67dc0d7066 | ||
|
|
22057cad19 | ||
|
|
ce13242f61 | ||
|
|
7dd66a52d5 | ||
|
|
6ed2b99188 | ||
|
|
29f88eade0 | ||
|
|
a63cdf8534 | ||
|
|
eb170cc7e5 | ||
|
|
0c29cef17d | ||
|
|
f86d4d5d8d | ||
|
|
c721533557 | ||
|
|
0d06494bbf | ||
|
|
9c04950948 | ||
|
|
34c37a2bee | ||
|
|
2cd1e0ad37 | ||
|
|
828afe6674 | ||
|
|
6a705b7352 | ||
|
|
3fa931466e | ||
|
|
4ba8269ff1 | ||
|
|
581310b57d | ||
|
|
ace18ab4aa | ||
|
|
abae973454 | ||
|
|
08bc29ca8a | ||
|
|
9d7ef1837b | ||
|
|
8a15f400e1 | ||
|
|
3d921cb677 | ||
|
|
f0e065efa4 | ||
|
|
d06589b31b | ||
|
|
3405bc4eb6 | ||
|
|
a75eb07a47 | ||
|
|
432914e310 | ||
|
|
65ece35966 | ||
|
|
f11af52d30 | ||
|
|
b4da5c3d5a | ||
|
|
a4e416cabc | ||
|
|
26173704aa | ||
|
|
5876c1ecf7 | ||
|
|
c4a339ed36 | ||
|
|
2967eca819 | ||
|
|
66b19eecfb | ||
|
|
37d93d4e4b | ||
|
|
656d46e9cb | ||
|
|
169d659b72 | ||
|
|
f92a9afbe5 | ||
|
|
d53f81cdfb | ||
|
|
bd4f858ba7 | ||
|
|
ce3a95f38a | ||
|
|
e3ffa03ffd | ||
|
|
79910deb8a | ||
|
|
e0c532ab94 | ||
|
|
73c09ab138 | ||
|
|
7edf0ee3cc | ||
|
|
48381fe897 | ||
|
|
e68300037c | ||
|
|
c643f24a72 | ||
|
|
7820ddc8f7 | ||
|
|
ca3cb2447c | ||
|
|
a55fdb634d | ||
|
|
8b0c607712 | ||
|
|
8c990a5dd2 | ||
|
|
abf5cf0116 | ||
|
|
84069bf9df | ||
|
|
059e5b7ea2 | ||
|
|
3677d04b56 | ||
|
|
05c034fca2 | ||
|
|
17d1cd26dc | ||
|
|
c9bbae6f77 | ||
|
|
a41ad8c6ed | ||
|
|
9c38c89c44 | ||
|
|
998440d064 | ||
|
|
b01d12c377 | ||
|
|
1dee574a08 | ||
|
|
257c4461a3 | ||
|
|
01f4257190 | ||
|
|
d7b7dd6c83 | ||
|
|
23c2eab682 | ||
|
|
def346d16d | ||
|
|
cc324b29ae | ||
|
|
9d58f9b266 | ||
|
|
30b2776f3c | ||
|
|
60d23d0686 | ||
|
|
edf649dea6 | ||
|
|
29b4a3cd22 | ||
|
|
f3a5148628 | ||
|
|
33abd777e0 | ||
|
|
739055caf6 | ||
|
|
8c29bd3439 | ||
|
|
2c4d0b692b | ||
|
|
946b79b77a | ||
|
|
cd154d09b2 | ||
|
|
236c930b54 | ||
|
|
980c847e36 | ||
|
|
91700771e6 | ||
|
|
abb6ad5fd0 | ||
|
|
ac7af02f77 | ||
|
|
525b398687 | ||
|
|
fafc836ccc | ||
|
|
c617b829e5 | ||
|
|
5b1e827d45 | ||
|
|
e33b62be2a | ||
|
|
60c33b499c | ||
|
|
c205dff523 | ||
|
|
ce69899c4b | ||
|
|
a4183e3453 | ||
|
|
ab39408a24 | ||
|
|
8c6c98483c | ||
|
|
ae095ab572 | ||
|
|
65356bc21a | ||
|
|
3aed5de3fc | ||
|
|
a4e9e54dae | ||
|
|
8f698e437e | ||
|
|
ab0d36825a | ||
|
|
4e2f6c57f1 | ||
|
|
de4cb8ba83 | ||
|
|
375f43c596 | ||
|
|
3034945e7e | ||
|
|
8e5effa532 | ||
|
|
3b81d3b18a | ||
|
|
d0f8b5773d | ||
|
|
14910162dc | ||
|
|
035f780d27 | ||
|
|
f10161ee92 | ||
|
|
b1a100a8c5 | ||
|
|
7db39d32d1 | ||
|
|
10921f9a64 | ||
|
|
ba1c44172e | ||
|
|
fd2dc15a15 | ||
|
|
47124488bb | ||
|
|
6e680c972a | ||
|
|
1fd2eb37ae | ||
|
|
923a59791a | ||
|
|
1fcc2c755a | ||
|
|
d5f7a883df | ||
|
|
17f9eef551 | ||
|
|
ca1ab33291 | ||
|
|
6e6ae80c46 | ||
|
|
aa6e109162 | ||
|
|
a6e4b778c1 | ||
|
|
31c7cb7906 | ||
|
|
d954b5cf48 | ||
|
|
e5c2f5570f | ||
|
|
e344f3f1e6 | ||
|
|
6a7f0edbc6 | ||
|
|
d2fd4e0843 | ||
|
|
d639d168fa | ||
|
|
7931e383b2 | ||
|
|
7bfb8c78a6 | ||
|
|
9a2b2a59a2 | ||
|
|
0c0ff8f19d | ||
|
|
6bbd9a162e | ||
|
|
4d6fc9a4c9 | ||
|
|
53c89b340a | ||
|
|
dc64484b8e | ||
|
|
aabab73310 | ||
|
|
542d0e5218 | ||
|
|
a3a21eb533 | ||
|
|
b0cc7c4c25 | ||
|
|
e80ba7dff3 | ||
|
|
bdac51bae2 | ||
|
|
f4827abc1d | ||
|
|
63a180ef2c | ||
|
|
a062a4beaa | ||
|
|
4831adb0f3 | ||
|
|
97550899d0 | ||
|
|
da11204cd7 | ||
|
|
9795b4c553 | ||
|
|
3e1adfa65d | ||
|
|
88214cd61f | ||
|
|
f1b53483da | ||
|
|
5ccac83d08 | ||
|
|
5594b303bc | ||
|
|
58100d0515 | ||
|
|
e2033b2d67 | ||
|
|
5e0f8a4bf7 | ||
|
|
477899fce3 | ||
|
|
04d481fcbf | ||
|
|
5572e51933 | ||
|
|
44915ace12 | ||
|
|
906a143363 | ||
|
|
c41bfbab1e | ||
|
|
69fca013d8 | ||
|
|
24a17e4001 | ||
|
|
6cbd004fb9 | ||
|
|
5d8210d570 | ||
|
|
8d6dc1c6ee | ||
|
|
0e520ba43c | ||
|
|
a9b40cd862 | ||
|
|
ba48e9414c | ||
|
|
72aa1b2514 | ||
|
|
b4f07f9d62 | ||
|
|
eb36912e5c | ||
|
|
d923b4c7fa | ||
|
|
4ecf88379c | ||
|
|
857c8d42e2 | ||
|
|
982802c427 | ||
|
|
4d1381c055 | ||
|
|
adab596683 | ||
|
|
e08fc4e25e | ||
|
|
e8ee37fd43 | ||
|
|
bfe249dc42 | ||
|
|
15989e0c93 | ||
|
|
9af06ce442 | ||
|
|
22fc29742a | ||
|
|
20b1b3de35 | ||
|
|
82d930e645 | ||
|
|
d96c36333b | ||
|
|
b220cd6431 | ||
|
|
598b0f3707 | ||
|
|
c18b9d3184 | ||
|
|
e64d070603 | ||
|
|
d843370c07 | ||
|
|
269be953ce | ||
|
|
9f7d74aecf | ||
|
|
4a0a8e8a5e | ||
|
|
75895cab79 | ||
|
|
be0cdee8b7 | ||
|
|
6024c8bc05 | ||
|
|
b3241d3e8b | ||
|
|
01b9987812 | ||
|
|
4e613e15f0 | ||
|
|
5298bdc90f | ||
|
|
2a6bb7d444 | ||
|
|
21f1d46b6d | ||
|
|
df15a9e74e | ||
|
|
f53cae7c7b | ||
|
|
219138fce1 | ||
|
|
4634ad5666 | ||
|
|
eab7c0d9e5 | ||
|
|
4afb767375 | ||
|
|
a49c32e663 | ||
|
|
5d55e4b4ff | ||
|
|
98c5d142eb | ||
|
|
c0db6ff3d1 | ||
|
|
b71310cdaf | ||
|
|
91fb750768 | ||
|
|
7f1139618d | ||
|
|
42b2bc7c15 | ||
|
|
583bd742fb | ||
|
|
af86ed2028 | ||
|
|
80dc1dcaad | ||
|
|
90e184c0fc | ||
|
|
393103662f | ||
|
|
6e2957fb1e | ||
|
|
e7a668e64e | ||
|
|
88577b696b | ||
|
|
289038ba17 | ||
|
|
4aec294c26 | ||
|
|
99a13bd0c4 | ||
|
|
3bd4353685 | ||
|
|
109ec651cc | ||
|
|
166582acf4 | ||
|
|
4bc88e653f | ||
|
|
94e91d3602 | ||
|
|
d6ce607a4e | ||
|
|
9e8822fabe | ||
|
|
0734ec9ce8 | ||
|
|
f4f2b863e0 | ||
|
|
a7fcb6c84d | ||
|
|
abcee51d0c | ||
|
|
8b61f95c8c | ||
|
|
e01bb60aab | ||
|
|
bf5340b902 | ||
|
|
985041e61f | ||
|
|
70edf36073 | ||
|
|
15a0d25caa | ||
|
|
445754c5d8 | ||
|
|
831cd9c543 | ||
|
|
abaf6062c6 | ||
|
|
125c3914b3 | ||
|
|
93cb6bf341 | ||
|
|
46fb2b2c5a | ||
|
|
ac2a77b3b0 | ||
|
|
66a6426d15 | ||
|
|
508ae30133 | ||
|
|
e3c642debf | ||
|
|
af9e0f27a3 | ||
|
|
e07467df57 | ||
|
|
55b91bf847 | ||
|
|
58fc46af9f | ||
|
|
8e4fe55df1 | ||
|
|
f150c3f41e | ||
|
|
36c7ae5b4b | ||
|
|
d1c5a6ed8c | ||
|
|
ca26639525 | ||
|
|
89982f3e5f | ||
|
|
8485b17490 | ||
|
|
5c57b3dd1a | ||
|
|
4c8bbdcde2 | ||
|
|
2607066570 | ||
|
|
8b7c8be51d | ||
|
|
c70a5cb72c | ||
|
|
c610ec1344 | ||
|
|
61becdbec7 | ||
|
|
78d2a3b8aa | ||
|
|
a4c3b0da71 | ||
|
|
3d3279738b | ||
|
|
495d643ed9 | ||
|
|
9094d24e50 | ||
|
|
aa4d0f9958 | ||
|
|
cb821994ae | ||
|
|
b07a3a31f7 | ||
|
|
68ff5f4b1c | ||
|
|
cde9d166a4 | ||
|
|
041145423f | ||
|
|
c227519fb7 | ||
|
|
94223d2903 | ||
|
|
e015c65d92 | ||
|
|
53916badf3 | ||
|
|
c82549ccb4 | ||
|
|
554b3fa749 | ||
|
|
3f263281e7 | ||
|
|
dc47145af6 | ||
|
|
0ccee3584c | ||
|
|
dc8aadc327 | ||
|
|
efbb571bc2 | ||
|
|
1df75328d7 | ||
|
|
85e402ccc3 | ||
|
|
53a1f04562 | ||
|
|
418a8ec72b | ||
|
|
770630bf73 | ||
|
|
89ee7475a6 | ||
|
|
bca5dd8282 | ||
|
|
dabd93c919 | ||
|
|
6991dff3e6 | ||
|
|
b0eece789d | ||
|
|
9fad4a9dce | ||
|
|
22d8c4d5dc | ||
|
|
7be24d3479 | ||
|
|
fbceb61b9a | ||
|
|
1be5bfaef1 | ||
|
|
fac1df31d3 | ||
|
|
6957e2fa74 | ||
|
|
4f02fae284 | ||
|
|
f2615c97e9 | ||
|
|
6b4c9a400d | ||
|
|
cca11b5a12 | ||
|
|
f697a7ee34 | ||
|
|
0d73338e12 | ||
|
|
2f4c6bd500 | ||
|
|
3807778e2f | ||
|
|
ee87a14401 | ||
|
|
ec458a0a08 | ||
|
|
2ff37c86d6 | ||
|
|
b7da3c0f73 | ||
|
|
d799136f0d | ||
|
|
d1d5754c6d | ||
|
|
52662fdce2 | ||
|
|
8df6033c19 | ||
|
|
c23660007e | ||
|
|
786aa2279c | ||
|
|
ab8c3be367 | ||
|
|
8bf8dfd3ed | ||
|
|
b3aa7aeb1a | ||
|
|
0f2b1d8d3a | ||
|
|
4de6391684 | ||
|
|
c3e68b7d8a | ||
|
|
7557d2e818 | ||
|
|
c22a2fc4a8 | ||
|
|
ad94a4f42f | ||
|
|
e6bf3b3acd | ||
|
|
711dd93851 | ||
|
|
2b6d7811ca | ||
|
|
3373abf787 | ||
|
|
741d37f59e | ||
|
|
b38c19ce71 | ||
|
|
1a385e941c | ||
|
|
c6f5b62ad0 | ||
|
|
84dad84326 | ||
|
|
f369c8fd6e | ||
|
|
467cf46c6d | ||
|
|
360b8e21d9 | ||
|
|
0b851e79ec | ||
|
|
faf716cb7e | ||
|
|
46f1ad7941 | ||
|
|
6e1112c73e | ||
|
|
6bd5a82b92 | ||
|
|
cba076b6a4 | ||
|
|
2ff1135b00 | ||
|
|
467b9c6d65 | ||
|
|
176e471276 | ||
|
|
193888fb30 | ||
|
|
13edefbf41 | ||
|
|
fd33468fda | ||
|
|
2a541f081a | ||
|
|
8ab09cf03b | ||
|
|
9e6ae2e514 | ||
|
|
94678fe6e0 | ||
|
|
ed533c8fad | ||
|
|
93f7d15917 | ||
|
|
53aa4dab51 | ||
|
|
92659c64eb | ||
|
|
6f871c6bdb | ||
|
|
f4f511aad6 | ||
|
|
03d384f3a5 | ||
|
|
0c2917a112 | ||
|
|
606a8f03a3 | ||
|
|
2d31c0abf2 | ||
|
|
15c752d428 | ||
|
|
b254cf3833 | ||
|
|
0bd023d8a8 | ||
|
|
aad50f2267 | ||
|
|
fcbc57b392 | ||
|
|
a62299e6ef | ||
|
|
82563fa948 | ||
|
|
7583c56b35 | ||
|
|
b9cc2dc257 | ||
|
|
0dcf81e764 | ||
|
|
3d3763d4b9 | ||
|
|
517727a4b6 | ||
|
|
1c26dff1e9 | ||
|
|
ed1834d945 | ||
|
|
bf8bc88ffb | ||
|
|
6c48eba5f7 | ||
|
|
dc7df0d4aa | ||
|
|
45d5194f19 | ||
|
|
8ad1a15bf1 | ||
|
|
57aeb401b8 | ||
|
|
e15a2f35e2 | ||
|
|
b28e135ceb | ||
|
|
148aca5e85 | ||
|
|
1ac7f90c28 | ||
|
|
413a8a82fc | ||
|
|
72c414bf94 | ||
|
|
b67263e63f | ||
|
|
1673eedff7 | ||
|
|
d3ee5f34f8 | ||
|
|
683f1ac69e | ||
|
|
d6d0f7de71 | ||
|
|
dd0eaac45f | ||
|
|
f8e672c7ac | ||
|
|
2aa9d84d6c | ||
|
|
2c13c4760e | ||
|
|
62bf733548 | ||
|
|
2c72ea17a2 | ||
|
|
06406c86f5 | ||
|
|
b7f7712011 | ||
|
|
4b13686261 | ||
|
|
9fade36014 | ||
|
|
eb1d569e95 | ||
|
|
1099e30a1d | ||
|
|
fa9a2d64f7 | ||
|
|
de142c47df | ||
|
|
c990420a87 | ||
|
|
d772e3bb4f | ||
|
|
bb8080475c | ||
|
|
c1e05f57db | ||
|
|
9ad68542e0 | ||
|
|
83997dbb47 | ||
|
|
b5f3c5bef7 | ||
|
|
ddd97cce10 | ||
|
|
0ecd57a50b | ||
|
|
e4efcee0df | ||
|
|
a6920f057e | ||
|
|
dbb212ceda | ||
|
|
5d5805459a | ||
|
|
3e68920e69 | ||
|
|
91c978a309 | ||
|
|
e7c101c96b | ||
|
|
004f3552c0 | ||
|
|
cd56149371 | ||
|
|
8edea0a7e0 | ||
|
|
df15e97026 | ||
|
|
760462e12f | ||
|
|
60793bb560 | ||
|
|
7c84d3dea5 | ||
|
|
eee1c5733d | ||
|
|
cf0a7ae9c9 | ||
|
|
be80d3e74c | ||
|
|
db1fabf5c8 | ||
|
|
e7e73772e0 | ||
|
|
e5cab0e4d0 | ||
|
|
6a14d5b7db | ||
|
|
57106c4cce | ||
|
|
61c6a991f3 | ||
|
|
6824b3c269 | ||
|
|
6b13166880 | ||
|
|
b2747d77e1 | ||
|
|
fc4d1b88d0 | ||
|
|
8798bd6e55 | ||
|
|
cef61ae29f | ||
|
|
e304d48e84 | ||
|
|
4f1a7c55b9 | ||
|
|
bae7acbc3b | ||
|
|
c0cf6a9aca | ||
|
|
f4570faf1a | ||
|
|
9548a7eb70 | ||
|
|
d5e3a1dacb | ||
|
|
1ce760ec7e | ||
|
|
9e23ed1a07 | ||
|
|
b3885cc3f8 | ||
|
|
5da990abd4 | ||
|
|
f709d11952 | ||
|
|
2a3463b746 | ||
|
|
cb7302d2d9 | ||
|
|
a30084a199 | ||
|
|
c0654a5d95 | ||
|
|
737a370874 | ||
|
|
2a2b6f312b | ||
|
|
96d220acbd | ||
|
|
b9a9b8695d | ||
|
|
e80c8a50e6 | ||
|
|
41795799e6 | ||
|
|
9980e49eef | ||
|
|
945810c47a | ||
|
|
a283828461 | ||
|
|
7c365b7c03 | ||
|
|
16da55f58b | ||
|
|
35f6b0e80e | ||
|
|
ab37c2e8c0 | ||
|
|
d1f82df936 | ||
|
|
6c7cb7e795 | ||
|
|
ecf80b8e9c | ||
|
|
e280734e33 | ||
|
|
24d8854723 | ||
|
|
2f9b711973 | ||
|
|
2b09495e87 | ||
|
|
ae5a1a9af2 | ||
|
|
a312c4dbf3 | ||
|
|
79fb1fb299 | ||
|
|
b7c1cdfd46 | ||
|
|
09873d4814 | ||
|
|
7f596c653b | ||
|
|
bb06b0414b | ||
|
|
6b720bafd6 | ||
|
|
6449591143 | ||
|
|
8fb43246b2 | ||
|
|
95d3fd4958 | ||
|
|
dfbc890f2c | ||
|
|
21886ab4b8 | ||
|
|
4b0df3ace8 | ||
|
|
7505b5cf65 | ||
|
|
45e71da402 | ||
|
|
3ded63dfdf | ||
|
|
735c3e3146 | ||
|
|
83861cfcb8 | ||
|
|
c22ff8ccad | ||
|
|
9a17a484f3 | ||
|
|
bc6734399f | ||
|
|
8e6f2a3d61 | ||
|
|
20fa3a25f2 | ||
|
|
1a9f5470ca | ||
|
|
2254d114be | ||
|
|
ef22d29ef1 | ||
|
|
ef165cd276 | ||
|
|
e6477920ce | ||
|
|
c49584d027 | ||
|
|
e56eabf1e2 | ||
|
|
a35f2ae56a | ||
|
|
2a4a195dcb | ||
|
|
6318e8d1c6 | ||
|
|
b7a4899302 | ||
|
|
7fe6ef4da5 | ||
|
|
0391763d18 | ||
|
|
3250384862 | ||
|
|
1bf496751c | ||
|
|
580700458c | ||
|
|
6c6276cb79 | ||
|
|
787f9293fb | ||
|
|
aa0547ae69 | ||
|
|
1c6b0f1122 | ||
|
|
014721b6f7 | ||
|
|
692d8a5681 | ||
|
|
120d4cfc5a | ||
|
|
e3b3f70621 | ||
|
|
c5e55a2207 | ||
|
|
f6d508af92 | ||
|
|
516a732b12 | ||
|
|
dfd4943304 | ||
|
|
511e08e7e9 | ||
|
|
ed50dfc145 | ||
|
|
ee542255a5 | ||
|
|
32fa9d4439 | ||
|
|
f2be3383ac | ||
|
|
fd6874e8dd | ||
|
|
09e514fa84 | ||
|
|
f4678f99ed | ||
|
|
4e9670acf6 | ||
|
|
fb097ca095 | ||
|
|
8f40d13f20 | ||
|
|
2aaef9ae54 | ||
|
|
a6d31638e2 | ||
|
|
f73aefce4e | ||
|
|
ff5131018b | ||
|
|
1c6c5042ae | ||
|
|
d770009e0d | ||
|
|
4a0b211f27 | ||
|
|
7dcf2ca33d | ||
|
|
95c15504d0 | ||
|
|
4e38625bde | ||
|
|
4a411f0483 | ||
|
|
95b6d901bf | ||
|
|
c9d74e25ac | ||
|
|
54aef24caf | ||
|
|
6050b1e25a | ||
|
|
b54cef2702 | ||
|
|
abb2c8110c | ||
|
|
f1e8d633fc | ||
|
|
c4f60942b5 | ||
|
|
abbaf12e9e | ||
|
|
04e6601d5b | ||
|
|
1ebc7d27d4 | ||
|
|
59d53a02b3 | ||
|
|
370da5aee3 | ||
|
|
af2992eee9 | ||
|
|
e17b8b813c | ||
|
|
9b4e0dd0d9 | ||
|
|
d7bc1c75da | ||
|
|
b963b99a4c | ||
|
|
9270e22f19 | ||
|
|
7df34890d4 | ||
|
|
36b0661e1d | ||
|
|
6da50b576f | ||
|
|
517491e507 | ||
|
|
82aca1f77f | ||
|
|
8c4f657aa7 | ||
|
|
4352762e93 | ||
|
|
ad0ea09be9 | ||
|
|
52c6fe34b2 | ||
|
|
b6ccb9fbdb | ||
|
|
f83ab6ecc1 | ||
|
|
1af0f426ae | ||
|
|
d960947258 | ||
|
|
f2735ba22b | ||
|
|
aa4c02ef30 | ||
|
|
f1fbf0d120 | ||
|
|
63a362a48a | ||
|
|
e0d7341139 | ||
|
|
5f5b06683a | ||
|
|
42523bbfc9 | ||
|
|
0a344731c8 | ||
|
|
e83fa89ec4 | ||
|
|
13cd7a1c0f | ||
|
|
0e23a41bdb | ||
|
|
e17b320dc8 | ||
|
|
403038a5b2 | ||
|
|
430e1d7d4e | ||
|
|
c44cd7ffab | ||
|
|
73dfb523ec | ||
|
|
21d57735c9 | ||
|
|
05e13e6078 | ||
|
|
5f6844eceb | ||
|
|
bea1a592d7 |
@@ -1,8 +1,8 @@
|
||||
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.224.2/containers/python-3/.devcontainer/base.Dockerfile
|
||||
|
||||
# [Choice] Python version (use -bullseye variants on local arm64/Apple Silicon): 3, 3.10, 3.9, 3.8, 3.7, 3.6, 3-bullseye, 3.10-bullseye, 3.9-bullseye, 3.8-bullseye, 3.7-bullseye, 3.6-bullseye, 3-buster, 3.10-buster, 3.9-buster, 3.8-buster, 3.7-buster, 3.6-buster
|
||||
ARG VARIANT="3.10-bullseye"
|
||||
FROM mcr.microsoft.com/vscode/devcontainers/python:0-${VARIANT}
|
||||
ARG VARIANT="3.12-bullseye"
|
||||
FROM mcr.microsoft.com/devcontainers/python:${VARIANT}
|
||||
|
||||
# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
|
||||
ARG NODE_VERSION="none"
|
||||
@@ -38,3 +38,6 @@ RUN apt-get update \
|
||||
libwebp-dev \
|
||||
libsasl2-dev libldap2-dev libssl-dev \
|
||||
gnupg gnupg2 gnupg1
|
||||
|
||||
# create directory used for Docker Secrets
|
||||
RUN mkdir -p /run/secrets
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
// Update 'VARIANT' to pick a Python version: 3, 3.10, 3.9, 3.8, 3.7, 3.6
|
||||
// Append -bullseye or -buster to pin to an OS version.
|
||||
// Use -bullseye variants on local on arm64/Apple Silicon.
|
||||
"VARIANT": "3.10-bullseye",
|
||||
"VARIANT": "3.12-bullseye",
|
||||
// Options
|
||||
"NODE_VERSION": "16"
|
||||
}
|
||||
@@ -25,12 +25,13 @@
|
||||
"python.formatting.autopep8Path": "/usr/local/py-utils/bin/autopep8",
|
||||
"python.formatting.blackPath": "/usr/local/py-utils/bin/black",
|
||||
"python.formatting.yapfPath": "/usr/local/py-utils/bin/yapf",
|
||||
"mypy.runUsingActiveInterpreter": true
|
||||
},
|
||||
"extensions": [
|
||||
"charliermarsh.ruff",
|
||||
"dbaeumer.vscode-eslint",
|
||||
"matangover.mypy",
|
||||
"ms-python.black-formatter",
|
||||
"ms-python.isort",
|
||||
"ms-python.pylint",
|
||||
"ms-python.python",
|
||||
"ms-python.vscode-pylance",
|
||||
@@ -42,6 +43,7 @@
|
||||
"forwardPorts": [
|
||||
3000,
|
||||
9000,
|
||||
9091, // used by docker production
|
||||
24678 // used by nuxt when hot-reloading using polling
|
||||
],
|
||||
// Use 'onCreateCommand' to run commands at the end of container creation.
|
||||
|
||||
@@ -26,7 +26,7 @@ venv
|
||||
*/node_modules
|
||||
*/dist
|
||||
*/data/db
|
||||
*/mealie/test
|
||||
*/mealie/test
|
||||
*/mealie/.temp
|
||||
|
||||
model.crfmodel
|
||||
|
||||
2
.gitattributes
vendored
@@ -1,2 +1,2 @@
|
||||
*.css linguist-detectable=false
|
||||
*.html linguist-detectable=false
|
||||
*.html linguist-detectable=false
|
||||
|
||||
9
.github/DISCUSSION_TEMPLATE/oauth-provider-example.yaml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
title: OAuth setup with <PROVIDER>
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Configuration Example
|
||||
description: Add your example configuration. You can provide code blocks, screenshots, and links.
|
||||
validations:
|
||||
required: true
|
||||
14
.github/ISSUE_TEMPLATE/task.yaml
vendored
@@ -1,27 +1,27 @@
|
||||
---
|
||||
name: v1.0.0b Task
|
||||
name: Task
|
||||
description: "CONTRIBUTORS ONLY: Submit a Task that needs to be completed"
|
||||
title: "[v1.0.0b] [Task] - TASK DESCRIPTION"
|
||||
title: "[Task] - TASK DESCRIPTION"
|
||||
labels:
|
||||
- task
|
||||
- v1
|
||||
- v2
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for your interest in Mealie! 🚀
|
||||
|
||||
This is a place for Mealie contributors to find tasks that need to get done around the repository. Tasks are different than issues as they are generally related to providing a new feature or improve an existing feature. They are _generally_ not related to an issue.
|
||||
This is a place for Mealie contributors to find tasks that need to get done around the repository. Tasks are different than issues as they are generally related to providing a new feature or improving an existing feature. They are _generally_ not related to an issue.
|
||||
|
||||
**DO NOT** create a task unless
|
||||
- You are a contributors who has prior approval via discord/discussions
|
||||
- You are a contributor who has prior approval via discord/discussions
|
||||
- You have otherwise been given approval to post the tasks
|
||||
|
||||
Otherwise, your post will be closed/deleted.
|
||||
|
||||
**Interested in Taking This?**
|
||||
|
||||
If you're interested in completing this tasks and it hasn't already been taken, comment below and to let others know you're working on it. As you work through the task, I ask that you submit a draft pull request as soon as possible, and tag this issue so we can all collaborate as best as possible.
|
||||
If you're interested in completing this task and it hasn't already been taken, comment below and to let others know you're working on it. As you work through the task, I ask that you submit a draft pull request as soon as possible, and tag this issue so we can all collaborate as best as possible.
|
||||
- type: textarea
|
||||
id: problem
|
||||
attributes:
|
||||
@@ -33,6 +33,6 @@ body:
|
||||
id: solution
|
||||
attributes:
|
||||
label: Proposed/Possible Solution(s)?
|
||||
placeholder: Provide as much context around the idea as possible with potential files and roadblocks that may come up
|
||||
placeholder: Provide as much context around the idea as possible with potential files and roadblocks that may come up.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
20
.github/pull_request_template.md
vendored
@@ -1,6 +1,13 @@
|
||||
<!--
|
||||
This template provides some ideas of things to include in your PR description.
|
||||
To start, try providing a short summary of your changes in the Title above.
|
||||
|
||||
To start, try providing a short summary of your changes in the Title above. We follow Conventional Commits syntax, please ensure your title is prefixed with one of:
|
||||
- `feat: `
|
||||
- `fix: `
|
||||
- `docs: `
|
||||
- `chore: `
|
||||
- `dev:`
|
||||
|
||||
If a section of the PR template does not apply to this PR, then delete that section.
|
||||
|
||||
PLEASE READ:
|
||||
@@ -21,10 +28,11 @@ _(REQUIRED)_
|
||||
Delete any of the following that do not apply:
|
||||
-->
|
||||
|
||||
- bug
|
||||
- cleanup
|
||||
- documentation
|
||||
- feature
|
||||
- bug
|
||||
- documentation
|
||||
- cleanup
|
||||
- dev (Internal development)
|
||||
|
||||
## What this PR does / why we need it:
|
||||
|
||||
@@ -36,6 +44,8 @@ _(REQUIRED)_
|
||||
Briefly explain any decisions you made with respect to the changes.
|
||||
Include anything here that you didn't include in *Release Notes*
|
||||
above, such as changes to CI or changes to internal methods.
|
||||
|
||||
If there is a UI component to the change, please include before/after images.
|
||||
-->
|
||||
|
||||
## Which issue(s) this PR fixes:
|
||||
@@ -44,7 +54,7 @@ _(REQUIRED)_
|
||||
|
||||
<!--
|
||||
If this PR fixes one of more issues, list them here.
|
||||
One line each, like so:
|
||||
One per line, like so:
|
||||
Fixes #123
|
||||
Fixes #39
|
||||
-->
|
||||
|
||||
88
.github/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
---
|
||||
name-template: "v$RESOLVED_VERSION"
|
||||
tag-template: "v$RESOLVED_VERSION"
|
||||
change-template: "- $TITLE @$AUTHOR (#$NUMBER)"
|
||||
sort-direction: ascending
|
||||
|
||||
categories:
|
||||
- title: "🚨 Breaking changes"
|
||||
labels:
|
||||
- "breaking-change"
|
||||
- "major"
|
||||
- title: "✨ New features"
|
||||
labels:
|
||||
- "feature"
|
||||
- "minor"
|
||||
- title: "🐛 Bug fixes"
|
||||
labels:
|
||||
- "bugfix"
|
||||
- title: "🧰 Maintenance"
|
||||
collapse-after: 3
|
||||
labels:
|
||||
- "ci"
|
||||
- "chore"
|
||||
- "l10n"
|
||||
- title: "📚 Documentation"
|
||||
labels:
|
||||
- "documentation"
|
||||
- title: "🔨 Internal development"
|
||||
labels:
|
||||
- "dev"
|
||||
- title: "⬆️ Dependency updates"
|
||||
collapse-after: 3
|
||||
labels:
|
||||
- "dependencies"
|
||||
|
||||
version-resolver:
|
||||
major:
|
||||
labels:
|
||||
- "major"
|
||||
- "breaking-change"
|
||||
minor:
|
||||
labels:
|
||||
- "minor"
|
||||
- "feature"
|
||||
patch:
|
||||
labels:
|
||||
- "bugfix"
|
||||
- "chore"
|
||||
- "ci"
|
||||
- "dependencies"
|
||||
- "documentation"
|
||||
- "l10n"
|
||||
- "dev"
|
||||
default: patch
|
||||
|
||||
template: |
|
||||
# 🍴🍴🍴🍴🍴🍴
|
||||
|
||||
## 🎉 Highlights
|
||||
|
||||
- Highlight 1
|
||||
|
||||
- Highlight 2
|
||||
|
||||
$CHANGES
|
||||
|
||||
## 🙏 New Contributors
|
||||
|
||||
!!! Need to source this from GitHub's auto generated release notes !!!
|
||||
|
||||
# 🍴🍴🍴🍴🍴🍴
|
||||
|
||||
autolabeler:
|
||||
- label: 'feature'
|
||||
title:
|
||||
- '/feat/i'
|
||||
- label: 'bugfix'
|
||||
title:
|
||||
- '/fix:/i'
|
||||
- label: 'documentation'
|
||||
title:
|
||||
- '/docs:/i'
|
||||
- label: 'chore'
|
||||
title:
|
||||
- '/chore:/i'
|
||||
- label: 'dev'
|
||||
title:
|
||||
- '/dev:/i'
|
||||
11
.github/workflows/codeql.yml
vendored
@@ -14,10 +14,9 @@ name: "CodeQL"
|
||||
on:
|
||||
push:
|
||||
branches: [ "mealie-next" ]
|
||||
pull_request:
|
||||
branches: [ "mealie-next" ]
|
||||
schedule:
|
||||
- cron: '36 9 * * 3'
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
@@ -45,11 +44,11 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -63,7 +62,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
||||
@@ -76,6 +75,6 @@ jobs:
|
||||
# ./location_of_script_within_repo/buildscript.sh
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
uses: github/codeql-action/analyze@v3
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
|
||||
45
.github/workflows/e2e.yml
vendored
Normal file
@@ -0,0 +1,45 @@
|
||||
name: E2E Tests
|
||||
on:
|
||||
workflow_call:
|
||||
|
||||
jobs:
|
||||
test:
|
||||
timeout-minutes: 60
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: ./tests/e2e
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'yarn'
|
||||
cache-dependency-path: ./tests/e2e/yarn.lock
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
- name: Build Image
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
file: ./docker/Dockerfile
|
||||
context: .
|
||||
push: false
|
||||
load: true
|
||||
tags: mealie:e2e
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
- name: Deploy E2E Test Environment
|
||||
run: docker compose up -d
|
||||
working-directory: ./tests/e2e/docker
|
||||
- name: Install dependencies
|
||||
run: npm install -g yarn && yarn
|
||||
- name: Install Playwright Browsers
|
||||
run: yarn playwright install --with-deps
|
||||
- name: Check test environment
|
||||
run: docker ps
|
||||
- name: Run Playwright tests
|
||||
run: yarn playwright test
|
||||
- name: Destroy Test Environment
|
||||
if: always()
|
||||
run: docker compose down --volumes
|
||||
working-directory: ./tests/e2e/docker
|
||||
14
.github/workflows/partial-backend.yml
vendored
@@ -36,7 +36,7 @@ jobs:
|
||||
# Steps
|
||||
steps:
|
||||
- name: Install Task
|
||||
uses: arduino/setup-task@v1
|
||||
uses: arduino/setup-task@v2
|
||||
with:
|
||||
version: 3.x
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -45,9 +45,9 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up python
|
||||
uses: actions/setup-python@v4
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.10"
|
||||
python-version: "3.12"
|
||||
|
||||
- name: Install Poetry
|
||||
uses: snok/install-poetry@v1
|
||||
@@ -57,7 +57,7 @@ jobs:
|
||||
|
||||
- name: Load cached venv
|
||||
id: cached-poetry-dependencies
|
||||
uses: actions/cache@v3
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .venv
|
||||
key: venv-${{ runner.os }}-${{ hashFiles('**/poetry.lock') }}
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
id: cache-validate
|
||||
if: steps.cached-poetry-dependencies.outputs.cache-hit == 'true'
|
||||
run: |
|
||||
echo "import black;print('venv good?')" > test.py && poetry run python test.py && echo "cache-hit-success=true" >> $GITHUB_OUTPUT
|
||||
echo "import fastapi;print('venv good?')" > test.py && poetry run python test.py && echo "cache-hit-success=true" >> $GITHUB_OUTPUT
|
||||
rm test.py
|
||||
continue-on-error: true
|
||||
|
||||
@@ -78,9 +78,9 @@ jobs:
|
||||
poetry add "psycopg2-binary==2.9.9"
|
||||
if: steps.cached-poetry-dependencies.outputs.cache-hit != 'true' || steps.cache-validate.outputs.cache-hit-success != 'true'
|
||||
|
||||
- name: Formatting (Black)
|
||||
- name: Formatting (Ruff)
|
||||
run: |
|
||||
poetry run black . --check
|
||||
poetry run ruff format . --check
|
||||
|
||||
- name: Lint (Ruff)
|
||||
run: |
|
||||
|
||||
4
.github/workflows/partial-frontend.yml
vendored
@@ -22,7 +22,7 @@ jobs:
|
||||
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache node_modules 📦
|
||||
uses: actions/cache@v3.3.2
|
||||
uses: actions/cache@v4
|
||||
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
|
||||
with:
|
||||
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||
@@ -60,7 +60,7 @@ jobs:
|
||||
run: echo "dir=$(yarn cache dir)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Cache node_modules 📦
|
||||
uses: actions/cache@v3.3.2
|
||||
uses: actions/cache@v4
|
||||
id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`)
|
||||
with:
|
||||
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
|
||||
|
||||
@@ -24,8 +24,10 @@ jobs:
|
||||
image-ref: "mealie"
|
||||
format: "sarif"
|
||||
output: "trivy-results.sarif"
|
||||
env:
|
||||
TRIVY_DB_REPOSITORY: ghcr.io/aquasecurity/trivy-db,public.ecr.aws/aquasecurity/trivy-db
|
||||
|
||||
- name: Upload Trivy scan results to GitHub Security tab
|
||||
uses: github/codeql-action/upload-sarif@v2
|
||||
uses: github/codeql-action/upload-sarif@v3
|
||||
with:
|
||||
sarif_file: "trivy-results.sarif"
|
||||
|
||||
42
.github/workflows/pull-request-lint.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
||||
name: Pull Request Linter
|
||||
|
||||
on:
|
||||
workflow_call:
|
||||
pull_request:
|
||||
types: [edited] # This captures the PR title changing
|
||||
branches:
|
||||
- mealie-next
|
||||
|
||||
jobs:
|
||||
validate-title:
|
||||
name: Validate PR title
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# https://github.com/amannn/action-semantic-pull-request
|
||||
- uses: amannn/action-semantic-pull-request@v5
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
# Configure which types are allowed (newline-delimited).
|
||||
# Default: https://github.com/commitizen/conventional-commit-types
|
||||
types: |
|
||||
feat
|
||||
fix
|
||||
docs
|
||||
chore
|
||||
dev
|
||||
# Configure which scopes are allowed (newline-delimited).
|
||||
# These are regex patterns auto-wrapped in `^ $`.
|
||||
scopes: |
|
||||
deps
|
||||
auto
|
||||
l10n
|
||||
# Configure that a scope must always be provided.
|
||||
requireScope: false
|
||||
# If the PR contains one of these newline-delimited labels, the
|
||||
# validation is skipped. If you want to rerun the validation when
|
||||
# labels change, you might want to use the `labeled` and `unlabeled`
|
||||
# event triggers in your workflow.
|
||||
ignoreLabels: |
|
||||
bot
|
||||
ignore-semantic-pull-request
|
||||
20
.github/workflows/pull-requests.yml
vendored
@@ -5,7 +5,15 @@ on:
|
||||
branches:
|
||||
- mealie-next
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
pull-request-lint:
|
||||
name: "Lint PR"
|
||||
uses: ./.github/workflows/pull-request-lint.yml
|
||||
|
||||
backend-tests:
|
||||
name: "Backend Server Tests"
|
||||
uses: ./.github/workflows/partial-backend.yml
|
||||
@@ -17,3 +25,15 @@ jobs:
|
||||
container-scanning:
|
||||
name: "Trivy Container Scanning"
|
||||
uses: ./.github/workflows/partial-trivy-container-scanning.yml
|
||||
|
||||
end-to-end:
|
||||
name: "End-to-End Tests"
|
||||
uses: ./.github/workflows/e2e.yml
|
||||
|
||||
code-ql:
|
||||
name: "CodeQL"
|
||||
uses: ./.github/workflows/codeql.yml
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
30
.github/workflows/release-drafter.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
name: Release Drafter
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- mealie-next
|
||||
# pull_request event is required for autolabeler
|
||||
pull_request:
|
||||
types: [opened, labeled, unlabeled, reopened, synchronize]
|
||||
# pull_request_target event is required for autolabeler to support PRs from forks
|
||||
pull_request_target:
|
||||
types: [opened, labeled, unlabeled, reopened, synchronize]
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
update_release_draft:
|
||||
permissions:
|
||||
# write permission is required to create a github release
|
||||
contents: write
|
||||
# write permission is required for autolabeler
|
||||
# otherwise, read permission is required at least
|
||||
pull-requests: write
|
||||
name: ✏️ Draft release
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: 🚀 Run Release Drafter
|
||||
uses: release-drafter/release-drafter@v6.0.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
12
.github/workflows/release.yml
vendored
@@ -61,10 +61,16 @@ jobs:
|
||||
- name: Checkout 🛎
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Extract Version From Tag Name
|
||||
run: echo "VERSION_NUM=$(echo ${{ github.event.release.tag_name }} | sed 's/^v//')" >> $GITHUB_ENV
|
||||
|
||||
- name: Modify version strings
|
||||
run: |
|
||||
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:${{ github.event.release.tag_name }}/' docs/docs/documentation/getting-started/installation/sqlite.md
|
||||
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:${{ github.event.release.tag_name }}/' docs/docs/documentation/getting-started/installation/postgres.md
|
||||
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/installation-checklist.md
|
||||
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/sqlite.md
|
||||
sed -i 's/:v[0-9]*.[0-9]*.[0-9]*/:v${{ env.VERSION_NUM }}/' docs/docs/documentation/getting-started/installation/postgres.md
|
||||
sed -i 's/^version = "[^"]*"/version = "${{ env.VERSION_NUM }}"/' pyproject.toml
|
||||
sed -i 's/^\s*"version": "[^"]*"/"version": "${{ env.VERSION_NUM }}"/' frontend/package.json
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
@@ -74,6 +80,8 @@ jobs:
|
||||
with:
|
||||
commit-message: "Update image tag, for release ${{ github.event.release.tag_name }}"
|
||||
branch: "docs/newrelease-update-version-${{ github.event.release.tag_name }}"
|
||||
labels: |
|
||||
documentation
|
||||
delete-branch: true
|
||||
base: mealie-next
|
||||
title: "docs(auto): Update image tag, for release ${{ github.event.release.tag_name }}"
|
||||
|
||||
56
.github/workflows/scheduled-checks.yml
vendored
Normal file
@@ -0,0 +1,56 @@
|
||||
name: Scheduled Checks
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Every monday at 7 AM
|
||||
- cron: 0 7 * * 1
|
||||
|
||||
jobs:
|
||||
update:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
steps:
|
||||
- name: Checkout 🛎
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: "3.12"
|
||||
|
||||
- name: Set PY
|
||||
shell: bash
|
||||
run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
|
||||
|
||||
- name: Cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
~/.cache/pre-commit
|
||||
~/.cache/pip
|
||||
key: pre-commit-${{ env.PY }}-${{ hashFiles('.pre-commit-config.yaml') }}
|
||||
|
||||
- name: Install pre-commit
|
||||
shell: bash
|
||||
run: pip install -U pre-commit
|
||||
|
||||
- name: Run `pre-commit autoupdate`
|
||||
shell: bash
|
||||
run: pre-commit autoupdate --color=always
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@v6
|
||||
# This doesn't currently work for us because it creates the PR but the workflows don't run.
|
||||
# TODO: Provide a personal access token as a parameter here, that solves that problem.
|
||||
# https://github.com/peter-evans/create-pull-request
|
||||
with:
|
||||
commit-message: "Update pre-commit hooks"
|
||||
branch: "fix/update-pre-commit-hooks"
|
||||
labels: |
|
||||
chore
|
||||
delete-branch: true
|
||||
base: mealie-next
|
||||
title: "chore(auto): Update pre-commit hooks"
|
||||
body: "Auto-generated by `.github/workflows/scheduled-checks.yml`"
|
||||
@@ -1,6 +1,6 @@
|
||||
repos:
|
||||
- repo: https://github.com/pre-commit/pre-commit-hooks
|
||||
rev: v2.3.0
|
||||
rev: v5.0.0
|
||||
hooks:
|
||||
- id: check-yaml
|
||||
exclude: "mkdocs.yml"
|
||||
@@ -10,7 +10,9 @@ repos:
|
||||
- id: end-of-file-fixer
|
||||
- id: trailing-whitespace
|
||||
exclude: ^tests/data/
|
||||
- repo: https://github.com/psf/black
|
||||
rev: 24.1.0
|
||||
- repo: https://github.com/astral-sh/ruff-pre-commit
|
||||
# Ruff version.
|
||||
rev: v0.8.6
|
||||
hooks:
|
||||
- id: black
|
||||
- id: ruff
|
||||
- id: ruff-format
|
||||
|
||||
5
.vscode/settings.json
vendored
@@ -60,8 +60,5 @@
|
||||
},
|
||||
"[vue]": {
|
||||
"editor.formatOnSave": false
|
||||
},
|
||||
"[python]": {
|
||||
"editor.defaultFormatter": "ms-python.black-formatter",
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
10
.vscode/tasks.json
vendored
@@ -24,16 +24,6 @@
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Init Database",
|
||||
"command": "poetry run python mealie/db/init_db.py",
|
||||
"type": "shell",
|
||||
"presentation": {
|
||||
"reveal": "always",
|
||||
"group": "groupA"
|
||||
},
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Dev: Start Frontend",
|
||||
"command": "task ui",
|
||||
|
||||
31
README.md
@@ -1,10 +1,10 @@
|
||||
[![Latest Release][latest-release-shield]][latest-release-url]
|
||||
[![Contributors][contributors-shield]][contributors-url]
|
||||
[![Forks][forks-shield]][forks-url]
|
||||
[![Stargazers][stars-shield]][stars-url]
|
||||
[![Issues][issues-shield]][issues-url]
|
||||
[![AGPL License][license-shield]][license-url]
|
||||
[![Docker Pulls][docker-pull]][docker-pull]
|
||||
[![Docker Pulls][docker-pull]][docker-url]
|
||||
[![GHCR Pulls][ghcr-pulls]][ghcr-url]
|
||||
|
||||
<!-- PROJECT LOGO -->
|
||||
<br />
|
||||
@@ -18,9 +18,9 @@
|
||||
<h3 align="center">Mealie</h3>
|
||||
|
||||
<p align="center">
|
||||
A Place for All Your Recipes
|
||||
A Place For All Your Recipes
|
||||
<br />
|
||||
<a href="https://nightly.mealie.io"><strong>Explore the docs »</strong></a>
|
||||
<a href="https://docs.mealie.io/"><strong>Explore the docs »</strong></a>
|
||||
<a href="https://github.com/mealie-recipes/mealie">
|
||||
</a>
|
||||
<br />
|
||||
@@ -38,12 +38,20 @@
|
||||
|
||||
# About The Project
|
||||
|
||||
Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the URL and Mealie will automatically import the relevant data, or add a family recipe with the UI editor. Mealie also provides an API for interactions from 3rd party applications.
|
||||
Mealie is a self hosted recipe manager, meal planner and shopping list with a RestAPI backend and a reactive frontend built in Vue for a pleasant user experience for the whole family. Easily add recipes into your database by providing the URL and Mealie will automatically import the relevant data, or add a family recipe with the UI editor. Mealie also provides an API for interactions from 3rd party applications.
|
||||
|
||||
- [Remember to join the Discord](https://discord.gg/QuStdQGSGK)!
|
||||
- [Documentation](https://nightly.mealie.io)
|
||||
- [Documentation](https://docs.mealie.io/)
|
||||
|
||||
|
||||
## Key Features
|
||||
- Recipe imports: Create recipes, by **importing from a URL** or entering data manually
|
||||
- Meal Planner: Use the **Meal Planner** to plan your what you'll cook for the next week
|
||||
- Shopping List: Put the necessary ingredients on your **Shopping List**, organised into sections of your local supermarket
|
||||
- Cookbooks: Group recipes into **Cookbooks** based on your own criteria
|
||||
- Docker: Easy **Docker** deployment
|
||||
- Localisation: **Translations** for 35+ languages
|
||||
|
||||
<!-- CONTRIBUTING -->
|
||||
## Contributing
|
||||
|
||||
@@ -58,7 +66,7 @@ If you are not a coder, you can still contribute financially. Financial contribu
|
||||
|
||||
### Translations
|
||||
|
||||
Translations can be a great way for **non-coders** to contribute to project. We use [Crowdin](https://crowdin.com/project/mealie) to allow several contributors to work on translating Mealie. You can simply help by voting for your preferred translations, or even by completely translating Mealie into a new language.
|
||||
Translations can be a great way for **non-coders** to contribute to the project. We use [Crowdin](https://crowdin.com/project/mealie) to allow several contributors to work on translating Mealie. You can simply help by voting for your preferred translations, or even by completely translating Mealie into a new language.
|
||||
|
||||
For more information, check out the translation page on the [contributor's guide](https://nightly.mealie.io/contributors/translating/).
|
||||
|
||||
@@ -80,16 +88,17 @@ Thanks to Depot for providing build instances for our Docker image builds.
|
||||
<!-- MARKDOWN LINKS & IMAGES -->
|
||||
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
|
||||
[contributors-shield]: https://img.shields.io/github/contributors/mealie-recipes/mealie.svg?style=flat-square
|
||||
[docker-pull]: https://img.shields.io/docker/pulls/hkotel/mealie
|
||||
[docker-pull]: https://img.shields.io/docker/pulls/hkotel/mealie?style=flat-square
|
||||
[docker-url]: https://hub.docker.com/r/hkotel/mealie
|
||||
[ghcr-pulls]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fipitio.github.io%2Fbackage%2Fmealie-recipes%2Fmealie%2Fmealie.json&query=%24.downloads&style=flat-square&label=ghcr%20pulls
|
||||
[ghcr-url]: https://github.com/mealie-recipes/mealie/pkgs/container/mealie
|
||||
[contributors-url]: https://github.com/mealie-recipes/mealie/graphs/contributors
|
||||
[forks-shield]: https://img.shields.io/github/forks/mealie-recipes/mealie.svg?style=flat-square
|
||||
[forks-url]: https://github.com/mealie-recipes/mealie/network/members
|
||||
[stars-shield]: https://img.shields.io/github/stars/mealie-recipes/mealie.svg?style=flat-square
|
||||
[stars-url]: https://github.com/mealie-recipes/mealie/stargazers
|
||||
[issues-shield]: https://img.shields.io/github/issues/mealie-recipes/mealie.svg?style=flat-square
|
||||
[issues-url]: https://github.com/mealie-recipes/mealie/issues
|
||||
[latest-release-shield]: https://img.shields.io/github/v/release/mealie-recipes/mealie?style=flat-square&label=latest%20release
|
||||
[latest-release-url]: https://img.shields.io/github/v/release/mealie-recipes/mealie
|
||||
[latest-release-url]: https://github.com/mealie-recipes/mealie/releases
|
||||
[license-shield]: https://img.shields.io/github/license/mealie-recipes/mealie.svg?style=flat-square
|
||||
[license-url]: https://github.com/mealie-recipes/mealie/blob/mealie-next/LICENSE
|
||||
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=flat-square&logo=linkedin&colorB=555
|
||||
|
||||
12
Taskfile.yml
@@ -5,6 +5,7 @@ vars:
|
||||
GREETING: Hello, World!
|
||||
env:
|
||||
DEFAULT_GROUP: Home
|
||||
DEFAULT_HOUSEHOLD: Family
|
||||
PRODUCTION: false
|
||||
API_PORT: 9000
|
||||
API_DOCS: True
|
||||
@@ -74,6 +75,7 @@ tasks:
|
||||
desc: run code generators
|
||||
cmds:
|
||||
- poetry run python dev/code-generation/main.py
|
||||
- task: py:format
|
||||
|
||||
dev:services:
|
||||
desc: starts postgres and mailpit containers
|
||||
@@ -105,7 +107,7 @@ tasks:
|
||||
py:format:
|
||||
desc: runs python code formatter
|
||||
cmds:
|
||||
- poetry run black mealie
|
||||
- poetry run ruff format .
|
||||
|
||||
py:lint:
|
||||
desc: runs python linter
|
||||
@@ -132,7 +134,6 @@ tasks:
|
||||
py:
|
||||
desc: runs the backend server
|
||||
cmds:
|
||||
- poetry run python mealie/db/init_db.py
|
||||
- poetry run python mealie/app.py
|
||||
|
||||
py:postgres:
|
||||
@@ -145,9 +146,14 @@ tasks:
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_DB: mealie
|
||||
cmds:
|
||||
- poetry run python mealie/db/init_db.py
|
||||
- poetry run python mealie/app.py
|
||||
|
||||
py:migrate:
|
||||
desc: generates a new database migration file e.g. task py:migrate -- "add new column"
|
||||
cmds:
|
||||
- poetry run alembic --config mealie/alembic/alembic.ini revision --autogenerate -m "{{ .CLI_ARGS }}"
|
||||
- task: py:format
|
||||
|
||||
ui:build:
|
||||
desc: builds the frontend in frontend/dist
|
||||
dir: frontend
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
Generic single-database configuration.
|
||||
@@ -1,4 +1,8 @@
|
||||
preserve_hierarchy: false
|
||||
pull_request_title: "chore(l10n): New Crowdin updates"
|
||||
pull_request_labels: [
|
||||
"l10n"
|
||||
]
|
||||
files:
|
||||
- source: /frontend/lang/messages/en-US.json
|
||||
translation: /frontend/lang/messages/%locale%.json
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import json
|
||||
|
||||
from fastapi import FastAPI
|
||||
from freezegun import freeze_time
|
||||
|
||||
from mealie.app import app
|
||||
from mealie.core.config import determine_data_dir
|
||||
|
||||
@@ -36,11 +39,12 @@ HTML_TEMPLATE = """<!-- Custom HTML site displayed as the Home chapter -->
|
||||
HTML_PATH = DATA_DIR.parent.parent.joinpath("docs/docs/overrides/api.html")
|
||||
|
||||
|
||||
def generate_api_docs(my_app):
|
||||
def generate_api_docs(my_app: FastAPI):
|
||||
with open(HTML_PATH, "w") as fd:
|
||||
text = HTML_TEMPLATE.replace("MY_SPECIFIC_TEXT", json.dumps(my_app.openapi()))
|
||||
fd.write(text)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
generate_api_docs(app)
|
||||
with freeze_time("2024-01-20T17:00:55Z"):
|
||||
generate_api_docs(app)
|
||||
|
||||
@@ -67,7 +67,7 @@ def rename_non_compliant_paths():
|
||||
kabab case.
|
||||
"""
|
||||
|
||||
ignore_files = ["DS_Store", ".gitkeep"]
|
||||
ignore_files = ["DS_Store", ".gitkeep", "af-ZA.json", "en-US.json"]
|
||||
|
||||
ignore_extensions = [".pyc", ".pyo", ".py"]
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ from pathlib import Path
|
||||
from fastapi import FastAPI
|
||||
from jinja2 import Template
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from utils import PROJECT_DIR, CodeTemplates, HTTPRequest, RouteObject, RequestType
|
||||
from utils import PROJECT_DIR, CodeTemplates, HTTPRequest, RouteObject
|
||||
|
||||
CWD = Path(__file__).parent
|
||||
|
||||
@@ -17,9 +17,16 @@ class PathObject(BaseModel):
|
||||
http_verbs: list[HTTPRequest]
|
||||
|
||||
|
||||
def get_path_objects(app: FastAPI):
|
||||
paths = []
|
||||
def force_include_in_schema(app: FastAPI):
|
||||
# clear schema cache
|
||||
app.openapi_schema = None
|
||||
for route in app.routes:
|
||||
route.include_in_schema = True
|
||||
|
||||
|
||||
def get_path_objects(app: FastAPI):
|
||||
force_include_in_schema(app)
|
||||
paths = []
|
||||
for key, value in app.openapi().items():
|
||||
if key == "paths":
|
||||
for key, value2 in value.items():
|
||||
|
||||
@@ -35,18 +35,25 @@ LOCALE_DATA: dict[str, LocaleData] = {
|
||||
"es-ES": LocaleData(name="Español (Spanish)"),
|
||||
"fi-FI": LocaleData(name="Suomi (Finnish)"),
|
||||
"fr-FR": LocaleData(name="Français (French)"),
|
||||
"fr-BE": LocaleData(name="Belge (Belgian)"),
|
||||
"gl-ES": LocaleData(name="Galego (Galician)"),
|
||||
"he-IL": LocaleData(name="עברית (Hebrew)", dir="rtl"),
|
||||
"hr-HR": LocaleData(name="Hrvatski (Croatian)"),
|
||||
"hu-HU": LocaleData(name="Magyar (Hungarian)"),
|
||||
"is-IS": LocaleData(name="Íslenska (Icelandic)"),
|
||||
"it-IT": LocaleData(name="Italiano (Italian)"),
|
||||
"ja-JP": LocaleData(name="日本語 (Japanese)"),
|
||||
"ko-KR": LocaleData(name="한국어 (Korean)"),
|
||||
"no-NO": LocaleData(name="Norsk (Norwegian)"),
|
||||
"lt-LT": LocaleData(name="Lietuvių (Lithuanian)"),
|
||||
"lv-LV": LocaleData(name="Latviešu (Latvian)"),
|
||||
"nl-NL": LocaleData(name="Nederlands (Dutch)"),
|
||||
"no-NO": LocaleData(name="Norsk (Norwegian)"),
|
||||
"pl-PL": LocaleData(name="Polski (Polish)"),
|
||||
"pt-BR": LocaleData(name="Português do Brasil (Brazilian Portuguese)"),
|
||||
"pt-PT": LocaleData(name="Português (Portuguese)"),
|
||||
"ro-RO": LocaleData(name="Română (Romanian)"),
|
||||
"ru-RU": LocaleData(name="Pусский (Russian)"),
|
||||
"sl-SI": LocaleData(name="Slovenščina (Slovenian)"),
|
||||
"sr-SP": LocaleData(name="српски (Serbian)"),
|
||||
"sv-SE": LocaleData(name="Svenska (Swedish)"),
|
||||
"tr-TR": LocaleData(name="Türkçe (Turkish)"),
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
from jinja2 import Template
|
||||
@@ -64,7 +65,112 @@ def generate_global_components_types() -> None:
|
||||
# Pydantic To Typescript Generator
|
||||
|
||||
|
||||
def generate_typescript_types() -> None:
|
||||
def generate_typescript_types() -> None: # noqa: C901
|
||||
def contains_number(s: str) -> bool:
|
||||
return bool(re.search(r"\d", s))
|
||||
|
||||
def remove_numbers(s: str) -> str:
|
||||
return re.sub(r"\d", "", s)
|
||||
|
||||
def extract_type_name(line: str) -> str:
|
||||
# Looking for "export type EnumName = enumVal1 | enumVal2 | ..."
|
||||
if not (line.startswith("export type") and "=" in line):
|
||||
return ""
|
||||
|
||||
return line.split(" ")[2]
|
||||
|
||||
def extract_property_type_name(line: str) -> str:
|
||||
# Looking for " fieldName: FieldType;" or " fieldName: FieldType & string;"
|
||||
if not (line.startswith(" ") and ":" in line):
|
||||
return ""
|
||||
|
||||
return line.split(":")[1].strip().split(";")[0]
|
||||
|
||||
def extract_interface_name(line: str) -> str:
|
||||
# Looking for "export interface InterfaceName {"
|
||||
if not (line.startswith("export interface") and "{" in line):
|
||||
return ""
|
||||
|
||||
return line.split(" ")[2]
|
||||
|
||||
def is_comment_line(line: str) -> bool:
|
||||
s = line.strip()
|
||||
return s.startswith("/*") or s.startswith("*")
|
||||
|
||||
def clean_output_file(file: Path) -> None:
|
||||
"""
|
||||
json2ts generates duplicate types off of our enums and appends a number to the end of the type name.
|
||||
Our Python code (hopefully) doesn't have any duplicate enum names, or types with numbers in them,
|
||||
so we can safely remove the numbers.
|
||||
|
||||
To do this, we read the output line-by-line and replace any type names that contain numbers with
|
||||
the same type name, but without the numbers.
|
||||
|
||||
Note: the issue arrises from the JSON package json2ts, not the Python package pydantic2ts,
|
||||
otherwise we could just fix pydantic2ts.
|
||||
"""
|
||||
|
||||
# First pass: build a map of type names to their numberless counterparts and lines to skip
|
||||
replacement_map = {}
|
||||
lines_to_skip = set()
|
||||
wait_for_semicolon = False
|
||||
wait_for_close_bracket = False
|
||||
skip_comments = False
|
||||
with open(file) as f:
|
||||
for i, line in enumerate(f.readlines()):
|
||||
if wait_for_semicolon:
|
||||
if ";" in line:
|
||||
wait_for_semicolon = False
|
||||
lines_to_skip.add(i)
|
||||
continue
|
||||
if wait_for_close_bracket:
|
||||
if "}" in line:
|
||||
wait_for_close_bracket = False
|
||||
lines_to_skip.add(i)
|
||||
continue
|
||||
|
||||
if type_name := extract_type_name(line):
|
||||
if not contains_number(type_name):
|
||||
continue
|
||||
|
||||
replacement_map[type_name] = remove_numbers(type_name)
|
||||
if ";" not in line:
|
||||
wait_for_semicolon = True
|
||||
lines_to_skip.add(i)
|
||||
|
||||
elif type_name := extract_interface_name(line):
|
||||
if not contains_number(type_name):
|
||||
continue
|
||||
|
||||
replacement_map[type_name] = remove_numbers(type_name)
|
||||
if "}" not in line:
|
||||
wait_for_close_bracket = True
|
||||
lines_to_skip.add(i)
|
||||
|
||||
elif skip_comments and is_comment_line(line):
|
||||
lines_to_skip.add(i)
|
||||
|
||||
# we've passed the opening comments and empty line at the header
|
||||
elif not skip_comments and not line.strip():
|
||||
skip_comments = True
|
||||
|
||||
# Second pass: rewrite or remove lines as needed.
|
||||
# We have to do two passes here because definitions don't always appear in the same order as their usage.
|
||||
lines = []
|
||||
with open(file) as f:
|
||||
for i, line in enumerate(f.readlines()):
|
||||
if i in lines_to_skip:
|
||||
continue
|
||||
|
||||
if type_name := extract_property_type_name(line):
|
||||
if type_name in replacement_map:
|
||||
line = line.replace(type_name, replacement_map[type_name])
|
||||
|
||||
lines.append(line)
|
||||
|
||||
with open(file, "w") as f:
|
||||
f.writelines(lines)
|
||||
|
||||
def path_to_module(path: Path):
|
||||
str_path: str = str(path)
|
||||
|
||||
@@ -98,9 +204,10 @@ def generate_typescript_types() -> None:
|
||||
try:
|
||||
path_as_module = path_to_module(module)
|
||||
generate_typescript_defs(path_as_module, str(out_path), exclude=("MealieModel")) # type: ignore
|
||||
except Exception as e:
|
||||
clean_output_file(out_path)
|
||||
except Exception:
|
||||
failed_modules.append(module)
|
||||
log.error(f"Module Error: {e}")
|
||||
log.exception(f"Module Error: {module}")
|
||||
|
||||
log.debug("\n📁 Skipped Directories:")
|
||||
for skipped_dir in skipped_dirs:
|
||||
|
||||
@@ -4,4 +4,4 @@ CWD = Path(__file__).parent
|
||||
|
||||
{% for f in data.children %}
|
||||
{{ f.var }} = CWD / "{{ f.path }}"
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import logging
|
||||
import re
|
||||
import subprocess
|
||||
from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
import black
|
||||
import isort
|
||||
from jinja2 import Template
|
||||
from rich.logging import RichHandler
|
||||
|
||||
@@ -23,10 +22,12 @@ def render_python_template(template_file: Path | str, dest: Path, data: dict):
|
||||
|
||||
text = tplt.render(data=data)
|
||||
|
||||
text = black.format_str(text, mode=black.FileMode())
|
||||
|
||||
dest.write_text(text)
|
||||
isort.file(dest)
|
||||
|
||||
# lint/format file with Ruff
|
||||
log.info(f"Formatting {dest}")
|
||||
subprocess.run(["poetry", "run", "ruff", "check", str(dest), "--fix"])
|
||||
subprocess.run(["poetry", "run", "ruff", "format", str(dest)])
|
||||
|
||||
|
||||
@dataclass
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
{{ recipe.description }}
|
||||
|
||||
## Ingredients
|
||||
{% for ingredient in recipe.recipeIngredient %}
|
||||
{% for ingredient in recipe.recipeIngredient %}
|
||||
- [ ] {{ ingredient }} {% endfor %}
|
||||
|
||||
## Instructions
|
||||
{% for step in recipe.recipeInstructions %}
|
||||
{% for step in recipe.recipeInstructions %}
|
||||
- [ ] {{ step.text }} {% endfor %}
|
||||
|
||||
{% for note in recipe.notes %}
|
||||
@@ -21,4 +21,4 @@
|
||||
|
||||
Tags: {{ recipe.tags }}
|
||||
Categories: {{ recipe.categories }}
|
||||
Original URL: {{ recipe.orgURL }}
|
||||
Original URL: {{ recipe.orgURL }}
|
||||
|
||||
@@ -173,7 +173,7 @@ def recipe_data(name: str, slug: str, id: str, userId: str, groupId: str) -> dic
|
||||
"dateAdded": "2022-09-03",
|
||||
"dateUpdated": "2022-09-10T15:18:19.866085",
|
||||
"createdAt": "2022-09-03T18:31:17.488118",
|
||||
"updateAt": "2022-09-10T15:18:19.869630",
|
||||
"updatedAt": "2022-09-10T15:18:19.869630",
|
||||
"recipeInstructions": [
|
||||
{
|
||||
"id": "60ae53a3-b3ff-40ee-bae3-89fea0b1c637",
|
||||
|
||||
@@ -17,7 +17,7 @@ RUN yarn generate
|
||||
###############################################
|
||||
# Base Image - Python
|
||||
###############################################
|
||||
FROM python:3.10-slim as python-base
|
||||
FROM python:3.12-slim as python-base
|
||||
|
||||
ENV MEALIE_HOME="/app"
|
||||
|
||||
@@ -78,6 +78,7 @@ RUN echo "crfpp-container"
|
||||
# Production Image
|
||||
###############################################
|
||||
FROM python-base as production
|
||||
LABEL org.opencontainers.image.source="https://github.com/mealie-recipes/mealie"
|
||||
ENV PRODUCTION=true
|
||||
ENV TESTING=false
|
||||
|
||||
@@ -92,6 +93,9 @@ RUN apt-get update \
|
||||
libldap-2.5 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# create directory used for Docker Secrets
|
||||
RUN mkdir -p /run/secrets
|
||||
|
||||
# copying poetry and venv into image
|
||||
COPY --from=builder-base $POETRY_HOME $POETRY_HOME
|
||||
COPY --from=builder-base $PYSETUP_PATH $PYSETUP_PATH
|
||||
@@ -104,11 +108,6 @@ COPY --from=crfpp /usr/local/bin/crf_test /usr/local/bin/crf_test
|
||||
# copy backend
|
||||
COPY ./mealie $MEALIE_HOME/mealie
|
||||
COPY ./poetry.lock ./pyproject.toml $MEALIE_HOME/
|
||||
COPY ./gunicorn_conf.py $MEALIE_HOME
|
||||
|
||||
# Alembic
|
||||
COPY ./alembic $MEALIE_HOME/alembic
|
||||
COPY ./alembic.ini $MEALIE_HOME/
|
||||
|
||||
# venv already has runtime deps installed we get a quicker install
|
||||
WORKDIR $MEALIE_HOME
|
||||
@@ -128,7 +127,6 @@ HEALTHCHECK CMD python $MEALIE_HOME/mealie/scripts/healthcheck.py || exit 1
|
||||
# ----------------------------------
|
||||
# Copy Frontend
|
||||
|
||||
# copying caddy into image
|
||||
ENV STATIC_FILES=/spa/static
|
||||
COPY --from=builder /app/dist ${STATIC_FILES}
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
version: "3.4"
|
||||
services:
|
||||
mailpit:
|
||||
image: axllent/mailpit:latest
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
version: "3.4"
|
||||
services:
|
||||
mealie:
|
||||
container_name: mealie
|
||||
@@ -14,6 +13,7 @@ services:
|
||||
- 9091:9000
|
||||
environment:
|
||||
ALLOW_SIGNUP: "false"
|
||||
LOG_LEVEL: "DEBUG"
|
||||
|
||||
DB_ENGINE: sqlite # Optional: 'sqlite', 'postgres'
|
||||
# =====================================
|
||||
@@ -23,13 +23,6 @@ services:
|
||||
POSTGRES_SERVER: postgres
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_DB: mealie
|
||||
|
||||
# =====================================
|
||||
# Web Concurrency
|
||||
WEB_GUNICORN: "false"
|
||||
WORKERS_PER_CORE: 0.5
|
||||
MAX_WORKERS: 1
|
||||
WEB_CONCURRENCY: 1
|
||||
# =====================================
|
||||
# Email Configuration
|
||||
# SMTP_HOST=
|
||||
|
||||
@@ -33,20 +33,12 @@ init() {
|
||||
|
||||
# Activate our virtual environment here
|
||||
. /opt/pysetup/.venv/bin/activate
|
||||
|
||||
# Initialize Database Prerun
|
||||
poetry run python /app/mealie/db/init_db.py
|
||||
}
|
||||
|
||||
change_user
|
||||
init
|
||||
GUNICORN_PORT=${API_PORT:-9000}
|
||||
|
||||
# Start API
|
||||
hostip=`/sbin/ip route|awk '/default/ { print $3 }'`
|
||||
if [ "$WEB_GUNICORN" = 'true' ]; then
|
||||
echo "Starting Gunicorn"
|
||||
exec gunicorn mealie.app:app -b 0.0.0.0:$GUNICORN_PORT --forwarded-allow-ips=$hostip -k uvicorn.workers.UvicornWorker -c /app/gunicorn_conf.py --preload
|
||||
else
|
||||
exec uvicorn mealie.app:app --host 0.0.0.0 --forwarded-allow-ips=$hostip --port $GUNICORN_PORT
|
||||
fi
|
||||
HOST_IP=`/sbin/ip route|awk '/default/ { print $3 }'`
|
||||
|
||||
exec python /app/mealie/main.py
|
||||
|
||||
BIN
docs/docs/assets/img/n8n/n8n-cred-app.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
docs/docs/assets/img/n8n/n8n-cred-connection.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
docs/docs/assets/img/n8n/n8n-mealie-backup.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
docs/docs/assets/img/n8n/n8n-workflow-auth.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/docs/assets/img/n8n/n8n-workflow-import.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
386
docs/docs/assets/other/n8n/n8n-mealie-backup.json
Normal file
@@ -0,0 +1,386 @@
|
||||
{
|
||||
"name": "Mealie Backup",
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"rule": {
|
||||
"interval": [
|
||||
{}
|
||||
]
|
||||
}
|
||||
},
|
||||
"id": "2ec440b4-0668-4bc0-aa66-4023d6379f28",
|
||||
"name": "Schedule Trigger",
|
||||
"type": "n8n-nodes-base.scheduleTrigger",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
240,
|
||||
660
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "https://mealie.example/api/admin/backups",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"options": {}
|
||||
},
|
||||
"id": "235f26f7-0f45-479e-a7e3-bf8cda7c8426",
|
||||
"name": "Run Backup ",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4.1,
|
||||
"position": [
|
||||
520,
|
||||
520
|
||||
],
|
||||
"notesInFlow": false,
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
"id": "GSL12tNi3MPvTZux",
|
||||
"name": "Mealie API"
|
||||
}
|
||||
},
|
||||
"notes": "Send an API call to run the backup"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"method": "POST",
|
||||
"url": "https://ntfy.example/backups",
|
||||
"sendHeaders": true,
|
||||
"headerParameters": {
|
||||
"parameters": [
|
||||
{
|
||||
"name": "Title",
|
||||
"value": "Meale Backup Failure"
|
||||
},
|
||||
{
|
||||
"name": "Priority",
|
||||
"value": "urgent"
|
||||
},
|
||||
{
|
||||
"name": "Tags",
|
||||
"value": "warning"
|
||||
},
|
||||
{
|
||||
"name": "Actions",
|
||||
"value": "view, Open Mealie, https://mealie.example/admin/backups; view, Open n8n, https://n8n.example"
|
||||
}
|
||||
]
|
||||
},
|
||||
"sendBody": true,
|
||||
"contentType": "raw",
|
||||
"body": "\"Full Panic!\"",
|
||||
"options": {}
|
||||
},
|
||||
"id": "40ba81a5-5741-4b15-98af-1a9e6b34f997",
|
||||
"name": "Ntfy Warning",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4.1,
|
||||
"position": [
|
||||
1000,
|
||||
520
|
||||
],
|
||||
"onError": "continueRegularOutput"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"url": "https://mealie.example/api/admin/backups",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"options": {}
|
||||
},
|
||||
"id": "b75571d0-d926-440c-897f-55b89c6a5080",
|
||||
"name": "Get all backups",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4.1,
|
||||
"position": [
|
||||
520,
|
||||
820
|
||||
],
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
"id": "GSL12tNi3MPvTZux",
|
||||
"name": "Mealie API"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"fieldToSplitOut": "imports",
|
||||
"options": {}
|
||||
},
|
||||
"id": "943d0e83-682b-4500-9faf-53284cfb02c6",
|
||||
"name": "Split Out",
|
||||
"type": "n8n-nodes-base.splitOut",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
720,
|
||||
820
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"jsCode": "// Get input data\nconst inputData = items.map(item => item.json);\n\n// Sort the data based on the 'date' field in descending order\ninputData.sort((a, b) => new Date(b.date) - new Date(a.date));\n\n// Get all records except the latest 7\nconst allExceptLatest7 = inputData.slice(7);\n\n// Map the output data back to the required format\nreturn allExceptLatest7.map(record => ({ json: record }));\n"
|
||||
},
|
||||
"id": "64eae81d-fdb6-44f7-9a2d-eff8d1763281",
|
||||
"name": "Code",
|
||||
"type": "n8n-nodes-base.code",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
860,
|
||||
820
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"method": "DELETE",
|
||||
"url": "=https://mealie.example/api/admin/backups/{{ $json.name }}",
|
||||
"authentication": "genericCredentialType",
|
||||
"genericAuthType": "httpHeaderAuth",
|
||||
"options": {}
|
||||
},
|
||||
"id": "1148eeb8-4860-46df-8f61-0e85ea1e0e89",
|
||||
"name": "Delete Oldies",
|
||||
"type": "n8n-nodes-base.httpRequest",
|
||||
"typeVersion": 4.1,
|
||||
"position": [
|
||||
1040,
|
||||
820
|
||||
],
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
"id": "GSL12tNi3MPvTZux",
|
||||
"name": "Mealie API"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "Sends API Call to run backup",
|
||||
"height": 225,
|
||||
"width": 226,
|
||||
"color": 4
|
||||
},
|
||||
"id": "cd2cb5db-87c1-40d8-a746-e61ace231987",
|
||||
"name": "Sticky Note",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
460,
|
||||
460
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "Is there an error?",
|
||||
"height": 225,
|
||||
"width": 231,
|
||||
"color": 3
|
||||
},
|
||||
"id": "0bebecbe-903e-4a69-bb1a-35619e68b540",
|
||||
"name": "Sticky Note1",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
700,
|
||||
460
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "Send alert to NTFY",
|
||||
"height": 225,
|
||||
"width": 229
|
||||
},
|
||||
"id": "0b732adb-8a84-456d-b26d-5fc5ee5a4cae",
|
||||
"name": "Sticky Note2",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
940,
|
||||
460
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "Gets all backups in Mealie",
|
||||
"height": 225,
|
||||
"width": 226,
|
||||
"color": 4
|
||||
},
|
||||
"id": "99c6886b-6a07-4b51-b395-d4bbcbde7d18",
|
||||
"name": "Sticky Note3",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
460,
|
||||
760
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "Splits the data, and parses the output",
|
||||
"height": 225,
|
||||
"width": 281
|
||||
},
|
||||
"id": "549555f8-0aed-42c0-9693-9c0d93902796",
|
||||
"name": "Sticky Note4",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
700,
|
||||
760
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "Deletes all but the last 7 backups",
|
||||
"height": 225,
|
||||
"width": 229
|
||||
},
|
||||
"id": "bcc5f0ba-73e9-42d7-b01b-c32f9f69f2f7",
|
||||
"name": "Sticky Note5",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1000,
|
||||
760
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "Run every day a 01:00",
|
||||
"height": 225,
|
||||
"width": 226,
|
||||
"color": 4
|
||||
},
|
||||
"id": "ce797062-d727-43e3-a27f-e29b13ad3c9a",
|
||||
"name": "Sticky Note6",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
180,
|
||||
600
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"conditions": {
|
||||
"options": {
|
||||
"caseSensitive": true,
|
||||
"leftValue": "",
|
||||
"typeValidation": "strict"
|
||||
},
|
||||
"conditions": [
|
||||
{
|
||||
"id": "8b00bb85-827f-4f2f-813e-db0d25e927d3",
|
||||
"leftValue": "={{ $json.error }}",
|
||||
"rightValue": "",
|
||||
"operator": {
|
||||
"type": "boolean",
|
||||
"operation": "true",
|
||||
"singleValue": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"combinator": "and"
|
||||
},
|
||||
"options": {}
|
||||
},
|
||||
"id": "fefd3e8b-9b71-490a-82e3-25e5468a4135",
|
||||
"name": "Error?",
|
||||
"type": "n8n-nodes-base.filter",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
760,
|
||||
520
|
||||
]
|
||||
}
|
||||
],
|
||||
"pinData": {},
|
||||
"connections": {
|
||||
"Schedule Trigger": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Run Backup ",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
},
|
||||
{
|
||||
"node": "Get all backups",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Run Backup ": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Error?",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Get all backups": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Split Out",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Split Out": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Code",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Code": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Delete Oldies",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Error?": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Ntfy Warning",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"active": false,
|
||||
"settings": {
|
||||
"executionOrder": "v1"
|
||||
},
|
||||
"versionId": "68e3e469-3ddb-4838-b09d-3c69fdd851f5",
|
||||
"meta": {
|
||||
"templateCredsSetupCompleted": true,
|
||||
"instanceId": "630eefaa8c490b9c5221d83a182af6450c2c3efaf4b580b8ac348631abfe1aeb"
|
||||
},
|
||||
"id": "whloxeXkdBWWi2Uj",
|
||||
"tags": []
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24">
|
||||
<path fill="rgb(229,131,37)" d="M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z" />
|
||||
</svg>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 259 B After Width: | Height: | Size: 260 B |
@@ -1,88 +0,0 @@
|
||||
# v0.1.0 - Initial Beta
|
||||
|
||||
### Bug Fixes
|
||||
- Fixed Can't delete recipe after changing name - Closes Closes #67
|
||||
- Fixed No image when added by URL, and can't add an image - Closes Closes #66
|
||||
- Fixed Images saved with no way to delete when add recipe via URL fails - Closes Closes #43
|
||||
|
||||
### Features
|
||||
- Additional Language Support
|
||||
- Improved deployment documentation
|
||||
- Additional database! SQlite is now supported! - Closes #48
|
||||
- All site data is now backed up.
|
||||
- Support for Prep Time, Total Time, and Cook Time field - Closes #63
|
||||
- New backup import process with support for themes and site settings
|
||||
- **BETA** ARM support! - Closes #69
|
||||
|
||||
### Code / Developer Improvements
|
||||
- Unified Database Access Layers
|
||||
- Poetry / pyproject.toml support over requirements.txt
|
||||
- Local development without database is now possible!
|
||||
- Local mkdocs server added to docker-compose.dev.yml
|
||||
- Major code refactoring to support new database layer
|
||||
- Global variable refactor
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
- Internal docker port is now 80 instead of 9000. You MUST remap the internal port to connect to the UI.
|
||||
|
||||
!!! error "Breaking Changes"
|
||||
As I've adopted the SQL database model I find that using 2 different types of databases will inevitably hinder development. As such after release v0.1.0 support for mongoDB will no longer be available. Prior to upgrading to v0.2.0 you will need to export your site and import after updating. This should be a painless process and require minimal intervention on the users part. Moving forward we will do our best to minimize changes that require user intervention like this and make updates a smooth process.
|
||||
|
||||
|
||||
## v0.0.2 - Pre-release Second Patch
|
||||
A quality update with major props to [zackbcom](https://github.com/zackbcom) for working hard on making the theming just that much better!
|
||||
|
||||
### Bug Fixes
|
||||
- Fixed empty backup failure without markdown template
|
||||
- Fixed opacity issues with marked steps - [mtoohey31](https://github.com/mtoohey31)
|
||||
- Fixed hot-reloading development environment - [grssmnn](https://github.com/grssmnn)
|
||||
- Fixed recipe not saving without image - Closes #7 + Closes #54
|
||||
- Fixed parsing error on image property null - Closes #43
|
||||
|
||||
### General Improvements
|
||||
- Added Confirmation component to deleting recipes - [zackbcom](https://github.com/zackbcom)
|
||||
- Updated Theme backend - [zackbcom](https://github.com/zackbcom)
|
||||
- Added Persistent storage to vuex - [zackbcom](https://github.com/zackbcom)
|
||||
- General Color/Theme Improvements
|
||||
- More consistent UI
|
||||
- More minimalist coloring
|
||||
- Added API key extras to Recipe Data - [See Documentation](/api/api-usage/)
|
||||
- Users can now add custom json key/value pairs to all recipes via the editor for access in 3rd part applications. For example users can add a "message" field in the extras that can be accessed on API calls to play a message over google home.
|
||||
- Improved image rendering (nearly x2 speed)
|
||||
- Improved documentation + API Documentation
|
||||
- Improved recipe parsing - Closes #51
|
||||
- User feedback on backup importing
|
||||
|
||||
## v0.0.1 - Pre-release Patch
|
||||
### General
|
||||
- Updated Favicon
|
||||
- Renamed Frontend Window
|
||||
- Added Debug folder to dump scraper data prior to processing.
|
||||
|
||||
### Recipes
|
||||
- Added user feedback on bad URL
|
||||
- Better backend data validation for updating recipes, avoid small syntax errors corrupting database entry. [Closes #8](https://github.com/mealie-recipes/mealie/issues/8)
|
||||
- Fixed spacing Closes while editing new recipes in JSON
|
||||
|
||||
## v0.0.0 - Initial Pre-release
|
||||
The initial pre-release. It should be semi-functional but does not include a lot of user feedback You may notice errors that have no user feedback and have no idea what went wrong.
|
||||
|
||||
### Recipes
|
||||
- Automatic web scrapping for common recipe platforms
|
||||
- Interactive API Documentation thanks to [FastAPI](https://fastapi.tiangolo.com/) and [Swagger](https://petstore.swagger.io/)
|
||||
- UI Recipe Editor
|
||||
- JSON Recipe Editor in browser
|
||||
- Custom tags and categories
|
||||
- Rate recipes
|
||||
- Add notes to recipes
|
||||
- Migration From Other Platforms
|
||||
- Chowdown
|
||||
### Meal Planner
|
||||
- Random Meal plan generation based off categories
|
||||
- Expose notes in the API to allow external applications to access relevant information for meal plans
|
||||
|
||||
### Database Import / Export
|
||||
- Easily Import / Export your recipes from the UI
|
||||
- Export recipes in markdown format for universal access
|
||||
- Use the default or a custom jinja2 template
|
||||
@@ -1,72 +0,0 @@
|
||||
# v0.2.1 - Hot Fixes!
|
||||
|
||||
### Features and Improvements
|
||||
- Fixes upload image error when no photo was scrapped
|
||||
- Fixes no last_recipe.json not updating
|
||||
- Added markdown rendering for notes
|
||||
- New notifications
|
||||
- Minor UI improvements
|
||||
- Recipe editor refactor
|
||||
- Settings/Theme models refactor
|
||||
|
||||
### Development / Misc
|
||||
- Added async file response for images, downloading files.
|
||||
- Breakup recipe view component
|
||||
|
||||
# v0.2.0 - Now with Test!
|
||||
This is, what I think, is a big release! Tons of new features and some great quality of life improvements with some additional features. You may find that I made promises to include some fixes/features in v0.2.0. The short of is I greatly underestimated the work needed to refactor the database to a usable state and integrate categories in a way that is useful for users. This shouldn't be taken as a sign that I'm dropping those feature requests or ignoring them. I felt it was better to push a release in the current state rather than drag on development to try and fulfil all of the promises I made.
|
||||
|
||||
!!! warning "Upgrade Process"
|
||||
Database Breaks! I have not yet implemented a database migration service. As such, upgrades cannot be done by simply pulling the image. You must first export your recipes, update your deployment, and then import your recipes. This pattern is likely to be how upgrades take place prior to v1.0. After v1.0 migrations will be done automatically.
|
||||
|
||||
### Bug Fixes
|
||||
- Remove ability to save recipe with no name
|
||||
- Fixed data validation error on missing parameters
|
||||
- Fixed failed database initialization at startup - Closes #98
|
||||
- Fixed misaligned text on various cards
|
||||
- Fixed bug that blocked opening links in new tabs - Closes #122
|
||||
- Fixed router link bugs - Closes #122
|
||||
- Fixed navigation on keyboard selection - Closes #139
|
||||
|
||||
### Features and Improvements
|
||||
- 🐳 Dockerfile now 1/5 of the size!
|
||||
- 🌎 UI Language Selection + Additional Supported Language
|
||||
- **Home Page**
|
||||
- By default your homepage will display only the recently added recipes. You can configured sections to show on the home-screen based of categories on the settings page.
|
||||
- A new sidebar is now shown on the main page that lists all the categories in the database. Clicking on them navigates into a page that shows only recipes.
|
||||
- Basic Sort functionality has been added. More options are on the way!
|
||||
- **Meal Planner**
|
||||
- Improved Search (Fuzzy Search)
|
||||
- New Scheduled card support
|
||||
- **Recipe Editor**
|
||||
- Ingredients are now sortable via drag-and-drop
|
||||
- Known categories now show up in the dropdown - Closes 83
|
||||
- Initial code for data validation to prevent errors
|
||||
- **Migrations**
|
||||
- Card based redesign
|
||||
- Upload from the UI
|
||||
- Unified Chowdown / Nextcloud import process. (Removed Git as a dependency)
|
||||
- **API**
|
||||
- Category and Tag endpoints added
|
||||
- Major Endpoint refactor
|
||||
- Improved API documentation
|
||||
- Link to your Local API is now on your `/settings/site`. You can use it to explore your API.
|
||||
|
||||
- **Style**
|
||||
- Continued work on button/style unification
|
||||
- Adding icons to buttons
|
||||
- New Color Theme Picker UI
|
||||
|
||||
### Development
|
||||
- Fixed Vetur config file. Autocomplete in VSCode works!
|
||||
- File/Folder restructuring
|
||||
- Added Prettier config
|
||||
- Fixed incorrect layout code
|
||||
- FastAPI Route tests for major operations - WIP (shallow testing)
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
!!! error "Breaking Changes"
|
||||
- API endpoints have been refactored to adhere to a more consistent standard. This is a WIP and more changes are likely to occur.
|
||||
- Officially Dropped MongoDB Support
|
||||
- Database Breaks! We have not yet implemented a database migration service. As such, upgrades cannot be done by simply pulling the image. You must first export your recipes, update your deployment, and then import your recipes. This pattern is likely to be how upgrades take place prior to v1.0. After v1.0 migrations will be done automatically.
|
||||
@@ -1,29 +0,0 @@
|
||||
# v0.3.0
|
||||
|
||||
### Bug Fixes
|
||||
- Fixed open search on `/` when in input. - Closes #174
|
||||
- Error when importing recipe: KeyError: '@type' - Closes #145
|
||||
- Fixed Import Issue - bhg.com - Closes #138
|
||||
- Scraper not working with recipe containing HowToSection - Closes #73
|
||||
|
||||
### Features and Improvements
|
||||
- Improved Nextcloud Imports
|
||||
- Improved Recipe Parser!
|
||||
- Open search with `/` hotkey!
|
||||
- Database and App version are now split
|
||||
- Unified and improved snackbar notifications
|
||||
- New Category/Tag endpoints to filter all recipes by Category or Tag
|
||||
- Category sidebar now has show/hide behavior on mobile
|
||||
- Settings menu on mobile is improved
|
||||
- **Meal Planner**
|
||||
- You can now restrict recipe categories used for random meal-plan creation in the settings menu
|
||||
- Recipe picker dialog will now display recipes when the search bar is empty
|
||||
- Minor UI improvements
|
||||
- **Shopping lists!** Shopping list can now be generated from a meal plan. Currently ingredients are split by recipes or there is a beta feature that attempts to sort them by similarity.
|
||||
- **Recipe Viewer**
|
||||
- Categories, Tags, and Notes will now be displayed below the steps on smaller screens
|
||||
- **Recipe Editor**
|
||||
- Text areas now auto grow to fit content
|
||||
- Description, Steps, and Notes support Markdown! This includes inline html in Markdown.
|
||||
- **Imports**
|
||||
- A revamped dialog has been created to provide more information on restoring backups. Exceptions on the backend are now sent to the frontend and are easily viewable to see what went wrong when you restored a backup. This functionality will be ported over to the migrations in a future release.
|
||||
@@ -1,86 +0,0 @@
|
||||
# v0.4.0 Whoa, What a Release!
|
||||
|
||||
**App Version: v0.4.0**
|
||||
|
||||
**Database Version: v0.4.0**
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
!!! error "Breaking Changes"
|
||||
|
||||
#### Database
|
||||
A new database will be created. You must export your data and then import it after upgrading.
|
||||
|
||||
#### Site Settings
|
||||
With the addition of group settings and a re-write of the database layer of the application backend, there is no migration path for your current site settings. Webhooks Settings, Meal Plan Categories are now managed by groups. Site settings, mainly homepage settings, are now site specific and managed by administrators. When upgrading be sure to uncheck the settings when importing your old data.
|
||||
|
||||
#### ENV Variables
|
||||
Names have been changed to be more consistent with industry standards. See the [Installation Page](/mealie/getting-started/install/) for new parameters.
|
||||
|
||||
## Bug Fixes
|
||||
- Fixed Search Results Limited to 100 - #198
|
||||
- Fixed recipes from marmiton.org not fully scrapped - #196
|
||||
- Fixed Unable to get a page to load - #194
|
||||
- Fixed Recipe's from Epicurious don't upload. - #193
|
||||
- Fixed Edited blank recipe in meal plan is not saved - #184
|
||||
- Fixed Create a new meal plan allows selection of an end date that is prior to the start date - #183
|
||||
- Fixed Original URL not saved to imported recipe in 0.3.0-dev - #183
|
||||
- Fixed "IndexError: list index out of range" when viewing shopping list for meal plan containing days without a recipe selected - #178
|
||||
|
||||
## Features and Improvements
|
||||
|
||||
### General
|
||||
- Documentation Rewrite
|
||||
- [New Demo Site!](https://mealie-demo.hay-kot.dev/)
|
||||
- New Documentation
|
||||
- Landing Page
|
||||
- Custom Caddy Configuration
|
||||
- User Management
|
||||
- Introduction
|
||||
- Updated Documentation
|
||||
- Everything!
|
||||
- The API Reference is now better embedded inside of the docs
|
||||
- New default external port in documentation (Port 9000 -> 9925). This is only the port exposed by the host to the docker image. It doesn't change any existing functionality.
|
||||
|
||||
### User Authentication
|
||||
- Authentication! Tons of stuff went into creating a flexible authentication platform for a lot of different use cases. Review the documentation for more information on how to use the authentication, and how everything works together. More complex management of recipes and user restrictions are in the works, but this is a great start! Some key features include
|
||||
- Sign Up Links
|
||||
- Admin and User Roles
|
||||
- Password Change
|
||||
- Group Management
|
||||
- Create/Edit/Delete Restrictions
|
||||
|
||||
### Custom Pages
|
||||
- You can now create custom pages that are displayed on the homepage sidebar to organize categories of recipes into pages. For example, if you have several categories that encompass "Entrée" you can group all those categories together under the "Entrée" page. See [Building Pages](/mealie/site-administration/building-pages/) for more information.
|
||||
!!! tip
|
||||
Note that this replaces the behavior of automatically adding categories to the sidebar.
|
||||
|
||||
### UI Improvements
|
||||
- Completed Redesign of the Admin Panel
|
||||
- Profile Pages
|
||||
- Side Panel Menu
|
||||
- Improved UI for Recipe Search
|
||||
- Language selector is now displayed on all pages and does not require an account
|
||||
|
||||
### Recipe Data
|
||||
- Recipe Database Refactoring. Tons of new information is now stored for recipes in the database. Not all is accessible via the UI, but it's coming.
|
||||
- Nutrition Information
|
||||
- calories
|
||||
- fatContent
|
||||
- fiberContent
|
||||
- proteinContent
|
||||
- sodiumContent
|
||||
- sugarContent
|
||||
- recipeCuisine has been added
|
||||
- "categories" has been migrated to "recipeCategory" to adhere closer to the standard schema
|
||||
- "tool" - a list of tools used for the recipe
|
||||
|
||||
### Behind the Scenes
|
||||
- Removed CDN dependencies
|
||||
- Database Model Refactoring
|
||||
- Import/Export refactoring
|
||||
- File/Folder Name Refactoring
|
||||
- Development is now easier with a makefile
|
||||
- Mealie is now a proper package using poetry
|
||||
- Test refactoring
|
||||
- Test Coverage 83% up from 75%!
|
||||
@@ -1,35 +0,0 @@
|
||||
# v0.4.1
|
||||
|
||||
**App Version: v0.4.1**
|
||||
|
||||
**Database Version: v0.4.0**
|
||||
|
||||
!!! error "Breaking Changes"
|
||||
|
||||
#### Recipe Images
|
||||
While it *shouldn't* be a breaking change, I feel it is important to note that you may experience issues with the new image migration. Recipe images are now minified, this is done on start-up, import, migration, and when a new recipe is created. The initial boot or load may be a bit slow if you have lots of recipes but you likely won't notice. What you may notice is that if your recipe slug and the image name do not match, you will encounter issues with your images showing up. This can be resolved by finding the image directory and rename it to the appropriate slug. I did fix multiple edge cases, but it is likely more exists. As always make a backup before you update!
|
||||
|
||||
On the plus side, this comes with a huge performance increase! 🎉
|
||||
|
||||
- Add markdown support for ingredients - Resolves #32
|
||||
- Ingredients editor improvements
|
||||
- Fix Tags/Categories render problems on recipes
|
||||
- Tags redirect to new tag pages
|
||||
- Categories redirect to category pages
|
||||
- Fix Backup download blocked by authentication
|
||||
- Random meal-planner will no longer duplicate recipes unless no other options
|
||||
- New Quick Week button to generate next 5 day week of recipe slots.
|
||||
- Minor UI tweaks
|
||||
- Recipe Cards now display 2 recipe tags
|
||||
- Recipe images are now minified. This comes with a serious performance improvement. On initial startup you may experience some delays. Images are migrated to the new structure on startup, depending on the size of your database this can take some time.
|
||||
- Note that original images are still kept for large displays like on the individual recipe pages.
|
||||
- A smaller image is used for recipe cards
|
||||
- A 'tiny' image is used for search images.
|
||||
- Advanced Search Page. You can now use the search page to filter recipes to include/exclude tags and categories as well as select And/Or matching criteria.
|
||||
- Added link to advanced search on quick search
|
||||
- Better support for NextCloud imports
|
||||
- Translate keywords to tags
|
||||
- Fix rollback on failure
|
||||
- Recipe Tag/Category Input components have been unified and now share a single way to interact. To add a new category in the recipe editor you need to click to '+' icon next to the input and fill out the form. This is the same for adding a Tag.
|
||||
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
# v0.4.2
|
||||
|
||||
**App Version: v0.4.2**
|
||||
|
||||
**Database Version: v0.4.0**
|
||||
|
||||
!!! error "Breaking Changes"
|
||||
1. With a recent refactor some users been experiencing issues with an environmental variable not being set correct. If you are experiencing issues, please provide your comments [Here](https://github.com/mealie-recipes/mealie/issues/281).
|
||||
|
||||
2. If you are a developer, you may experience issues with development as a new environmental variable has been introduced. Setting `PRODUCTION=false` will allow you to develop as normal.
|
||||
|
||||
## Bug Fixes
|
||||
- Fixed Initialization script (v0.4.1a Hot Fix) - Closes #274
|
||||
- Fixed nested list error on recipe scrape - Closes #306
|
||||
- Fixed ingredient checkboxes - Closes #304
|
||||
- Removed link on recent - Closes #297
|
||||
- Categories sidebar is auto generated if no pages are created - Closes #291
|
||||
- Fix tag issues on creating custom pages - Closes #290
|
||||
- Validate paths on export - Closes #275
|
||||
- Walk Nextcloud import directory - Closes #254
|
||||
|
||||
## General Improvements
|
||||
- Improved Nextcloud Migration. Mealie will now walk the directories in a zip file looking for directories that match the pattern of a Nextcloud Recipe. Closes #254
|
||||
- Rewrite Keywords to Tag Fields
|
||||
- Rewrite url to orgURL
|
||||
- Improved Chowdown Migration
|
||||
- Migration report is now similar to the Backup report
|
||||
- Tags/Categories are now title cased on import "dinner" -> "Dinner"
|
||||
- Depreciate `ENV` variable to `PRODUCTION`
|
||||
- Set `PRODUCTION` env variable to default to true
|
||||
- Unify Logger across the backend
|
||||
- mealie.log and last_recipe.json are now downloadable from the frontend from the /admin/about
|
||||
- New download schema where you request a token and then use that token to hit a single endpoint to download a file. This is a notable change if you are using the API to download backups.
|
||||
- Recipe images can now be added directly from a URL - [See #117 for details](https://github.com/mealie-recipes/mealie/issues/117)
|
||||
@@ -1,14 +0,0 @@
|
||||
# v0.4.3
|
||||
|
||||
**App Version: v0.4.3**
|
||||
|
||||
**Database Version: v0.4.0**
|
||||
|
||||
## Bug Fixes
|
||||
- Fix Upload error for Migrations
|
||||
- Fixes #315 - Cannot select another language
|
||||
- Fixes #314 - case-sensitive emails
|
||||
- Fixes #312 - Profile Image Reload
|
||||
|
||||
## Improvements
|
||||
- New TOKEN_TIME and DEFAULT_EMAIL env variables
|
||||
@@ -1,129 +0,0 @@
|
||||
# v0.5.0 Too Many Changes!
|
||||
|
||||
**App Version: v0.5.0**
|
||||
|
||||
**Database Version: v0.5.0**
|
||||
|
||||
## Breaking Changes
|
||||
|
||||
!!! error "Breaking Changes"
|
||||
|
||||
#### Database
|
||||
Database version has been bumped from v0.4.x -> v0.5.0. You will need to export and import your data. Moving forward, we will be using database migrations (BETA) to do this automatically. Note that you still must backup your data. If you don't, it's entirely possible something may go wrong and you could lose your data on upgrade.
|
||||
|
||||
#### Image Directory
|
||||
the /data/img directory has been depreciated. All images are now stored in the /recipes/{slug}/image directory. Images should be migrated automatically, but you may experience issues related to this change.
|
||||
|
||||
#### API Usage
|
||||
If you have been using the API directly, many of the routes and status codes have changed. You may experience issues with directly consuming the API.
|
||||
|
||||
#### Arm/v7 Support
|
||||
Mealie will no longer build in CI/CD due to a issue with the rust compiler on 32 bit devices. You can reference [this issue on the matrix-org/synapse](https://github.com/matrix-org/synapse/issues/9403) Github page that are facing a similar issue. You may still be able to build the docker image you-self.
|
||||
|
||||
!!! warning "Potential Data Loss"
|
||||
With this release comes a major rework of how files are stored on disk and where things belong. Migration of files should be done automatically. We have tested extensively with many different backups and user bases and have found that no one experienced data-loss. HOWEVER, with all the major changes that have occurred, it is vital that to prevent any data-loss you must create a backup and store that backup outside of your mealie instance. If you do not do this, you may lose your data.
|
||||
|
||||
## Bug Fixes
|
||||
- Fixed #25 - Allow changing rating without going into edit
|
||||
- Fixed #475 - trim whitespace on login
|
||||
- Fixes #435 - Better Email Regex
|
||||
- Fixed #428 - Meal Planner now works on iOS devices
|
||||
- Fixed #419 - Typos
|
||||
- Fixed #418 - You can now "export" shopping lists
|
||||
- Fixed #356 - Shopping List items are now grouped
|
||||
- Fixed #329 - Fixed profile image not loading
|
||||
- Fixed #461 - Proper JSON serialization on webhooks
|
||||
- Fixed #332 - Language settings are saved for one browser
|
||||
- Fixes #281 - Slow Handling of Large Sets of Recipes
|
||||
- Fixed #356 - Shopping lists generate duplicate items
|
||||
- Fixed #271 - Slow handling of larger data sets
|
||||
- Fixed #472, #469, #458, #456 - Improve Recipe Parser
|
||||
|
||||
## Features and Improvements
|
||||
|
||||
### Highlights
|
||||
- Recipe Parser
|
||||
- Recipes can now be imported with a bookmarklet!
|
||||
- Significant improvement in supported sites with the new [Recipe Scraper Library](https://github.com/hhursev/recipe-scrapers)
|
||||
- UI Debugging now available at `/recipes/debugger`
|
||||
- Better error messages on failure
|
||||
- ⚠️ last_recipe.json is now depreciated
|
||||
- Beta Support for Postgres! 🎉 See the getting started page for details
|
||||
- Recipe Features
|
||||
- New button bar for editors with improved accessibility and performance
|
||||
- Step Sections now supported
|
||||
- Recipe Assets
|
||||
- Add Asset image to recipe step
|
||||
- Additional View Settings.
|
||||
- Better print support
|
||||
- New Toolbox Page!
|
||||
- Bulk assign categories and tags by keyword search
|
||||
- Title case all Categories or Tags with 1 click
|
||||
- Create/Rename/Delete Operations for Tags/Categories
|
||||
- Remove Unused Categories or Tags with 1 click
|
||||
- Recipe Cards now have a menu button for quick actions!
|
||||
- Edit
|
||||
- Delete
|
||||
- Integrated Share with supported OS/Browsers
|
||||
- Print
|
||||
- New Profile Dashboard!
|
||||
- Edit Your Profile
|
||||
- Create/Edit Themes
|
||||
- View other users in your Group
|
||||
- See what's for dinner
|
||||
- Manage Long Live API Tokens (New)
|
||||
- New Admin Dashboard! 🎉
|
||||
- Now you can get some insight on your application with application statistics and events.
|
||||
- See uncategorized/untagged recipes and organize them!
|
||||
- Backup/Restore right from your dashboard
|
||||
- See server side events. Now you can know who deleted your favorite recipe!
|
||||
- New Event Notifications through the Apprise Library
|
||||
- Get notified when specific server side events occur
|
||||
|
||||
### Meal Planner
|
||||
- Multiple Recipes per day
|
||||
- Supports meals without recipes (Enter title and description)
|
||||
- Generate share-link from created meal-planners
|
||||
- Shopping lists can be directly generated from the meal plan
|
||||
|
||||
### General
|
||||
- User can now favorite recipes
|
||||
- New 'Dark' Color Theme Packaged with Mealie
|
||||
- Updated Recipe Card Sections Toolbar
|
||||
- New Sort Options (They work this time!)
|
||||
- Alphabetical
|
||||
- Rating
|
||||
- Created Date
|
||||
- Updated Date
|
||||
- Shuffle (Random Sort)
|
||||
- New 'Random' Recipe button on recipe sections. Random recipes are selected from the filtered results below. For example, on the "Cakes" category page, you will only get recipes in the "Cakes" category.
|
||||
- Rating can be updated without entering the editor - Closes #25
|
||||
- Updated recipe editor styles and moved notes to below the steps.
|
||||
- Redesigned search bar
|
||||
- 'Dinner this week' shows a warning when no meal is planned yet
|
||||
- 'Dinner today' shows a warning when no meal is planned yet
|
||||
- More localization
|
||||
- Start date for Week is now selectable
|
||||
- Languages are now managed through Crowdin
|
||||
- Application Bar was Rewritten
|
||||
- Sidebar can now be toggled everywhere.
|
||||
- New and improved mobile friendly bottom bar
|
||||
- Improved styling for search bar in desktop
|
||||
- Improved search layout on mobile
|
||||
- Profile image now shown on all sidebars
|
||||
- Switched from Flash Messages to Snackbar (Removed dependency)
|
||||
|
||||
### Performance
|
||||
- Images are now served up by the Caddy increase performance and offloading some loads from the API server
|
||||
- Requesting all recipes from the server has been rewritten to refresh less often and manage client side data better.
|
||||
- All images are now converted to .webp for better compression
|
||||
|
||||
### Behind the Scenes
|
||||
- The database layer has been added for future recipe scaling.
|
||||
- Black and Flake8 now run as CI/CD checks
|
||||
- New debian based docker image
|
||||
- Unified Sidebar Components
|
||||
- Refactor UI components to fit Vue best practices (WIP)
|
||||
- The API returns more consistent status codes
|
||||
- The API returns error code instead of error text when appropriate
|
||||
- ⚠️ May cause side-effects if you were directly consuming the API
|
||||
@@ -1,11 +0,0 @@
|
||||
# v0.5.1
|
||||
|
||||
**App Version: v0.5.1**
|
||||
|
||||
**Database Version: v0.5.0**
|
||||
|
||||
|
||||
## Bug Fixes
|
||||
- Fixed #538 - Missing Ingredients on Editor
|
||||
- Fixed error on webhooks for new groups
|
||||
- Fixed various icons references
|
||||
@@ -1,65 +0,0 @@
|
||||
# v0.5.2 - DRAFT
|
||||
|
||||
**App Version: v0.5.2**
|
||||
|
||||
**Database Version: v0.5.0**
|
||||
|
||||
## Bug Fixes
|
||||
- Fixed #617 - Section behavior when adding a step
|
||||
- Fixed #615 - Recipe Settings are not available when creating new recipe
|
||||
- Fixed #625 - API of today's image returns strange characters
|
||||
- Fixed [#590](https://github.com/mealie-recipes/mealie/issues/590) - Duplicate Events when using Gunicorn Workers
|
||||
|
||||
## Features and Improvements
|
||||
|
||||
### General
|
||||
- Recipe Instructions now collapse when checked
|
||||
- Default recipe settings can be set through ENV variables
|
||||
- Recipe Ingredient lists can now container ingredient sections.
|
||||
- You can now download and upload individual recipes
|
||||
|
||||
|
||||
### Localization
|
||||
|
||||
Huge thanks to [@sephrat](https://github.com/sephrat) for all his work on the project. He's very consistent in his contributions to the project and nearly every release has had some of his code in it! Here's some highlights from this release
|
||||
|
||||
- Lazy Load Translations (Huge Performance Increase!)
|
||||
- Tons of localization additions all around the site.
|
||||
- All of the work that goes into managing and making Crowdin a great feature the application
|
||||
|
||||
#### Here a list of contributors on Crowding who make Mealie possible in different locals
|
||||
|
||||
| Name | Languages | Translated (Words) | Target Words |
|
||||
| ---------------------------- | ------------------ | :----------------: | :----------: |
|
||||
| retmas-gh | Polish | 550 | 625 |
|
||||
| startos | Italian | 310 | 322 |
|
||||
| CMBoii | Spanish | 256 | 291 |
|
||||
| sephrat | French | 255 | 296 |
|
||||
| Daniel Tildeman (tildeman) | Swedish | 233 | 228 |
|
||||
| Rourke | Dutch | 216 | 214 |
|
||||
| Andreas Waschinski (Wascha) | German | 207 | 202 |
|
||||
| wengtad | Chinese Simplified | 176 | 343 |
|
||||
| Matthias Borremans (MrBorri) | Dutch | 96 | 89 |
|
||||
| Adam Syndoman (pypckompsite) | Polish | 68 | 65 |
|
||||
| JonasSchubert | German | 22 | 23 |
|
||||
| ThrawnJL | Danish | 7 | 7 |
|
||||
| NicholasBrody | Dutch | 7 | 7 |
|
||||
| Giel Janssens (gieljnssns) | Dutch | 4 | 4 |
|
||||
| kentora | Danish | 3 | 2 |
|
||||
|
||||
|
||||
|
||||
### Docker
|
||||
|
||||
#### Huge thanks to [@wengtad](https://github.com/wengtad) for all his work on improving the deployment with docker.
|
||||
|
||||
- Optimize Docker Dev Size (Frontend: from ~1.52GB to ~429MB | API: from ~657MB to ~380MB)
|
||||
- Optimize Docker Prod Size (from ~542MB to ~373MB)
|
||||
- Add Gunicorn
|
||||
- Add Gunicorn and Webworkers to Dockerfile #550
|
||||
- Add Docs for Gunicorn
|
||||
- Add PUID/PGID to Docker. Fixes Initialization scripts fail to run when not executing as root user inside container #350,
|
||||
- Not able to run correctly in docker if user permissions are specified #429
|
||||
- Merge Dockerfile.dev into Dockerfile (dev shared same base together with prod)
|
||||
- Add Docs for PUID/PGID
|
||||
- Add Docker healthcheck (for this is not necessary, I could remove if you want)
|
||||
@@ -1,178 +0,0 @@
|
||||
## v1.0.0b - 2022-05-22
|
||||
|
||||
- Bump Dependencies
|
||||
- Recipe Scrapers to 13.28
|
||||
- Jinja2 to 3.1.2
|
||||
- FastAPI to 0.78.0
|
||||
|
||||
- Recipe Ingredient Editor
|
||||
- [#1140](https://github.com/mealie-recipes/mealie/issues/1140) - Error in processing the quantity of ingredients #1140 - UI Now prevents entering not-allowed characters in quantity field
|
||||
- UI now allows no value to be set in addition to a zero (0) value.
|
||||
- [#1237](https://github.com/mealie-recipes/mealie/issues/1237) - UI: Saving a 0 quantity ingredient displays 0 until the page is refreshed #1237 - UI Now properly reacts to changes in the quantity field.
|
||||
|
||||
- Fix Mealie v0.5.x migration issue [#1183](https://github.com/mealie-recipes/mealie/issues/1183)
|
||||
- Consolidated Frontend Types thanks to [@PFischbeck](https://github.com/Fischbeck)
|
||||
- Added support for SSL/No Auth Email [@nkringle](https://github.com/nkringle)
|
||||
- [Implement several notifications for server actions ](https://github.com/mealie-recipes/mealie/pull/1234)[@miroito](https://github.com/Miroito)
|
||||
- Fix display issue for shared recipe rendering on server [@PFischbeck](https://github.com/Fischbeck)
|
||||
|
||||
## v1.0.0b - 2022-05-09
|
||||
|
||||
- Change MIT license to AGPLv3
|
||||
|
||||
## v1.0.0b - 2022-05-08
|
||||
|
||||
- Rewrote the registration flow for new users.
|
||||
- Added support for seed data at anytime through the user interface.
|
||||
- Improved security for sanitizing HTML inputs for user input.
|
||||
- Added support for importing keywords as tags during scraping - [@miroito](https://github.com/Miroito)
|
||||
- Changed default recipe settings to "disable_amount=True" for new groups.
|
||||
- Add support for merging food, and units.
|
||||
- Allow tags, category, and tool creation - [@miroito](https://github.com/Miroito)
|
||||
- Added additional and more comprehensive filter options for cookbooks
|
||||
- Fixed bookmarklets error
|
||||
|
||||
## v1.0.0b - 2022-03-29
|
||||
|
||||
- Mealie now stores the original text from parsed ingredients, with the ability to peak at the original text from a recipe. [@miroito](https://github.com/Miroito)
|
||||
- Added some management / utility functions for administrators to manage data and cleanup artifacts from the file system.
|
||||
- Fix clear url action in recipe creation [#1101](https://github.com/mealie-recipes/mealie/pull/1101) [@miroito](https://github.com/Miroito)
|
||||
- Add group statistics calculations and data storage measurements
|
||||
- No hard limits are currently imposed on groups - though this may be implemented in the future.
|
||||
|
||||
## v1.0.0b - 2022-03-25
|
||||
|
||||
- Mealie now packages the last git commit as the build ID
|
||||
- Admin section now has a "Maintenance" page where you can check some health metrics like data directory size, logs file size, and if there are some non compliant directories or images. You can also perform clean-up operations to resolve some of these issues.
|
||||
- Dropped 2 dependencies and moved to using our own base model within the project
|
||||
- Removed lots of dead backup code
|
||||
- Recipe names will now be auto-incremented when a conflict is found. So if you're adding a recipe named "Tomato Soup" and that recipe name already exists in your database one will be created with the name "Tomato Soup (1)". Currently this is done in a loop until a suitable name is found, however it will error out after 10 attempts so it's best to find a more descriptive name for your recipe.
|
||||
- Fixed broken PWA where it wouldn't render any content
|
||||
- Added database connection retry loop to ensure that the database is available prior to starting
|
||||
- Reorganized group routes to be more consistent with the rest of the application
|
||||
|
||||
## v1.0.0b Beta Release!
|
||||
|
||||
!!! error "Breaking Changes"
|
||||
As you may have guessed, this release comes with some breaking changes. If you are/were consuming the API you will need to validate all endpoints as nearly all of them have changed.
|
||||
|
||||
To import your data into Mealie v1 from the most recent previous release, you'll need to export and import your data using the built in method. **Note that only your recipes will be usable in the migration**.
|
||||
|
||||
### ✨ What's New (What isn't?!?!)
|
||||
|
||||
#### 🥳 General
|
||||
|
||||
- Mealie will by default only be accessible to users. Future plans are to create spaces for non-users to access a specific group.
|
||||
- Mealie has gone through a big redesign and has tried to standardize it's look a feel a bit more across the board.
|
||||
- User/Group settings are now completely separated from the Administration page.
|
||||
- All settings and configurations pages now have some sort of self-documenting help text. Additional text or descriptions are welcome from PRs
|
||||
- New experimental banner for the site to give users a sense of what features are still "in development" and provide a link to a github issue that provides additional context.
|
||||
- Groups now offer full multi-tenant support so you can all groups have their own set of data.
|
||||
|
||||
##### ⚙️ Site Settings Page
|
||||
|
||||
- Site Settings has been completely revamped. All site-wide settings at defined on the server as ENV variables. The site settings page now only shows you the non-secret values for reference. It also has some helpers to let you know if something isn't configured correctly.
|
||||
- Server Side Bare URL will let you know if the BASE_URL env variable has been set
|
||||
- Secure Site let's you know if you're serving via HTTPS or accessing by localhost. Accessing without a secure site will render some of the features unusable.
|
||||
- Email Configuration Status will let you know if all the email settings have been provided and offer a way to send test emails.
|
||||
|
||||
#### 👨👩👧👦 Users and Groups
|
||||
|
||||
- All members of a group can generate invitation tokens for other users to join their group
|
||||
- Users now a have "Advanced" setting to enable/disable features like Webhooks and API tokens. This will also apply to future features that are deemed as advanced.
|
||||
- "Pages" have been dropped in favor of Cookbooks which are now group specific so each group can have it's own set of cookbooks
|
||||
- Default recipe settings can now be set by the group instead of environmental variables.
|
||||
- Password reset via email
|
||||
- Invitation to group by email
|
||||
- Manage group member permissions
|
||||
|
||||
#### 📦 Data Migrations
|
||||
|
||||
- Migrations have been moved from the Admin Page to a Group Migration page. Migrations from applications (or previous versions of Mealie) can now be imported into Mealie via the Group Migration pages where all recipes will be imported into the group.
|
||||
- **Supported Migrations**
|
||||
- Mealie Pre v1.0.0
|
||||
- Nextcloud Recipes
|
||||
- Chowdown
|
||||
|
||||
#### 🛒 Shopping Lists
|
||||
|
||||
- Shopping Lists has been completely revamped to be more flexible and user friendly.
|
||||
- Add recipe ingredients to a shopping list
|
||||
- Manually add item/ingredient to shopping list
|
||||
- Copy as markdown or plain text
|
||||
- Sort by food/item Labels
|
||||
- Checked items are now hidden
|
||||
- Uncheck all Items
|
||||
- Delete all checked items
|
||||
|
||||
#### 📢 Apprise Integration
|
||||
|
||||
- Server based Apprise notifications have been deprecated. An effort has been made to improve logging overall in the application and make it easier to monitor/debug through the logs.
|
||||
- The Apprise integration has been updated to the latest version and is now used asynchronously.
|
||||
- Notifiers now support a wider variety of events.
|
||||
- Notifiers can now be managed by-group instead of by the server.
|
||||
|
||||
#### 🗓 Meal Plans
|
||||
|
||||
- Meal plans have been completely redesigned to use a calendar approach so you'll be able to see what meals you have planned in a more traditional view
|
||||
- Drag and Drop meals between days
|
||||
- Add Recipes or Notes to a specific day
|
||||
- New context menu action for recipes to add a recipe to a specific day on the meal-plan
|
||||
- New rule based meal plan generator/selector. You can now create rules to restrict the addition of recipes for specific days or meal types (breakfast, lunch, dinner, side). You can also create rules that match against "all" days or "all" meal types to create global rules based around tags and categories. This gives you the most flexibility in creating meal plans.
|
||||
|
||||
#### 🥙 Recipes
|
||||
|
||||
##### 🔍 Search
|
||||
|
||||
- Search now includes the ability to fuzzy search ingredients
|
||||
- Search now includes an additional filter for "Foods" which will filter (Include/Exclude) matches based on your selection.
|
||||
|
||||
##### 🍴 Recipe General
|
||||
|
||||
- Recipe Pages now implement a screen lock on supported devices to keep the screen from going to sleep.
|
||||
- Recipes are now only viewable by group members
|
||||
- Recipes can be shared with share links
|
||||
- Shared recipes can now render previews for the recipe on sites like Twitter, Facebook, and Discord.
|
||||
- Recipes now have a `tools` attribute that contains a list of required tools/equipment for the recipe. Tools can be set with a state to determine if you have that tool or not. If it's marked as on hand it will show checked by default.
|
||||
- Recipe Extras now only show when advanced mode is toggled on
|
||||
- You can now import multiple URLs at a time pre-tagged using the bulk importer. This task runs in the background so no need to wait for it to finish.
|
||||
- Foods/Units for Ingredients are now supported (toggle inside your recipe settings)
|
||||
- Common Food and Units come pre-packaged with Mealie
|
||||
- Landscape and Portrait views are now available
|
||||
- Users with the advanced flag turned on will now be able to manage recipe data in bulk and perform the following actions:
|
||||
- Set Categories
|
||||
- Set Tags
|
||||
- Delete Recipes
|
||||
- Export Recipes
|
||||
- Recipes now have a `/cook` page for a simple view of the recipe where you can click through each step of a recipe and it's associated ingredients.
|
||||
- The Bulk Importer has received many additional upgrades.
|
||||
- Trim Whitespace: automatically removes leading and trailing whitespace
|
||||
- Trim Prefix: Removes the first character of each line. Useful for when you paste in a list of ingredients or instructions that have 1. or 2. in front of them.
|
||||
- Split By Numbered Line: Attempts to split a paragraph into multiple lines based on the patterns matching '1.', '1:' or '1)'.
|
||||
|
||||
##### 🍞 Recipe Ingredients
|
||||
|
||||
- Recipe ingredients can now be scaled when the food/unit is defined
|
||||
- Recipe ingredients can now be copied as markdown lists
|
||||
- example `- [ ] 1 cup of flour`
|
||||
- You can now use Natural Language Processing (NLP) to process ingredients and attempt to parse them into amounts, units, and foods. There is an additional "Brute Force" processor that can be used as pattern matching parser to try and determine ingredients. **Note** if you are processing a Non-English language you will have terrible results with the NLP and will likely need to use the Bruce Force processor.
|
||||
|
||||
##### 📜 Recipe Instructions
|
||||
|
||||
- Can now be merged with the above step automatically through the action menu
|
||||
- Recipe Ingredients can be linked directly to recipe instructions for improved display
|
||||
- There is an option in the linking dialog to automatically link ingredients. This works by using a key-word matching algorithm to find the ingredients. It's not perfect so you'll need to verify the links after use, additionally you will find that it doesn't work for non-english languages.
|
||||
- Recipe Instructions now have a preview tab to show the rendered markdown before saving.
|
||||
|
||||
#### ⚠️ Other things to know...
|
||||
|
||||
- Themes have been deprecated for specific users. You can still set specific themes for your site through ENV variables. This approach should yield much better results for performance and some weirdness users have experienced.
|
||||
- If you've experienced slowness in the past, you may notice a significant improvement in the "All Recipes" and "Search" pages, or wherever large payloads of recipes are being displayed. This is due to not validating responses from the database, as such if you are consuming these API's you may get extra values that are unexpected.
|
||||
|
||||
#### 👨💻 Backend/Development Goodies
|
||||
|
||||
- Codebase is significantly more organized both Frontend and Backend
|
||||
- We've moved to Nuxt for SSR and Typescript for better type safety and less bugs 🎉
|
||||
- Backend now using a Class based architecture to maximize code reuse
|
||||
- Tons of performance improvements across the board
|
||||
- Significant work was done by [@PFischbeck](https://github.com/PFischbeck) to improve type safety on the frontend server and fix many type related errors/bugs!
|
||||
@@ -1,29 +0,0 @@
|
||||
### Bug Fixes
|
||||
|
||||
- Bump isomorphic-dompurify from 0.18.0 to 0.19.0 in /frontend ([#1257](https://github.com/mealie-recipes/mealie/issues/1257))
|
||||
- Bump @nuxtjs/auth-next in /frontend ([#1265](https://github.com/mealie-recipes/mealie/issues/1265))
|
||||
- Bad dev dependency ([#1281](https://github.com/mealie-recipes/mealie/issues/1281))
|
||||
- Add touch support for mealplanner delete ([#1298](https://github.com/mealie-recipes/mealie/issues/1298))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Add references for VSCode dev containers ([#1299](https://github.com/mealie-recipes/mealie/issues/1299))
|
||||
- Docker-compose.dev.yml is currently not functional ([#1300](https://github.com/mealie-recipes/mealie/issues/1300))
|
||||
|
||||
### Features
|
||||
|
||||
- Add reports to bulk recipe import (url) ([#1294](https://github.com/mealie-recipes/mealie/issues/1294))
|
||||
- Rewrite print implementation to support new ing ([#1305](https://github.com/mealie-recipes/mealie/issues/1305))
|
||||
|
||||
### Miscellaneous Tasks
|
||||
|
||||
- Github stalebot changes ([#1271](https://github.com/mealie-recipes/mealie/issues/1271))
|
||||
- Bump eslint-plugin-nuxt in /frontend ([#1258](https://github.com/mealie-recipes/mealie/issues/1258))
|
||||
- Bump @vue/runtime-dom in /frontend ([#1259](https://github.com/mealie-recipes/mealie/issues/1259))
|
||||
- Bump nuxt-vite from 0.1.3 to 0.3.5 in /frontend ([#1260](https://github.com/mealie-recipes/mealie/issues/1260))
|
||||
- Bump vue2-script-setup-transform in /frontend ([#1263](https://github.com/mealie-recipes/mealie/issues/1263))
|
||||
- Update dev dependencies ([#1282](https://github.com/mealie-recipes/mealie/issues/1282))
|
||||
|
||||
### Refactor
|
||||
|
||||
- Split up recipe create page ([#1283](https://github.com/mealie-recipes/mealie/issues/1283))
|
||||
@@ -1,36 +0,0 @@
|
||||
### Bug Fixes
|
||||
|
||||
- Update issue links in v1.0.0beta-2 changelog ([#1312](https://github.com/mealie-recipes/mealie/issues/1312))
|
||||
- Bad import path ([#1313](https://github.com/mealie-recipes/mealie/issues/1313))
|
||||
- Printer page refs ([#1314](https://github.com/mealie-recipes/mealie/issues/1314))
|
||||
- Consolidate stores to fix mismatched state
|
||||
- Bump @vue/composition-api from 1.6.1 to 1.6.2 in /frontend ([#1275](https://github.com/mealie-recipes/mealie/issues/1275))
|
||||
- Shopping list label editor ([#1333](https://github.com/mealie-recipes/mealie/issues/1333))
|
||||
|
||||
### Features
|
||||
|
||||
- Default unit fractions to True
|
||||
- Add unit abbreviation support ([#1332](https://github.com/mealie-recipes/mealie/issues/1332))
|
||||
- Attached images by drag and drop for recipe steps ([#1341](https://github.com/mealie-recipes/mealie/issues/1341))
|
||||
|
||||
### Docs
|
||||
|
||||
- Render homepage social media link images at 32x32 size ([#1310](https://github.com/mealie-recipes/mealie/issues/1310))
|
||||
|
||||
### Miscellaneous Tasks
|
||||
|
||||
- Init git-cliff config
|
||||
- Bump @types/sortablejs in /frontend ([#1287](https://github.com/mealie-recipes/mealie/issues/1287))
|
||||
- Bump @babel/eslint-parser in /frontend ([#1290](https://github.com/mealie-recipes/mealie/issues/1290))
|
||||
|
||||
### Refactor
|
||||
|
||||
- Unify recipe-organizer components ([#1340](https://github.com/mealie-recipes/mealie/issues/1340))
|
||||
|
||||
### Security
|
||||
|
||||
- Delay server response whenever username is non existing ([#1338](https://github.com/mealie-recipes/mealie/issues/1338))
|
||||
|
||||
### Wip
|
||||
|
||||
- Pagination-repository ([#1316](https://github.com/mealie-recipes/mealie/issues/1316))
|
||||
@@ -1,126 +0,0 @@
|
||||
### Security
|
||||
|
||||
#### v1.0.0beta-3 and Under - Recipe Scraper: Server Side Request Forgery Lead To Denial Of Service
|
||||
|
||||
!!! error "CWE-918: Server-Side Request Forgery (SSRF)"
|
||||
In this case if a attacker try to load a huge file then server will try to load the file and eventually server use its all memory which will dos the server
|
||||
|
||||
##### Mitigation
|
||||
|
||||
HTML is now scraped via a Stream and canceled after a 15 second timeout to prevent arbitrary data from being loaded into the server.
|
||||
|
||||
#### v1.0.0beta-3 and Under - Recipe Assets: Remote Code Execution
|
||||
|
||||
!!! error "CWE-1336: Improper Neutralization of Special Elements Used in a Template Engine"
|
||||
As a low privileged user, Create a new recipe and click on the "+" to add a New Asset.
|
||||
Select a file, then proxy the request that will create the asset.
|
||||
|
||||
Since mealie/routes/recipe/recipe_crud_routes.py:306 is calling slugify on the name POST parameter, we use $ which slugify() will remove completely.
|
||||
|
||||
Since mealie/routes/recipe/recipe_crud_routes.py:306 is concatenating raw user input from the extension POST parameter into the variable file_name, which ultimately gets used when writing to disk, we can use a directory traversal attack in the extension (e.g. ./../../../tmp/pwn.txt) to write the file to arbitrary location on the server.
|
||||
|
||||
As an attacker, now that we have a strong attack primitive, we can start getting creative to get RCE. Since the files were being created by root, we could add an entry to /etc/passwd, create a crontab, etc. but since there was templating functionality in the application that peaked my interest. The PoC in the HTTP request above creates a Jinja2 template at /app/data/template/pwn.html. Since Jinja2 templates execute Python code when rendered, all we have to do now to get code execution is render the malicious template. This was easy enough.
|
||||
|
||||
##### Mitigation
|
||||
|
||||
We've added proper path sanitization to ensure that the user is not allowed to write to arbitrary locations on the server.
|
||||
|
||||
!!! warning "Breaking Change Incoming"
|
||||
As this has shown a significant area of exposure in the templates that Mealie was provided for exporting recipes, we'll be removing this feature in the next Beta release and will instead rely on the community to provide tooling around transforming recipes using templates. This will significantly limit the possible exposure of users injecting malicious templates into the application. The template functionality will be completely removed in the next beta release v1.0.0beta-5
|
||||
|
||||
#### All version Markdown Editor: Cross Site Scripting
|
||||
|
||||
!!! error "CWE-79: Cross-site Scripting (XSS) - Stored"
|
||||
A low privilege user can insert malicious JavaScript code into the Recipe Instructions which will execute in another person's browser that visits the recipe.
|
||||
|
||||
`<img src=x onerror=alert(document.domain)>`
|
||||
|
||||
##### Mitigation
|
||||
|
||||
This issues is present on all pages that allow markdown input. This error has been mitigated by wrapping the 3rd Party Markdown component and using the `domPurify` library to strip out the dangerous HTML.
|
||||
|
||||
#### v1.0.0beta-3 and Under - Image Scraper: Server-Side Request Forgery
|
||||
|
||||
!!! error "CWE-918: Server-Side Request Forgery (SSRF)"
|
||||
In the recipe edit page, is possible to upload an image directly or via an URL provided by the user. The function that handles the fetching and saving of the image via the URL doesn't have any URL verification, which allows to fetch internal services.
|
||||
|
||||
Furthermore, after the resource is fetch, there is no MIME type validation, which would ensure that the resource is indeed an image. After this, because there is no extension in the provided URL, the application will fallback to jpg, and original for the image name.
|
||||
|
||||
Then the result is saved to disk with the original.jpg name, that can be retrieved from the following URL: http://<domain>/api/media/recipes/<recipe-uid>/images/original.jpg. This file will contain the full response of the provided URL.
|
||||
|
||||
**Impact**
|
||||
|
||||
An attacker can get sensitive information of any internal-only services running. For example, if the application is hosted on Amazon Web Services (AWS) platform, its possible to fetch the AWS API endpoint, https://169.254.169.254, which returns API keys and other sensitive metadata.
|
||||
|
||||
##### Mitigation
|
||||
|
||||
Two actions were taken to reduce exposure to SSRF in this case.
|
||||
|
||||
1. The application will not prevent requests being made to local resources by checking for localhost or 127.0.0.1 domain names.
|
||||
2. The mime-type of the response is now checked prior to writing to disk.
|
||||
|
||||
If either of the above actions prevent the user from uploading images, the application will alert the user of what error occurred.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- For erroneously-translated datetime config ([#1362](https://github.com/mealie-recipes/mealie/issues/1362))
|
||||
- Fixed text color on RecipeCard in RecipePrintView and implemented ingredient sections ([#1351](https://github.com/mealie-recipes/mealie/issues/1351))
|
||||
- Ingredient sections lost after parsing ([#1368](https://github.com/mealie-recipes/mealie/issues/1368))
|
||||
- Increased float rounding precision for CRF parser ([#1369](https://github.com/mealie-recipes/mealie/issues/1369))
|
||||
- Infinite scroll bug on all recipes page ([#1393](https://github.com/mealie-recipes/mealie/issues/1393))
|
||||
- Fast fail of bulk importer ([#1394](https://github.com/mealie-recipes/mealie/issues/1394))
|
||||
- Bump @mdi/js from 5.9.55 to 6.7.96 in /frontend ([#1279](https://github.com/mealie-recipes/mealie/issues/1279))
|
||||
- Bump @nuxtjs/i18n from 7.0.3 to 7.2.2 in /frontend ([#1288](https://github.com/mealie-recipes/mealie/issues/1288))
|
||||
- Bump date-fns from 2.23.0 to 2.28.0 in /frontend ([#1293](https://github.com/mealie-recipes/mealie/issues/1293))
|
||||
- Bump fuse.js from 6.5.3 to 6.6.2 in /frontend ([#1325](https://github.com/mealie-recipes/mealie/issues/1325))
|
||||
- Bump core-js from 3.17.2 to 3.23.1 in /frontend ([#1383](https://github.com/mealie-recipes/mealie/issues/1383))
|
||||
- All-recipes page now sorts alphabetically ([#1405](https://github.com/mealie-recipes/mealie/issues/1405))
|
||||
- Sort recent recipes by created_at instead of date_added ([#1417](https://github.com/mealie-recipes/mealie/issues/1417))
|
||||
- Only show scaler when ingredients amounts enabled ([#1426](https://github.com/mealie-recipes/mealie/issues/1426))
|
||||
- Add missing types for API token deletion ([#1428](https://github.com/mealie-recipes/mealie/issues/1428))
|
||||
- Entry nutrition checker ([#1448](https://github.com/mealie-recipes/mealie/issues/1448))
|
||||
- Use == operator instead of is_ for sql queries ([#1453](https://github.com/mealie-recipes/mealie/issues/1453))
|
||||
- Use `mtime` instead of `ctime` for backup dates ([#1461](https://github.com/mealie-recipes/mealie/issues/1461))
|
||||
- Mealplan pagination ([#1464](https://github.com/mealie-recipes/mealie/issues/1464))
|
||||
- Properly use pagination for group event notifies ([#1512](https://github.com/mealie-recipes/mealie/pull/1512))
|
||||
|
||||
### Documentation
|
||||
|
||||
- Add go bulk import example ([#1388](https://github.com/mealie-recipes/mealie/issues/1388))
|
||||
- Fix old link
|
||||
- Pagination and filtering, and fixed a few broken links ([#1488](https://github.com/mealie-recipes/mealie/issues/1488))
|
||||
|
||||
### Features
|
||||
|
||||
- Toggle display of ingredient references in recipe instructions ([#1268](https://github.com/mealie-recipes/mealie/issues/1268))
|
||||
- Add custom scaling option ([#1345](https://github.com/mealie-recipes/mealie/issues/1345))
|
||||
- Implemented "order by" API parameters for recipe, food, and unit queries ([#1356](https://github.com/mealie-recipes/mealie/issues/1356))
|
||||
- Implement user favorites page ([#1376](https://github.com/mealie-recipes/mealie/issues/1376))
|
||||
- Extend Apprise JSON notification functionality with programmatic data ([#1355](https://github.com/mealie-recipes/mealie/issues/1355))
|
||||
- Mealplan-webhooks ([#1403](https://github.com/mealie-recipes/mealie/issues/1403))
|
||||
- Added "last-modified" header to supported record types ([#1379](https://github.com/mealie-recipes/mealie/issues/1379))
|
||||
- Re-write get all routes to use pagination ([#1424](https://github.com/mealie-recipes/mealie/issues/1424))
|
||||
- Advanced filtering API ([#1468](https://github.com/mealie-recipes/mealie/issues/1468))
|
||||
- Restore frontend sorting for all recipes ([#1497](https://github.com/mealie-recipes/mealie/issues/1497))
|
||||
- Implemented local storage for sorting and dynamic sort icons on the new recipe sort card ([1506](https://github.com/mealie-recipes/mealie/pull/1506))
|
||||
- create new foods and units from their Data Management pages ([#1511](https://github.com/mealie-recipes/mealie/pull/1511))
|
||||
|
||||
### Miscellaneous Tasks
|
||||
|
||||
- Bump dev deps ([#1418](https://github.com/mealie-recipes/mealie/issues/1418))
|
||||
- Bump @vue/runtime-dom in /frontend ([#1423](https://github.com/mealie-recipes/mealie/issues/1423))
|
||||
- Backend page_all route cleanup ([#1483](https://github.com/mealie-recipes/mealie/issues/1483))
|
||||
|
||||
### Refactor
|
||||
|
||||
- Remove depreciated repo call ([#1370](https://github.com/mealie-recipes/mealie/issues/1370))
|
||||
|
||||
### Hotfix
|
||||
|
||||
- Tame typescript beast
|
||||
|
||||
### UI
|
||||
|
||||
- Improve parser ui text display ([#1437](https://github.com/mealie-recipes/mealie/issues/1437))
|
||||
|
||||
<!-- generated by git-cliff -->
|
||||
@@ -1,3 +0,0 @@
|
||||
### NOTICE:
|
||||
|
||||
Release changelogs are now published on github releases. This file is kept for historical purposes.
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
[Please Join the Discord](https://discord.gg/QuStdQGSGK). We are building a community of developers working on the project.
|
||||
|
||||
## We Develop with Github
|
||||
We use github to host code, to track issues and feature requests, as well as accept pull requests.
|
||||
## We Develop with GitHub
|
||||
We use GitHub to host code, to track issues and feature requests, as well as accept pull requests.
|
||||
|
||||
## We Use [Github Flow](https://docs.github.com/en/get-started/using-github/github-flow), So All Code Changes Happen Through Pull Requests
|
||||
Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://docs.github.com/en/get-started/using-github/github-flow)). We actively welcome your pull requests:
|
||||
## We Use [GitHub Flow](https://docs.github.com/en/get-started/using-github/github-flow), So All Code Changes Happen Through Pull Requests
|
||||
Pull requests are the best way to propose changes to the codebase (we use [GitHub Flow](https://docs.github.com/en/get-started/using-github/github-flow)). We actively welcome your pull requests:
|
||||
|
||||
1. Fork the repo and create your branch from `mealie-next`.
|
||||
2. Checkout the Discord, the PRs page, or the Projects page to get an idea of what's already being worked on.
|
||||
@@ -14,13 +14,13 @@ Pull requests are the best way to propose changes to the codebase (we use [Githu
|
||||
4. Once you've got an idea of what changes you want to make, create a draft PR as soon as you can to let us know what you're working on and how we can help!
|
||||
5. If you've changed APIs, update the documentation.
|
||||
6. Run tests, including `task py:check`.
|
||||
6. Issue that pull request! First make a draft PR, make sure that the automated github tests all pass, then mark as ready for review.
|
||||
7. Be sure to add release notes to the pull request.
|
||||
7. Issue that pull request! First make a draft PR, make sure that the automated GitHub tests all pass, then mark as ready for review. We follow Conventional Commits syntax; please title your PR as described in the PR template.
|
||||
8. Be sure to add release notes to the pull request.
|
||||
|
||||
## Any contributions you make will be under the AGPL Software License
|
||||
In short, when you submit code changes, your submissions are understood to be under the same [AGPL License](https://choosealicense.com/licenses/agpl-3.0/) that covers the project. Feel free to contact the maintainers if that's a concern.
|
||||
|
||||
## Report bugs using Github's [issues](https://github.com/mealie-recipes/mealie/issues)
|
||||
## Report bugs using GitHub's [issues](https://github.com/mealie-recipes/mealie/issues)
|
||||
We use GitHub issues to track public bugs. Report a bug by [opening a new issue](https://github.com/mealie-recipes/mealie/issues/new); it's that easy!
|
||||
|
||||
## Write bug reports with detail, background, and sample code
|
||||
|
||||
15
docs/docs/contributors/developers-guide/database-changes.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Development: Database Changes
|
||||
|
||||
This document is open to improvement; please share any insights you have/develop.
|
||||
|
||||
## Overview
|
||||
|
||||
When modifying the database, you will most likely need to change the files under `/mealie/db/models/`.
|
||||
How exactly you need to modify it is of course highly contextual to the change you're making.
|
||||
|
||||
## Using Alembic to generate upgrade script
|
||||
|
||||
In your dev container you can run something like (change the message) `task py:migrate -- "Add creation tag to group preferences"` to have Alembic generate an upgrade script for you.
|
||||
|
||||
Alembic's script migration isn't perfect, so you will need to review which changes are generated. You will also need to make sure any custom operations work on both SQLite and Postgres.
|
||||
There are some known limitations with our migrations and Alembic's auto-generation, which is accounted for in `/alembic/env.py`. If any of your migrations overlap with the columns in `include_object`, you may need to manually adjust the migration.
|
||||
@@ -6,7 +6,7 @@ This is the start of the maintainers guide for Mealie developers. Those who have
|
||||
|
||||
If you are working on issues, it can be helpful to understand the workflow for our repository. When an issue comes in it is tagged with the `bug` and `triage` flags. This is to indicate that they need to be reviewed by a maintainer to determine validity.
|
||||
|
||||
After you've reviered an issue it will generally move into one of two states:
|
||||
After you've reviewed an issue it will generally move into one of two states:
|
||||
|
||||
`bug:confirmed`
|
||||
: Your were able to verify the issue and we determined we need to fix it
|
||||
|
||||
59
docs/docs/contributors/developers-guide/migration-guide.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Migration Guide
|
||||
|
||||
This guide is a reference for developers maintaining custom integrations with Mealie. While we aim to keep breaking changes to a minimum, major versions are likely to contain at least *some* breaking changes. To clarify: *most users do not need to worry about this, this is **only** for those maintaining integrations and/or leveraging the API*.
|
||||
|
||||
While this guide aims to simplify the migration process for developers, it's not necessarily a comprehensive list of breaking changes. Starting with v2, a comprehensive list of breaking changes are highlighted in the release notes.
|
||||
|
||||
## V1 → V2
|
||||
|
||||
The biggest change between V1 and V2 is the introduction of Households. For more information on how households work in relation to groups/users, check out the [Groups and Households](./features.md#groups-and-households) section in the Features guide.
|
||||
|
||||
### `updateAt` is now `updatedAt`
|
||||
|
||||
We have renamed the `updateAt` field to `updatedAt`. While the API will still accept `updateAt` as an alias, the API will return it as `updatedAt`. The field's behavior has otherwise been unchanged.
|
||||
|
||||
### Backend Endpoint Changes
|
||||
|
||||
These endpoints have moved, but are otherwise unchanged:
|
||||
|
||||
- `/recipes/create-url` -> `/recipes/create/url`
|
||||
- `/recipes/create-url/bulk` -> `/recipes/create/url/bulk`
|
||||
- `/recipes/create-from-zip` -> `/recipes/create/zip`
|
||||
- `/recipes/create-from-image` -> `/recipes/create/image`
|
||||
- `/groups/webhooks` -> `/households/webhooks`
|
||||
- `/groups/shopping/items` -> `/households/shopping/items`
|
||||
- `/groups/shopping/lists` -> `/households/shopping/lists`
|
||||
- `/groups/mealplans` -> `/households/mealplans`
|
||||
- `/groups/mealplans/rules` -> `/households/mealplans/rules`
|
||||
- `/groups/invitations` -> `/households/invitations`
|
||||
- `/groups/recipe-actions` -> `/households/recipe-actions`
|
||||
- `/groups/events/notifications` -> `/households/events/notifications`
|
||||
- `/groups/cookbooks` -> `/households/cookbooks`
|
||||
- `/explore/foods/{group_slug}` -> `/explore/groups/{group_slug}/foods`
|
||||
- `/explore/organizers/{group_slug}/categories` -> `/explore/groups/{group_slug}/categories`
|
||||
- `/explore/organizers/{group_slug}/tags` -> `/explore/groups/{group_slug}/tags`
|
||||
- `/explore/organizers/{group_slug}/tools` -> `/explore/groups/{group_slug}/tools`
|
||||
- `/explore/cookbooks/{group_slug}` -> `/explore/groups/{group_slug}/cookbooks`
|
||||
- `/explore/recipes/{group_slug}` -> `/explore/groups/{group_slug}/recipes`
|
||||
|
||||
`/groups/members` previously returned a `UserOut` object, but now returns a `UserSummary`. Should you need the full user information (username, email, etc.), rather than just the summary, see `/households/members` instead for the household members.
|
||||
`/groups/members` previously returned a list of users, but now returns paginated users (similar to all other list endpoints).
|
||||
|
||||
These endpoints have been completely removed:
|
||||
|
||||
- `/admin/analytics` (no longer used)
|
||||
- `/groups/permissions` (see household permissions)
|
||||
- `/groups/statistics` (see household statistics)
|
||||
- `/groups/categories` (see organizer endpoints)
|
||||
- `/recipes/summary/untagged` (no longer used)
|
||||
- `/recipes/summary/uncategorized` (no longer used)
|
||||
- `/users/group-users` (see `/groups/members` and `/households/members`)
|
||||
|
||||
### Frontend Links
|
||||
|
||||
These frontend pages have moved:
|
||||
|
||||
- `/group/mealplan/...` -> `/household/mealplan/...`
|
||||
- `/group/members` -> `/household/members`
|
||||
- `/group/notifiers` -> `/household/notifiers`
|
||||
- `/group/webhooks` -> `/household/webhooks`
|
||||
@@ -32,7 +32,7 @@ Make sure the VSCode Dev Containers extension is installed, then select "Dev Con
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- [Python 3.10](https://www.python.org/downloads/)
|
||||
- [Python 3.12](https://www.python.org/downloads/)
|
||||
- [Poetry](https://python-poetry.org/docs/#installation)
|
||||
- [Node v16.x](https://nodejs.org/en/)
|
||||
- [yarn](https://classic.yarnpkg.com/lang/en/docs/install/#mac-stable)
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
# Improving the Ingredient Parser
|
||||
|
||||
Mealie uses Conditional Random Fields (CRFs) for parsing and processing ingredients. The model used for ingredients is based off a data set of over 100,000 ingredients from a dataset compiled by the New York Times. I believe that the model used is sufficient enough to handle most of the ingredients, therefore, more data to train the model won't necessarily help improve the model.
|
||||
Mealie uses Conditional Random Fields (CRFs) for parsing and processing ingredients. The model used for ingredients is based off a data set of over 100,000 ingredients from a dataset compiled by the New York Times. I believe that the model used is sufficient enough to handle most of the ingredients, therefore, more data to train the model won't necessarily help improve the model.
|
||||
|
||||
## Improving The CRF Parser
|
||||
|
||||
To improve results with the model, you'll likely need to focus on improving the tokenization and parsing of the original string to aid the model in determine what the ingredient is. Data science is not my forte, but I have done some tokenization to improve the model. You can find that code under `/mealie/services/parser_services/crfpp` along with some other utility functions to aid in the tokenization and processing of ingredient strings.
|
||||
To improve results with the model, you'll likely need to focus on improving the tokenization and parsing of the original string to aid the model in determine what the ingredient is. Data science is not my forte, but I have done some tokenization to improve the model. You can find that code under `/mealie/services/parser_services/crfpp` along with some other utility functions to aid in the tokenization and processing of ingredient strings.
|
||||
|
||||
The best way to test on improving the parser is to register additional test cases in `/mealie/tests/unit_tests/test_crfpp_parser.py` and run the test after making changes to the tokenizer. Note that the test cases DO NOT run in the CI environment, therefore you will need to have CRF++ installed on your machine. If you're using a Mac the easiest way to do this is through brew.
|
||||
|
||||
When submitting a PR to improve the parser it is important to provide your test cases, the problem you were trying to solve, and the results of the changes you made. As the tests don't run in CI, not providing these details may delay your PR from being merged.
|
||||
When submitting a PR to improve the parser it is important to provide your test cases, the problem you were trying to solve, and the results of the changes you made. As the tests don't run in CI, not providing these details may delay your PR from being merged.
|
||||
|
||||
## Alternative Parsers
|
||||
Alternatively, you can register a new parser by fulfilling the `ABCIngredientParser` interface. Satisfying this single method interface allows us to register additional parsing strategies at runtime and gives the user several options when trying to parse a recipe.
|
||||
Alternatively, you can register a new parser by fulfilling the `ABCIngredientParser` interface. Satisfying this single method interface allows us to register additional parsing strategies at runtime and gives the user several options when trying to parse a recipe.
|
||||
|
||||
|
||||
## Links
|
||||
- [Pretrained Model](https://github.com/mealie-recipes/mealie-nlp-model)
|
||||
- [CRF++ (Forked)](https://github.com/hay-kot/crfpp)
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@ We love your input! We want to make contributing to this project as easy and tra
|
||||
- Becoming a maintainer
|
||||
- Help translate to a new language or improve current translations
|
||||
|
||||
[Remember to join the Discord and stay in touch with other developers working on the project](https://discord.gg/QuStdQGSGK)!
|
||||
[Remember to join the Discord and stay in touch with other developers working on the project](https://discord.gg/QuStdQGSGK)!
|
||||
|
||||
Additionally, you can buy me a coffee and support the project. When I get financial support it helps me know that there's real interest in the project and that it's worth the time to keep developing.
|
||||
Additionally, you can buy me a coffee and support the project. When I get financial support it helps me know that there's real interest in the project and that it's worth the time to keep developing.
|
||||
|
||||
<a href="https://www.buymeacoffee.com/haykot" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-green.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
|
||||
<a href="https://www.buymeacoffee.com/haykot" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/v2/default-green.png" alt="Buy Me A Coffee" style="height: 60px !important;width: 217px !important;" ></a>
|
||||
|
||||
@@ -23,7 +23,7 @@ function import_from_file () {
|
||||
do
|
||||
echo $line
|
||||
curl -X 'POST' \
|
||||
"$3/api/recipes/create-url" \
|
||||
"$3/api/recipes/create/url" \
|
||||
-H "Authorization: Bearer $2" \
|
||||
-H 'accept: application/json' \
|
||||
-H 'Content-Type: application/json' \
|
||||
@@ -81,7 +81,7 @@ def import_from_file(input_file, token, mealie_url):
|
||||
data = {
|
||||
'url': line
|
||||
}
|
||||
response = requests.post(mealie_url + "/api/recipes/create-url", headers=headers, json=data)
|
||||
response = requests.post(mealie_url + "/api/recipes/create/url", headers=headers, json=data)
|
||||
print(response.text)
|
||||
|
||||
input_file="list"
|
||||
@@ -93,4 +93,3 @@ mealie_url="http://localhost:9000"
|
||||
token = authentication(mail, password, mealie_url)
|
||||
import_from_file(input_file, token, mealie_url)
|
||||
```
|
||||
|
||||
|
||||
@@ -18,32 +18,26 @@ Create an API token from Mealie's User Settings page (https://hay-kot.github.io/
|
||||
#### 2. Create Home Assistant Sensors
|
||||
|
||||
Create REST sensors in home assistant to get the details of today's meal.
|
||||
We will create sensors to get the name and ID of the first meal in today's meal plan (note that this may not be what is wanted if there is more than one meal planned for the day). We need the ID as well as the name to be able to retreive the image for the meal.
|
||||
We will create sensors to get the name and ID of the first meal in today's meal plan (note that this may not be what is wanted if there is more than one meal planned for the day). We need the ID as well as the name to be able to retrieve the image for the meal.
|
||||
|
||||
Make sure the url and port (`http://mealie:9000` ) matches your installation's address and _API_ port.
|
||||
|
||||
```yaml
|
||||
- platform: rest
|
||||
resource: "http://mealie:9000/api/groups/mealplans/today"
|
||||
method: GET
|
||||
name: Mealie todays meal
|
||||
headers:
|
||||
Authorization: Bearer <<API_TOKEN>>
|
||||
value_template: "{{ value_json[0].recipe.name }}"
|
||||
force_update: true
|
||||
scan_interval: 30
|
||||
```
|
||||
|
||||
```yaml
|
||||
- platform: rest
|
||||
resource: "http://mealie:9000/api/groups/mealplans/today"
|
||||
method: GET
|
||||
name: Mealie todays meal ID
|
||||
headers:
|
||||
Authorization: Bearer <<API_TOKEN>>
|
||||
value_template: "{{ value_json[0].recipe.id }}"
|
||||
force_update: true
|
||||
scan_interval: 30
|
||||
rest:
|
||||
- resource: "http://mealie:9000/api/households/mealplans/today"
|
||||
method: GET
|
||||
headers:
|
||||
Authorization: Bearer <<API_TOKEN>>
|
||||
scan_interval: 3600
|
||||
sensor:
|
||||
- name: Mealie todays meal
|
||||
value_template: "{{ value_json[0]['recipe']['name'] }}"
|
||||
force_update: true
|
||||
unique_id: mealie_todays_meal
|
||||
- name: Mealie todays meal ID
|
||||
value_template: "{{ value_json[0]['recipe']['id'] }}"
|
||||
force_update: true
|
||||
unique_id: mealie_todays_meal_id
|
||||
```
|
||||
|
||||
#### 3. Create a Camera Entity
|
||||
|
||||
@@ -7,7 +7,9 @@ You can use bookmarklets to generate a bookmark that will take your current loca
|
||||
You can use a [bookmarklet generator site](https://caiorss.github.io/bookmarklet-maker/) and the code below to generate a bookmark for your site. Just change the `http://localhost:8080` to your sites web address and follow the instructions.
|
||||
|
||||
```js
|
||||
var url = document.URL;
|
||||
var url = document.URL.endsWith('/') ?
|
||||
document.URL.slice(0, -1) :
|
||||
document.URL;
|
||||
var mealie = "http://localhost:8080";
|
||||
var group_slug = "home" // Change this to your group slug. You can obtain this from your URL after logging-in to Mealie
|
||||
var use_keywords= "&use_keywords=1" // Optional - use keywords from recipe - update to "" if you don't want that
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
# Automating Backups with n8n
|
||||
|
||||
!!! info
|
||||
This guide was submitted by a community member. Find something wrong? Submit a PR to get it fixed!
|
||||
|
||||
> [n8n](https://github.com/n8n-io/n8n) is a free and source-available fair-code licensed workflow automation tool. Alternative to Zapier or Make, allowing you to use a UI to create automated workflows.
|
||||
|
||||
This example workflow:
|
||||
|
||||
1. Backups Mealie every morning via an API call
|
||||
2. Deletes all but the last 7 backups
|
||||
|
||||
> [!CAUTION]
|
||||
> This only automates the backup function, this does not backup your data to anywhere except your local instance. Please make sure you are backing up your data to an external source.
|
||||
|
||||
---
|
||||
|
||||

|
||||
|
||||
# Setup
|
||||
|
||||
## Deploying n8n
|
||||
|
||||
Follow the relevant guide in the [n8n Documentation](https://docs.n8n.io/)
|
||||
|
||||
## Importing n8n workflow
|
||||
|
||||
1. In n8n, add a new workflow
|
||||
2. In the top right hit the 3 dot menu and select 'Import from URL...'
|
||||
|
||||

|
||||
|
||||
3. Paste `https://github.com/mealie-recipes/mealie/blob/mealie-next/docs/docs/assets/other/n8n/n8n-mealie-backup.json` and click Import
|
||||
4. Click through the nodes and update the URLs for your environment
|
||||
|
||||
## API Credentials
|
||||
|
||||
#### Generate Mealie API Token
|
||||
|
||||
1. Head to https://mealie.example.com/user/profile/api-tokens
|
||||
> If you dont see this screen make sure that "Show advanced features" is checked under https://mealie.example.com/user/profile/edit
|
||||
2. Under token name, enter the name of the token i.e. 'n8n' and hit Generate
|
||||
3. Copy and keep this API Token somewhere safe, this is like your password!
|
||||
|
||||
> You can use your normal user for this, but assuming you're an admin you could also choose to create a user named n8n and generate the API key against that user.
|
||||
|
||||
#### Setup Credentials in n8n
|
||||
|
||||
> [n8n Docs](https://docs.n8n.io/credentials/add-edit-credentials/)
|
||||
|
||||
1. Create a new "Header Auth" Credential
|
||||
|
||||

|
||||
|
||||
2. In the connection screen set - Name as `Authorization` - Value as `Bearer {INSERT MEALIE API KEY}`
|
||||
|
||||

|
||||
|
||||
3. In the workflow you created, for the "Run Backup", "Get All backups", and "Delete Oldies" nodes, update:
|
||||
- Authentication to `Generic Credential Type`
|
||||
- Generic Auth Type to `Header Auth`
|
||||
- Header Auth to `Mealie API` or whatever you named your credentials
|
||||
|
||||

|
||||
|
||||
## Notification Node
|
||||
|
||||
> Please use error notifications of some kind. It's very easy to set and forget an automation, then have the worst happen and lose data.
|
||||
|
||||
[ntfy](https://github.com/binwiederhier/ntfy) is a great open source, self-hostable tool for sending notifications.
|
||||
|
||||
If you want to use ntfy, you will need to install it on your environment, or sign up for their service, and configure it with the webhook URL.
|
||||
|
||||
If you want to use another notification service, you can create a new node in n8n that sends the notification using whatever method you like.
|
||||
|
||||
- For example, if you want to send a push notification via [Pushover](https:/pushover.net/) you could create a new node that uses the Pushover API and sends the notification.
|
||||
- You can use the [Send Email](https://docs.n8n.io/integrations/builtincore-nodes/n8n-nodes-base.sendemail/) node in n8n as an example of how to create your own custom node.
|
||||
- You can send it off to InfluxDB, Slack, Discord etc. Go nuts.
|
||||
|
||||
If you're using another method for backups we'd love to hear about it. Pop in [Discord](https://discord.gg/QuStdQGSGK) and say hi!
|
||||
@@ -48,7 +48,7 @@ services:
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
Don't forget to change the <code>mydomain.duckns</code> into your personal domain and the <code>duckdnstoken</code> into your token and remove the brackets.
|
||||
Don't forget to change the <code>mydomain.duckdns</code> into your personal domain and the <code>duckdnstoken</code> into your token and remove the brackets.
|
||||
|
||||
## Step 3: Change the config files
|
||||
|
||||
|
||||
@@ -0,0 +1,98 @@
|
||||
# OpenID Connect (OIDC) Authentication
|
||||
|
||||
:octicons-tag-24: v2.0.0
|
||||
|
||||
!!! note
|
||||
Breaking changes to OIDC Authentication were introduced with Mealie v2. Please see the below for [migration steps](#migration-from-mealie-v1x).
|
||||
|
||||
Looking instead for the docs for Mealie :octicons-tag-24: v1.x? [Click here](./oidc.md)
|
||||
|
||||
Mealie supports 3rd party authentication via [OpenID Connect (OIDC)](https://openid.net/connect/), an identity layer built on top of OAuth2. OIDC is supported by many Identity Providers (IdP), including:
|
||||
|
||||
- [Authentik](https://goauthentik.io/integrations/sources/oauth/#openid-connect)
|
||||
- [Authelia](https://www.authelia.com/configuration/identity-providers/open-id-connect/)
|
||||
- [Keycloak](https://www.keycloak.org/docs/latest/securing_apps/#_oidc)
|
||||
- [Okta](https://www.okta.com/openid-connect/)
|
||||
|
||||
## Account Linking
|
||||
|
||||
Signing in with OAuth will automatically find your account in Mealie and link to it. If a user does not exist in Mealie, then one will be created (if enabled), but will be unable to log in with any other authentication method. An admin can configure another authentication method for such a user.
|
||||
|
||||
If a user previously accessed Mealie via credentials and you want to no longer allow users to log in with `LDAP` or `Mealie` credentials, then you can set the user's *Authentication Method* to `OIDC`. Conversely, if a user's auth method is not `OIDC`, then they can still log in with whatever their auth method is as well as OIDC.
|
||||
|
||||
## Provider Setup
|
||||
|
||||
Before you can start using OIDC Authentication, you must first configure a new client application in your identity provider. Your identity provider must support the OAuth **Authorization Code flow with PKCE**. The steps will vary by provider, but generally, the steps are as follows.
|
||||
|
||||
1. Create a new client application
|
||||
- The Provider type should be OIDC or OAuth2
|
||||
- The Grant type should be `Authorization Code`
|
||||
- The Client type should be `confidential` (you should have a **Client Secret**)
|
||||
|
||||
2. Configure redirect URI
|
||||
|
||||
The redirect URI(s) that are needed:
|
||||
|
||||
1. `http(s)://DOMAIN:PORT/login`
|
||||
2. `http(s)://DOMAIN:PORT/login?direct=1`
|
||||
1. This URI is only required if your IdP supports [RP-Initiated Logout](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) such as Keycloak. You may also be able to combine this into the previous URI by using a wildcard: `http(s)://DOMAIN:PORT/login*`
|
||||
|
||||
The redirect URI(s) should include any URL that Mealie is accessible from. Some examples include
|
||||
|
||||
http://localhost:9091/login
|
||||
https://mealie.example.com/login
|
||||
|
||||
3. Configure allowed scopes
|
||||
|
||||
The scopes required are `openid profile email`
|
||||
|
||||
If you plan to use the [groups](#groups) to configure access within Mealie, you will need to also add the scope defined by the `OIDC_GROUPS_CLAIM` environment variable. The default claim is `groups`
|
||||
|
||||
## Mealie Setup
|
||||
|
||||
Take the client id and your discovery URL and update your environment variables to include the required OIDC variables described in [Installation - Backend Configuration](../installation/backend-config.md#openid-connect-oidc).
|
||||
|
||||
### Groups
|
||||
|
||||
There are two (optional) [environment variables](../installation/backend-config.md#openid-connect-oidc) that can control which of the users in your IdP can log in to Mealie and what permissions they will have. Keep in mind that these groups **do not necessarily correspond to groups in Mealie**. The groups claim is configurable via the `OIDC_GROUPS_CLAIM` environment variable. The groups should be **defined in your IdP** and be returned in the configured claim value.
|
||||
|
||||
`OIDC_USER_GROUP`: Users must be a part of this group (within your IdP) to be able to log in.
|
||||
|
||||
`OIDC_ADMIN_GROUP`: Users that are in this group (within your IdP) will be made an **admin** in Mealie. Users in this group do not need to be in the `OIDC_USER_GROUP`
|
||||
|
||||
## Examples
|
||||
|
||||
Example configurations for several Identity Providers have been provided by the Community in the [GitHub Discussions](https://github.com/mealie-recipes/mealie/discussions/categories/oauth-provider-example).
|
||||
|
||||
If you don't see your provider and have successfully set it up, please consider [creating your own example](https://github.com/mealie-recipes/mealie/discussions/new?category=oauth-provider-example) so that others can have a smoother setup.
|
||||
|
||||
|
||||
## Migration from Mealie v1.x
|
||||
|
||||
**High level changes**
|
||||
|
||||
- A Client Secret is now required
|
||||
- CORS is no longer a requirement since all authentication happens server-side
|
||||
- A user will be successfully authenticated if they are part of *either* `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP`. Admins no longer need to be part of both groups
|
||||
- ID Token signing algorithm is now inferred using the `id_token_signing_alg_values_supported` metadata from the discovery URL
|
||||
|
||||
### Changes in your IdP
|
||||
|
||||
**Required**
|
||||
|
||||
- You must change the Mealie client in your IdP to be **confidential**. The option is different for every provider, but you need to obtain a **client secret**.
|
||||
|
||||
**Optional**
|
||||
|
||||
- You may now also remove the `OIDC_USER_GROUP` from your admin users if you so desire. Users within the `OIDC_ADMIN_GROUP` will now be able to successfully authenticate with only that group.
|
||||
- You may remove any CORS configuration. i.e. configured origins
|
||||
|
||||
### Changes in Mealie
|
||||
|
||||
**Required**
|
||||
|
||||
- After obtaining the **client secret** from your IdP, you must add it to Mealie using the `OIDC_CLIENT_SECRET` environment variable or via [docker secrets](../installation/backend-config.md#docker-secrets). This secret will not be logged on startup.
|
||||
|
||||
**Optional**
|
||||
|
||||
- Remove `OIDC_SIGNING_ALGORITHM` from your environment. It will no longer have any effect.
|
||||
@@ -0,0 +1,65 @@
|
||||
# OpenID Connect (OIDC) Authentication
|
||||
|
||||
:octicons-tag-24: v1.4.0
|
||||
|
||||
Mealie supports 3rd party authentication via [OpenID Connect (OIDC)](https://openid.net/connect/), an identity layer built on top of OAuth2. OIDC is supported by many Identity Providers (IdP), including:
|
||||
|
||||
- [Authentik](https://goauthentik.io/integrations/sources/oauth/#openid-connect)
|
||||
- [Authelia](https://www.authelia.com/integration/openid-connect/mealie/)
|
||||
- [Keycloak](https://www.keycloak.org/docs/latest/securing_apps/#_oidc)
|
||||
- [Okta](https://www.okta.com/openid-connect/)
|
||||
|
||||
## Account Linking
|
||||
|
||||
Signing in with OAuth will automatically find your account in Mealie and link to it. If a user does not exist in Mealie, then one will be created (if enabled), but will be unable to log in with any other authentication method. An admin can configure another authentication method for such a user.
|
||||
|
||||
## Provider Setup
|
||||
|
||||
Before you can start using OIDC Authentication, you must first configure a new client application in your identity provider. Your identity provider must support the OAuth **Authorization Code flow with PKCE**. The steps will vary by provider, but generally, the steps are as follows.
|
||||
|
||||
1. Create a new client application
|
||||
- The Provider type should be OIDC or OAuth2
|
||||
- The Grant type should be `Authorization Code`
|
||||
- The Application type should be `Web` or `SPA`
|
||||
- The Client type should be `public`
|
||||
|
||||
2. Configure redirect URI
|
||||
|
||||
The redirect URI(s) that are needed:
|
||||
|
||||
1. `http(s)://DOMAIN:PORT/login`
|
||||
2. `http(s)://DOMAIN:PORT/login?direct=1`
|
||||
1. This URI is only required if your IdP supports [RP-Initiated Logout](https://openid.net/specs/openid-connect-rpinitiated-1_0.html) such as Keycloak. You may also be able to combine this into the previous URI by using a wildcard: `http(s)://DOMAIN:PORT/login*`
|
||||
|
||||
The redirect URI(s) should include any URL that Mealie is accessible from. Some examples include
|
||||
|
||||
http://localhost:9091/login
|
||||
https://mealie.example.com/login
|
||||
|
||||
3. Configure origins
|
||||
|
||||
If your identity provider enforces CORS on any endpoints, you will need to specify your Mealie URL as an Allowed Origin.
|
||||
|
||||
4. Configure allowed scopes
|
||||
|
||||
The scopes required are `openid profile email`
|
||||
|
||||
If you plan to use the [groups](#groups) to configure access within Mealie, you will need to also add the scope defined by the `OIDC_GROUPS_CLAIM` environment variable. The default claim is `groups`
|
||||
|
||||
## Mealie Setup
|
||||
|
||||
Take the client id and your discovery URL and update your environment variables to include the required OIDC variables described in [Installation - Backend Configuration](../installation/backend-config.md#openid-connect-oidc).
|
||||
|
||||
### Groups
|
||||
|
||||
There are two (optional) [environment variables](../installation/backend-config.md#openid-connect-oidc) that can control which of the users in your IdP can log in to Mealie and what permissions they will have. Keep in mind that these groups **do not necessarily correspond to groups in Mealie**. The groups claim is configurable via the `OIDC_GROUPS_CLAIM` environment variable. The groups should be **defined in your IdP** and be returned in the configured claim value.
|
||||
|
||||
`OIDC_USER_GROUP`: Users must be a part of this group (within your IdP) to be able to log in.
|
||||
|
||||
`OIDC_ADMIN_GROUP`: Users that are in this group (within your IdP) will be made an **admin** in Mealie.
|
||||
|
||||
## Examples
|
||||
|
||||
Example configurations for several Identity Providers have been provided by the Community in the [GitHub Discussions](https://github.com/mealie-recipes/mealie/discussions/categories/oauth-provider-example).
|
||||
|
||||
If you don't see your provider and have successfully set it up, please consider [creating your own example](https://github.com/mealie-recipes/mealie/discussions/new?category=oauth-provider-example) so that others can have a smoother setup.
|
||||
@@ -2,14 +2,14 @@
|
||||
|
||||
## How do I enable "smart" ingredient handling?
|
||||
|
||||
You might have noticed that scaling up a recipe or making a shopping list doesn't by default handle the ingredients in a way you might expect. Depending on your settings, scaling up might yield things like `2 1 cup broth` instead of `2 cup broth`. And making shopping lists from reciepes that have shared ingredients can yield multiple lines of the same ingredient. **But**, mealie has a mechanism to intelligently handle ingredients and make your day better. How?
|
||||
You might have noticed that scaling up a recipe or making a shopping list doesn't by default handle the ingredients in a way you might expect. Depending on your settings, scaling up might yield things like `2 1 cup broth` instead of `2 cup broth`. And, making shopping lists from recipes that have shared ingredients can yield multiple lines of the same ingredient. **But**, Mealie has a mechanism to intelligently handle ingredients and make your day better. How?
|
||||
### Set up your Foods and Units
|
||||
Do the following just **once**. Doing this applies to your whole group, so be careful.
|
||||
|
||||
1. Click on your name in the upper left corner to get to your settings
|
||||
2. In the bottom right, select `Manage Data`
|
||||
3. In the Management page, make sure that a little orange button says `Foods`
|
||||
4. If your Foods database is empty, click `Seed` and choose your language. You should end up with a list of foods. (Wait bit for seeding to happen, and try not to seed more than once or you will have duplicates)
|
||||
4. If your Foods database is empty, click `Seed` and choose your language. You should end up with a list of foods. (Wait a bit for seeding to happen, and try not to seed more than once or you will have duplicates)
|
||||
5. Click the little orange `Foods` button and now choose `Units`.
|
||||
6. Click `Seed` and choose your language. You should end up with a list of units (e.g. `tablespoon`)
|
||||
|
||||
@@ -26,16 +26,16 @@ Do the following for each recipe you want to intelligently handle ingredients.
|
||||
6. Click the Edit button/icon again
|
||||
7. Scroll to the ingredients and you should see new fields for Amount, Unit, Food, and Note. The Note in particular will contain the original text of the Recipe.
|
||||
8. Click `Parse` and you will be taken to the ingredient parsing page.
|
||||
9. Choose your parser. The `Natural Language Parser` works very well, but you can also use the `Brute Parser`.
|
||||
9. Choose your parser. The `Natural Language Parser` works very well, but you can also use the `Brute Parser`, or the `OpenAI Parser` if you've [enabled OpenAI support](./installation/backend-config.md#openai).
|
||||
10. Click `Parse All`, and your ingredients should be separated out into Units and Foods based on your seeding in Step 1 above.
|
||||
11. For ingredients where the Unit or Food was not found, you can click a button to accept an automatically suggested Food to add to the database. Or, manually enter the Unit/Food and hit `Enter` (or click `Create`) to add it to the database
|
||||
12. When done, click `Save All` and you will be taken back to the recipe. Now the Unit and Food fields of the recipe should be filled out.
|
||||
|
||||
Scaling up this recipe or adding it to a Shopping List will now smartly take care of ingredient amounts and duplicate combinations.
|
||||
|
||||
## Is it Safe to Upgrade Mealie?
|
||||
## Is it safe to upgrade Mealie?
|
||||
|
||||
Yes. If you are using the v1 branches (including beta), you can upgrade to the latest version of Mealie without performing a site Export/Restore. This process was required in previous versions of Mealie, however we've automated the database migration process to make it easier to upgrade. Not that if you were using the v0.5.x version, you CANNOT upgrade to the latest version automatically. You must follow the migration instructions in the documentation.
|
||||
Yes. If you are using the v1 branches (including beta), you can upgrade to the latest version of Mealie without performing a site Export/Restore. This process was required in previous versions of Mealie, however we've automated the database migration process to make it easier to upgrade. Note that if you were using the v0.5.x version, you CANNOT upgrade to the latest version automatically. You must follow the migration instructions in the documentation.
|
||||
|
||||
- [Migration From v0.5.x](./migrating-to-mealie-v1.md)
|
||||
|
||||
@@ -45,7 +45,7 @@ You can change the theme by settings the environment variables.
|
||||
|
||||
- [Backend Config - Themeing](./installation/backend-config.md#themeing)
|
||||
|
||||
## How can I change the Login Session Timeout?
|
||||
## How can I change the login session timeout?
|
||||
|
||||
Login session can be configured by setting the `TOKEN_TIME` variable on the backend container.
|
||||
|
||||
@@ -53,7 +53,7 @@ Login session can be configured by setting the `TOKEN_TIME` variable on the back
|
||||
|
||||
## Can I serve Mealie on a subpath?
|
||||
|
||||
No. Due to limitations from the Javascript Framework, mealie doesn't support serving Mealie on a subpath.
|
||||
No. Due to limitations from the JavaScript Framework, Mealie doesn't support serving Mealie on a subpath.
|
||||
|
||||
## Can I install Mealie without docker?
|
||||
|
||||
@@ -79,7 +79,7 @@ Mealie's Recipe Steps and other fields support markdown syntax and therefore sup
|
||||
If your account has been locked by bad password attempts, you can use an administrator account to unlock another account. Alternatively, you can unlock all accounts via a script within the container.
|
||||
|
||||
```shell
|
||||
docker exec -it mealie-next bash
|
||||
docker exec -it mealie bash
|
||||
|
||||
python /app/mealie/scripts/reset_locked_users.py
|
||||
```
|
||||
@@ -89,18 +89,23 @@ python /app/mealie/scripts/reset_locked_users.py
|
||||
You can change your password by going to the user profile page and clicking the "Change Password" button. Alternatively you can use the following script to change your password via the CLI if you are locked out of your account.
|
||||
|
||||
```shell
|
||||
docker exec -it mealie-next bash
|
||||
docker exec -it mealie bash
|
||||
|
||||
python /app/mealie/scripts/change_password.py
|
||||
```
|
||||
|
||||
## How do private groups and recipes work?
|
||||
## I can't log in with external auth. How can I change my authentication method?
|
||||
|
||||
Follow the [steps above](#how-can-i-change-my-password) for changing your password. You will be prompted if you would like to switch your authentication method back to local auth so you can log in again.
|
||||
|
||||
## How do private groups, households, and recipes work?
|
||||
|
||||
Managing private groups and recipes can be confusing. The following diagram and notes should help explain how they work to determine if a recipe can be shared publicly.
|
||||
|
||||
- Private links that are generated from the recipe page using the `Share` button bypass all group and recipe permissions
|
||||
- Private groups block all access to recipes, including those that are public, except as noted above.
|
||||
- Groups with "Allow users outside of your group to see your recipes" disabled block all access to recipes, except as noted above.
|
||||
- Private households, similar to private groups, block all access to recipes, except as noted above.
|
||||
- Households with "Allow users outside of your group to see your recipes" disabled block all access to recipes, except as noted above.
|
||||
- Private recipes block all access to the recipe from public links. This does not affect Private Links.
|
||||
|
||||
```mermaid
|
||||
@@ -108,7 +113,8 @@ stateDiagram-v2
|
||||
r1: Request Access
|
||||
p1: Using Private Link?
|
||||
p2: Is Group Private?
|
||||
p3: Is Recipe Private?
|
||||
p3: Is Household Private?
|
||||
p4: Is Recipe Private?
|
||||
s1: Deny Access
|
||||
n1: Allow Access
|
||||
|
||||
@@ -121,13 +127,16 @@ stateDiagram-v2
|
||||
p2 --> p3: No
|
||||
|
||||
p3 --> s1: Yes
|
||||
p3 --> n1: No
|
||||
p3 --> p4: No
|
||||
|
||||
p4 --> s1: Yes
|
||||
p4 --> n1: No
|
||||
```
|
||||
|
||||
For more information, check out the [Permissions and Public Access guide](./usage/permissions-and-public-access.md).
|
||||
For more information on public access, check out the [Permissions and Public Access guide](./usage/permissions-and-public-access.md). For more information on groups vs. households, check out the [Groups and Households](./features.md#groups-and-households) section in the Features guide.
|
||||
|
||||
## Can I use fail2ban with mealie?
|
||||
Yes, mealie is configured to properly forward external IP addresses into the `mealie.log` logfile. Note that due to restrictions in docker, IP address forwarding only works on Linux.
|
||||
## Can I use fail2ban with Mealie?
|
||||
Yes, Mealie is configured to properly forward external IP addresses into the `mealie.log` logfile. Note that due to restrictions in docker, IP address forwarding only works on Linux.
|
||||
|
||||
Your fail2ban usage should look like the following:
|
||||
```
|
||||
@@ -135,13 +144,21 @@ Use datepattern : %d-%b-%y %H:%M:%S : Day-MON-Year2 24hour:Minute:Second
|
||||
Use failregex line : ^ERROR:\s+Incorrect username or password from <HOST>
|
||||
```
|
||||
|
||||
## Why An API?
|
||||
An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based on Meal Plan data to remind you to defrost the chicken, marinade the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation.
|
||||
## Why an API?
|
||||
An API allows integration into applications like [Home Assistant](https://www.home-assistant.io/) that can act as notification engines to provide custom notifications based on Meal Plan data to remind you to defrost the chicken, marinate the steak, or start the CrockPot. Additionally, you can access nearly any backend service via the API giving you total control to extend the application. To explore the API spin up your server and navigate to http://yourserver.com/docs for interactive API documentation.
|
||||
|
||||
## Why a Database?
|
||||
Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project, it is a valid concern to be worried about your data. Mealie specifically addresses this concern by provided automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in control of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you.
|
||||
## Why a database?
|
||||
Some users of static-site generator applications like ChowDown have expressed concerns about their data being stuck in a database. Considering this is a new project, it is a valid concern to be worried about your data. Mealie specifically addresses this concern by providing automatic daily backups that export your data in json, plain-text markdown files, and/or custom Jinja2 templates. **This puts you in control of how your data is represented** when exported from Mealie, which means you can easily migrate to any other service provided Mealie doesn't work for you.
|
||||
|
||||
As to why we need a database?
|
||||
|
||||
- **Developer Experience:** Without a database, a lot of the work to maintain your data is taken on by the developer instead of a battle-tested platform for storing data.
|
||||
- **Multi User Support:** With a solid database as backend storage for your data, Mealie can better support multi-user sites and avoid read/write access errors when multiple actions are taken at the same time.
|
||||
|
||||
## Why is there no "Keep Screen Alive" button when I access a recipe?
|
||||
You've perhaps visited the Mealie Demo and noticed that it had a "Keep Screen Alive" button, but it doesn't show up in your own Mealie instance.
|
||||
There are typically two possible reasons for this:
|
||||
1. You're accessing your Mealie instance without using HTTPS. The Wake Lock API is only available if HTTPS is used. Read more here: https://developer.mozilla.org/en-US/docs/Web/API/Screen_Wake_Lock_API
|
||||
2. You're accessing your Mealie instance on a browser which doesn't support the API. You can test this here: https://vueuse.org/core/useWakeLock/#demo
|
||||
|
||||
Solving the above points will most likely resolve your issues. However, if you're still having problems, you are welcome to create an issue. Just remember to add that you've tried the above two options first in your description.
|
||||
|
||||
@@ -14,10 +14,14 @@ Mealie offers two main ways to create recipes. You can use the integrated recipe
|
||||
|
||||
Mealie supports importing recipes from a few other sources besides websites. Currently the following sources are supported:
|
||||
|
||||
- Mealie Pre v1
|
||||
- Tandoor
|
||||
- Nextcloud Cookbooks
|
||||
- Paprika
|
||||
- Chowdown
|
||||
- Plan to Eat
|
||||
- Recipe Keeper
|
||||
- Copy Me That
|
||||
- My Recipe Box
|
||||
|
||||
You can access these options on your installation at the `/group/migrations` page on your installation. If you'd like to see another source added, feel free to request so on Github.
|
||||
|
||||
@@ -31,7 +35,6 @@ Mealie has a robust and flexible recipe organization system with a few different
|
||||
|
||||
#### Categories
|
||||
|
||||
|
||||
Categories are the overarching organizer for recipes. You can assign as many categories as you'd like to a recipe, but we recommend that you try to limit the categories you assign to a recipe to one or two. This helps keep categories as focused as possible while still allowing you to find recipes that are related to each other. For example, you might assign a recipe to the category **Breakfast**, **Lunch**, **Dinner**, or **Side**.
|
||||
|
||||
[Categories Demo](https://demo.mealie.io/g/home/recipes/categories){ .md-button .md-button--primary }
|
||||
@@ -69,24 +72,75 @@ Mealie uses a calendar like view to help you plan your meals. It shows you the p
|
||||
!!! tip
|
||||
You can also add a "Note" type entry to your meal-plan when you want to include something that might not have a specific recipes. This is great for leftovers, or for ordering out.
|
||||
|
||||
[Mealplanner Demo](https://demo.mealie.io/group/mealplan/planner/view){ .md-button .md-button--primary }
|
||||
[Mealplanner Demo](https://demo.mealie.io/household/mealplan/planner/view){ .md-button .md-button--primary }
|
||||
|
||||
### Planner Rules
|
||||
|
||||
The meal planner has the concept of plan rules. These offer a flexible way to use your organizers to customize how a random recipe is inserted into your meal plan. You can set rules to restrict the pool of recipes based on the Tags and/or Categories of a recipe. Additionally, since meal plans have a Breakfast, Lunch, Dinner, and Snack labels, you can specifically set a rule to be active for a **specific meal type** or even a **specific day of the week.**
|
||||
|
||||
[Planner Settings Demo](https://demo.mealie.io/group/mealplan/settings){ .md-button .md-button--primary }
|
||||
[Planner Settings Demo](https://demo.mealie.io/household/mealplan/settings){ .md-button .md-button--primary }
|
||||
|
||||
## Shopping Lists
|
||||
|
||||
The shopping lists feature is a great way to keep track of what you need to buy for your next meal. You can add items directly to the shopping list or link a recipe and all of it's ingredients to track meals during the week.
|
||||
|
||||
!!! warning
|
||||
At this time there isn't a tight integration between meal-plans and shopping lists; however, it's something we have planned for the future.
|
||||
|
||||
|
||||
[Shopping List Demo](https://demo.mealie.io/shopping-lists){ .md-button .md-button--primary }
|
||||
|
||||
## Integrations
|
||||
|
||||
Mealie is designed to integrate with many different external services. There are several ways you can integrate with Mealie to achieve custom IoT automations, data synchronization, and anything else you can think of. [You can work directly with Mealie through the API](./api-usage.md), or leverage other services to make seamless integrations.
|
||||
|
||||
### Notifiers
|
||||
|
||||
Notifiers are event-driven notifications sent when specific actions are performed within Mealie. Some actions include:
|
||||
- creating a recipe
|
||||
- adding items to a shopping list
|
||||
- creating a new mealplan
|
||||
|
||||
Notifiers use the [Apprise library](https://github.com/caronc/apprise/wiki), which integrates with a large number of notification services. In addition, certain custom notifiers send basic event data to the consumer (e.g. the `id` of the resource). These include:
|
||||
|
||||
- `form` and `forms`
|
||||
- `json` and `jsons`
|
||||
- `xml` and `xmls`
|
||||
|
||||
[Notifiers Demo](https://demo.mealie.io/household/notifiers){ .md-button .md-button--primary }
|
||||
|
||||
### Webhooks
|
||||
|
||||
Unlike notifiers, which are event-driven notifications, Webhooks allow you to send scheduled notifications to your desired endpoint. Webhooks are sent on the day of a scheduled mealplan, at the specified time, and contain the mealplan data in the request.
|
||||
|
||||
[Webhooks Demo](https://demo.mealie.io/household/webhooks){ .md-button .md-button--primary }
|
||||
|
||||
### Recipe Actions
|
||||
|
||||
Recipe Actions are custom actions you can add to all recipes in Mealie. This is a great way to add custom integrations that are fired manually. There are two types of recipe actions:
|
||||
|
||||
1. link - these actions will take you directly to an external page. Merge fields can be used to customize the URL for each recipe
|
||||
2. post - these actions will send a `POST` request to the specified URL, with the recipe JSON in the request body. These can be used, for instance, to manually trigger a webhook in Home Assistant
|
||||
|
||||
When using the "link" action type, Recipe Action URLs can include merge fields to inject the current recipe's data. For instance, you can use the following URL to include a Google search with the recipe's slug:
|
||||
```
|
||||
https://www.google.com/search?q=${slug}
|
||||
```
|
||||
|
||||
When the action is clicked on, the `${slug}` field is replaced with the recipe's slug value. So, for example, it might take you to this URL on one of your recipes:
|
||||
```
|
||||
https://www.google.com/search?q=pasta-fagioli
|
||||
```
|
||||
|
||||
A common use case for "link" recipe actions is to integrate with the Bring! shopping list. Simply add a Recipe Action with the following URL:
|
||||
```
|
||||
https://api.getbring.com/rest/bringrecipes/deeplink?url=${url}&source=web
|
||||
```
|
||||
|
||||
Below is a list of all valid merge fields:
|
||||
|
||||
- ${id}
|
||||
- ${slug}
|
||||
- ${url}
|
||||
|
||||
To add, modify, or delete Recipe Actions, visit the Data Management page (more on that below).
|
||||
|
||||
## Data Management
|
||||
|
||||
@@ -109,6 +163,46 @@ Managing a robust collection of recipes inevitable requires a lot of data. Meali
|
||||
|
||||
[Data Management Demo](https://demo.mealie.io/group/data/foods){ .md-button .md-button--primary }
|
||||
|
||||
## Groups and Households
|
||||
|
||||
Mealie lets you fully customize how you organize your users. You can use Groups to host multiple instances (or tenants) of Mealie which are completely isolated from each other. Within each Group you can organize users into Households which allow users to share recipes, but keep other items separate (e.g. meal plans and shopping lists).
|
||||
|
||||
### Groups
|
||||
|
||||
Groups are fully isolated instances of Mealie. Think of a goup as a completely separate, fully self-contained site. There is no data shared between groups. Each group has its own users, recipes, tags, categories, etc. A user logged-in to one group cannot make any changes to another.
|
||||
|
||||
Common use cases for groups include:
|
||||
- Hosting multiple instances of Mealie for others who want to keep their data private and secure
|
||||
- Creating completely isolated recipe pools
|
||||
|
||||
### Households
|
||||
|
||||
Households are subdivisions within a single Group. Households maintain their own users and settings, while sharing their recipes with other households. Households also share organizers (tags, categories, etc.) with the entire group. Meal Plans, Shopping Lists, and Integrations are only accessible within a household.
|
||||
|
||||
Common use cases for households include:
|
||||
- Sharing a common recipe pool amongst families
|
||||
- Maintaining separate meal plans and shopping lists from other households
|
||||
- Maintaining separate integrations and customizations from other households
|
||||
|
||||
```mermaid
|
||||
flowchart TB
|
||||
mealie[(Mealie)] ==> groups
|
||||
|
||||
%% Groups
|
||||
groups((Groups)) --> ingredients & organizers
|
||||
groups((Groups)) ====> households
|
||||
ingredients("Ingredients<br/>(Foods, Units, Labels)")
|
||||
organizers("Organizers<br/>(Categories, Tags, Tools)")
|
||||
|
||||
%% Households
|
||||
households((Households)) --> recipes & mealplans & shoppinglists & integrations
|
||||
|
||||
recipes(Recipes & Cookbooks)
|
||||
mealplans(Meal Plans)
|
||||
shoppinglists(Shopping Lists)
|
||||
integrations("Integrations<br/>(Notifiers, Webhooks)")
|
||||
```
|
||||
|
||||
## Server Administration
|
||||
|
||||
### Site Settings
|
||||
@@ -117,11 +211,13 @@ The site settings page contains general information about your installation like
|
||||
|
||||
[Settings Demo](https://demo.mealie.io/admin/site-settings){ .md-button .md-button--primary }
|
||||
|
||||
### Users and Group
|
||||
### Users, Households, and Groups
|
||||
|
||||
There is a small management area for users and groups that allows you to create, edit, and delete users and groups.
|
||||
There is a small management area for users, households, and groups.
|
||||
|
||||
[Users Demo](https://demo.mealie.io/admin/manage/users){ .md-button .md-button--primary }
|
||||
[Households Demo](https://demo.mealie.io/admin/manage/households){ .md-button .md-button--primary }
|
||||
[Groups Demo](https://demo.mealie.io/admin/manage/groups){ .md-button .md-button--primary }
|
||||
|
||||
### Backups
|
||||
|
||||
|
||||
@@ -4,17 +4,23 @@
|
||||
|
||||
### General
|
||||
|
||||
| Variables | Default | Description |
|
||||
| ------------- | :-------------------: | ----------------------------------------------------------------------------------- |
|
||||
| PUID | 911 | UserID permissions between host OS and container |
|
||||
| PGID | 911 | GroupID permissions between host OS and container |
|
||||
| DEFAULT_GROUP | Home | The default group for users |
|
||||
| BASE_URL | http://localhost:8080 | Used for Notifications |
|
||||
| TOKEN_TIME | 48 | The time in hours that a login/auth token is valid |
|
||||
| API_PORT | 9000 | The port exposed by backend API. **Do not change this if you're running in Docker** |
|
||||
| API_DOCS | True | Turns on/off access to the API documentation locally. |
|
||||
| TZ | UTC | Must be set to get correct date/time on the server |
|
||||
| ALLOW_SIGNUP | true | Allow user sign-up without token |
|
||||
| Variables | Default | Description |
|
||||
| ----------------------------- | :-------------------: | -------------------------------------------------------------------------------------------------- |
|
||||
| PUID | 911 | UserID permissions between host OS and container |
|
||||
| PGID | 911 | GroupID permissions between host OS and container |
|
||||
| DEFAULT_GROUP | Home | The default group for users |
|
||||
| DEFAULT_HOUSEHOLD | Family | The default household for users in each group |
|
||||
| BASE_URL | http://localhost:8080 | Used for Notifications |
|
||||
| TOKEN_TIME | 48 | The time in hours that a login/auth token is valid |
|
||||
| API_PORT | 9000 | The port exposed by backend API. **Do not change this if you're running in Docker** |
|
||||
| API_DOCS | True | Turns on/off access to the API documentation locally |
|
||||
| TZ | UTC | Must be set to get correct date/time on the server |
|
||||
| ALLOW_SIGNUP<super>\*</super> | false | Allow user sign-up without token |
|
||||
| LOG_CONFIG_OVERRIDE | | Override the config for logging with a custom path |
|
||||
| LOG_LEVEL | info | Logging level (e.g. critical, error, warning, info, debug) |
|
||||
| DAILY_SCHEDULE_TIME | 23:45 | The time of day to run daily server tasks, in HH:MM format. Use the server's local time, *not* UTC |
|
||||
|
||||
<super>\*</super> Starting in v1.4.0 this was changed to default to `false` as part of a security review of the application.
|
||||
|
||||
### Security
|
||||
|
||||
@@ -25,14 +31,15 @@
|
||||
|
||||
### Database
|
||||
|
||||
| Variables | Default | Description |
|
||||
| ----------------- | :------: | -------------------------------- |
|
||||
| DB_ENGINE | sqlite | Optional: 'sqlite', 'postgres' |
|
||||
| POSTGRES_USER | mealie | Postgres database user |
|
||||
| POSTGRES_PASSWORD | mealie | Postgres database password |
|
||||
| POSTGRES_SERVER | postgres | Postgres database server address |
|
||||
| POSTGRES_PORT | 5432 | Postgres database port |
|
||||
| POSTGRES_DB | mealie | Postgres database name |
|
||||
| Variables | Default | Description |
|
||||
| --------------------- | :------: | ----------------------------------------------------------------------- |
|
||||
| DB_ENGINE | sqlite | Optional: 'sqlite', 'postgres' |
|
||||
| POSTGRES_USER | mealie | Postgres database user |
|
||||
| POSTGRES_PASSWORD | mealie | Postgres database password |
|
||||
| POSTGRES_SERVER | postgres | Postgres database server address |
|
||||
| POSTGRES_PORT | 5432 | Postgres database port |
|
||||
| POSTGRES_DB | mealie | Postgres database name |
|
||||
| POSTGRES_URL_OVERRIDE | None | Optional Postgres URL override to use instead of POSTGRES\_\* variables |
|
||||
|
||||
### Email
|
||||
|
||||
@@ -50,12 +57,18 @@
|
||||
|
||||
Changing the webworker settings may cause unforeseen memory leak issues with Mealie. It's best to leave these at the defaults unless you begin to experience issues with multiple users. Exercise caution when changing these settings
|
||||
|
||||
| Variables | Default | Description |
|
||||
| ---------------- | :-----: | --------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| WEB_GUNICORN | false | Enables Gunicorn to manage Uvicorn web for multiple works |
|
||||
| WORKERS_PER_CORE | 1 | Set the number of workers to the number of CPU cores multiplied by this value (Value \* CPUs). More info [here][workers_per_core] |
|
||||
| MAX_WORKERS | None | Set the maximum number of workers to use. Default is not set meaning unlimited. More info [here][max_workers] |
|
||||
| WEB_CONCURRENCY | 2 | Override the automatic definition of number of workers. More info [here][web_concurrency] |
|
||||
| Variables | Default | Description |
|
||||
| --------------- | :-----: | -------------------------------------------------------------------------------- |
|
||||
| UVICORN_WORKERS | 1 | Sets the number of workers for the web server. [More info here][unicorn_workers] |
|
||||
|
||||
### TLS
|
||||
|
||||
Use this only when mealie is run without a webserver or reverse proxy.
|
||||
|
||||
| Variables | Default | Description |
|
||||
| -------------------- | :-----: | ------------------------ |
|
||||
| TLS_CERTIFICATE_PATH | None | File path to Certificate |
|
||||
| TLS_PRIVATE_KEY_PATH | None | File path to private key |
|
||||
|
||||
### LDAP
|
||||
|
||||
@@ -75,7 +88,50 @@ Changing the webworker settings may cause unforeseen memory leak issues with Mea
|
||||
| LDAP_NAME_ATTRIBUTE | name | The LDAP attribute that maps to the user's name |
|
||||
| LDAP_MAIL_ATTRIBUTE | mail | The LDAP attribute that maps to the user's email |
|
||||
|
||||
### Themeing
|
||||
### OpenID Connect (OIDC)
|
||||
|
||||
:octicons-tag-24: v1.4.0
|
||||
|
||||
For usage, see [Usage - OpenID Connect](../authentication/oidc-v2.md)
|
||||
|
||||
| Variables | Default | Description |
|
||||
|---------------------------------------------------|:-------:|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| OIDC_AUTH_ENABLED | False | Enables authentication via OpenID Connect |
|
||||
| OIDC_SIGNUP_ENABLED | True | Enables new users to be created when signing in for the first time with OIDC |
|
||||
| OIDC_CONFIGURATION_URL | None | The URL to the OIDC configuration of your provider. This is usually something like https://auth.example.com/.well-known/openid-configuration |
|
||||
| OIDC_CLIENT_ID | None | The client id of your configured client in your provider |
|
||||
| OIDC_CLIENT_SECRET <br/> :octicons-tag-24: v2.0.0 | None | The client secret of your configured client in your provider |
|
||||
| OIDC_USER_GROUP | None | If specified, only users belonging to this group will be able to successfully authenticate. For more information see [this page](../authentication/oidc-v2.md#groups) |
|
||||
| OIDC_ADMIN_GROUP | None | If specified, users belonging to this group will be able to successfully authenticate *and* be made an admin. For more information see [this page](../authentication/oidc-v2.md#groups) |
|
||||
| OIDC_AUTO_REDIRECT | False | If `True`, then the login page will be bypassed and you will be sent directly to your Identity Provider. You can still get to the login page by adding `?direct=1` to the login URL |
|
||||
| OIDC_PROVIDER_NAME | OAuth | The provider name is shown in SSO login button. "Login with <OIDC_PROVIDER_NAME\>" |
|
||||
| OIDC_REMEMBER_ME | False | Because redirects bypass the login screen, you cant extend your session by clicking the "Remember Me" checkbox. By setting this value to true, a session will be extended as if "Remember Me" was checked |
|
||||
| OIDC_USER_CLAIM | email | This is the claim which Mealie will use to look up an existing user by (e.g. "email", "preferred_username") |
|
||||
| OIDC_NAME_CLAIM | name | This is the claim which Mealie will use for the users Full Name |
|
||||
| OIDC_GROUPS_CLAIM | groups | Optional if not using `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP`. This is the claim Mealie will request from your IdP and will use to compare to `OIDC_USER_GROUP` or `OIDC_ADMIN_GROUP` to allow the user to log in to Mealie or is set as an admin. **Your IdP must be configured to grant this claim** |
|
||||
| OIDC_SCOPES_OVERRIDE | None | Advanced configuration used to override the scopes requested from the IdP. **Most users won't need to change this**. At a minimum, 'openid profile email' are required. |
|
||||
| OIDC_TLS_CACERTFILE | None | File path to Certificate Authority used to verify server certificate (e.g. `/path/to/ca.crt`) |
|
||||
|
||||
### OpenAI
|
||||
|
||||
:octicons-tag-24: v1.7.0
|
||||
|
||||
Mealie supports various integrations using OpenAI. For more information, check out our [OpenAI documentation](./open-ai.md).
|
||||
For custom mapping variables (e.g. OPENAI_CUSTOM_HEADERS) you should pass values as JSON encoded strings (e.g. `OPENAI_CUSTOM_PARAMS='{"k1": "v1", "k2": "v2"}'`)
|
||||
|
||||
| Variables | Default | Description |
|
||||
| ---------------------------- | :-----: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| OPENAI_BASE_URL | None | The base URL for the OpenAI API. If you're not sure, leave this empty to use the standard OpenAI platform |
|
||||
| OPENAI_API_KEY | None | Your OpenAI API Key. Enables OpenAI-related features |
|
||||
| OPENAI_MODEL | gpt-4o | Which OpenAI model to use. If you're not sure, leave this empty |
|
||||
| OPENAI_CUSTOM_HEADERS | None | Custom HTTP headers to add to all OpenAI requests. This should generally be left empty unless your custom service requires them |
|
||||
| OPENAI_CUSTOM_PARAMS | None | Custom HTTP query params to add to all OpenAI requests. This should generally be left empty unless your custom service requires them |
|
||||
| OPENAI_ENABLE_IMAGE_SERVICES | True | Whether to enable OpenAI image services, such as creating recipes via image. Leave this enabled unless your custom model doesn't support it, or you want to reduce costs |
|
||||
| OPENAI_WORKERS | 2 | Number of OpenAI workers per request. Higher values may increase processing speed, but will incur additional API costs |
|
||||
| OPENAI_SEND_DATABASE_DATA | True | Whether to send Mealie data to OpenAI to improve request accuracy. This will incur additional API costs |
|
||||
| OPENAI_REQUEST_TIMEOUT | 60 | The number of seconds to wait for an OpenAI request to complete before cancelling the request. Leave this empty unless you're running into timeout issues on slower hardware |
|
||||
|
||||
### Theming
|
||||
|
||||
Setting the following environmental variables will change the theme of the frontend. Note that the themes are the same for all users. This is a break-change when migration from v0.x.x -> 1.x.x.
|
||||
|
||||
@@ -96,7 +152,26 @@ Setting the following environmental variables will change the theme of the front
|
||||
| THEME_DARK_WARNING | #FF6D00 | Dark Theme Config Variable |
|
||||
| THEME_DARK_ERROR | #EF5350 | Dark Theme Config Variable |
|
||||
|
||||
### Docker Secrets
|
||||
|
||||
[workers_per_core]: https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/2daa3e3873c837d5781feb4ff6a40a89f791f81b/README.md#workers_per_core
|
||||
[max_workers]: https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/2daa3e3873c837d5781feb4ff6a40a89f791f81b/README.md#max_workers
|
||||
[web_concurrency]: https://github.com/tiangolo/uvicorn-gunicorn-docker/blob/2daa3e3873c837d5781feb4ff6a40a89f791f81b/README.md#web_concurrency
|
||||
Setting a credential can be done using secrets when running in a Docker container.
|
||||
This can be used to avoid leaking passwords through compose files, environment variables, or command-line history.
|
||||
For example, to configure the Postgres database password in Docker compose, create a file on the host that contains only the password, and expose that file to the Mealie service as a secret with the correct name.
|
||||
Note that environment variables take priority over secrets, so any previously defined environment variables should be removed when migrating to secrets.
|
||||
|
||||
```yaml
|
||||
services:
|
||||
mealie:
|
||||
...
|
||||
environment:
|
||||
...
|
||||
POSTGRES_USER: postgres
|
||||
secrets:
|
||||
- POSTGRES_PASSWORD
|
||||
|
||||
secrets:
|
||||
POSTGRES_PASSWORD:
|
||||
file: postgrespassword.txt
|
||||
```
|
||||
|
||||
[unicorn_workers]: https://www.uvicorn.org/deployment/#built-in
|
||||
|
||||
@@ -31,7 +31,7 @@ To deploy mealie on your local network, it is highly recommended to use Docker t
|
||||
We've gone through a few versions of Mealie v1 deployment targets. We have settled on a single container deployment, and we've begun publishing the nightly container on github containers. If you're looking to move from the old nightly (split containers _or_ the omni image) to the new nightly, there are a few things you need to do:
|
||||
|
||||
1. Take a backup just in case!
|
||||
2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v1.0.0-RC1.1`
|
||||
2. Replace the image for the API container with `ghcr.io/mealie-recipes/mealie:v2.4.1`
|
||||
3. Take the external port from the frontend container and set that as the port mapped to port `9000` on the new container. The frontend is now served on port 9000 from the new container, so it will need to be mapped for you to have access.
|
||||
4. Restart the container
|
||||
|
||||
@@ -58,16 +58,16 @@ The following steps were tested on a Ubuntu 20.04 server, but should work for mo
|
||||
4. Create a docker-compose.yaml file in the mealie directory: `touch docker-compose.yaml`
|
||||
5. Use the text editor of your choice to edit the file and copy the contents of the docker-compose template for the deployment type you want to use: `nano docker-compose.yaml` or `vi docker-compose.yaml`
|
||||
|
||||
## Step 2: Customizing The `docker-compose.yaml` files.
|
||||
## Step 3: Customizing The `docker-compose.yaml` files.
|
||||
|
||||
After you've decided setup the files it's important to set a few ENV variables to ensure that you can use all the features of Mealie. I recommend that you verify and check that:
|
||||
|
||||
- [x] You've configured the relevant ENV variables for your database selection in the `docker-compose.yaml` files.
|
||||
- [x] You've configured the [SMTP server settings](./backend-config.md#email) (used for invitations, password resets, etc). You can setup a [google app password](https://support.google.com/accounts/answer/185833?hl=en) if you want to send email via gmail.
|
||||
- [x] You've set the [`BASE_URL`](./backend-config.md#general) variable.
|
||||
- [x] You've set the `DEFAULT_EMAIL` and `DEFAULT_GROUP` variable.
|
||||
- [x] You've set the `DEFAULT_EMAIL`, `DEFAULT_GROUP`, and `DEFAULT_HOUSEHOLD` variables.
|
||||
|
||||
## Step 3: Startup
|
||||
## Step 4: Startup
|
||||
|
||||
After you've configured your database and updated the `docker-compose.yaml` files, you can start Mealie by running the following command in the directory where you've added your `docker-compose.yaml`.
|
||||
|
||||
@@ -87,11 +87,11 @@ You should see the containers start up without error. You should now be able to
|
||||
|
||||
**Password:** MyPassword
|
||||
|
||||
## Step 4: Validate Installation
|
||||
## Step 5: Validate Installation
|
||||
|
||||
After the startup is complete, you should see a login screen. Use the default credentials above to log in and navigate to `/admin/site-settings`. Here, you'll find a summary of your configuration details and their respective status. Before proceeding, you should validate that the configuration is correct. For any warnings or errors the page will display an error and notify you of what you need to verify.
|
||||
|
||||
## Step 5: Backup
|
||||
## Step 6: Backup
|
||||
|
||||
While v1.0.0 is a great step to data-stability and security, it's not a backup. Mealie provides a full site data backup mechanism through the UI.
|
||||
|
||||
@@ -101,7 +101,7 @@ These backups are just plain .zip files that you can download from the UI or acc
|
||||
|
||||
### Docker Tags
|
||||
|
||||
See all available tags on [GitHub](https://github.com/mealie-recipes/mealie/pkgs/container/mealie). We do not currently publish new images to Dockerhub.
|
||||
See all available tags on [GitHub](https://github.com/mealie-recipes/mealie/pkgs/container/mealie).
|
||||
|
||||
`ghcr.io/mealie-recipes/mealie:nightly`
|
||||
|
||||
|
||||
16
docs/docs/documentation/getting-started/installation/logs.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# Logs
|
||||
|
||||
:octicons-tag-24: v1.5.0
|
||||
|
||||
## Highlights
|
||||
|
||||
- Logs are written to `/app/data/mealie.log` by default in the container.
|
||||
- Logs are also written to stdout and stderr.
|
||||
- You can adjust the log level using the `LOG_LEVEL` environment variable.
|
||||
|
||||
## Configuration
|
||||
|
||||
Starting in v1.5.0 logging is now highly configurable. Using the `LOG_CONFIG_OVERRIDE` you can provide the application with a custom configuration to log however you'd like. This configuration file is based off the [Python Logging Config](https://docs.python.org/3/library/logging.config.html#logging.config.fileConfig). It can be difficult to understand the configuration at first, so here are some resources to help get started.
|
||||
|
||||
- This [YouTube Video](https://www.youtube.com/watch?v=9L77QExPmI0) for a great walkthrough on the logging file format.
|
||||
- Our [Logging Config](https://github.com/mealie-recipes/mealie/blob/mealie-next/mealie/core/logger/logconf.prod.json).
|
||||
@@ -0,0 +1,18 @@
|
||||
# OpenAI Integration
|
||||
|
||||
:octicons-tag-24: v1.7.0
|
||||
|
||||
Mealie's OpenAI integration enables several features and enhancements throughout the application. To enable OpenAI features, you must have an account with OpenAI and configure Mealie to use the OpenAI API key (for more information, check out the [backend configuration](./backend-config.md#openai)).
|
||||
|
||||
## Configuration
|
||||
|
||||
For most users, supplying the OpenAI API key is all you need to do; you will use the regular OpenAI service with the default language model. Note that while OpenAI has a free tier, it's not sufficiently capable for Mealie (or most other production use cases). For more information, check out [OpenAI's rate limits](https://platform.openai.com/docs/guides/rate-limits). If you deposit $5 into your OpenAI account, you will be permanently bumped up to Tier 1, which is sufficient for Mealie. Cost per-request is dependant on many factors, but Mealie tries to keep token counts conservative.
|
||||
|
||||
Alternatively, if you have another service you'd like to use in-place of OpenAI, you can configure Mealie to use that instead, as long as it has an OpenAI-compatible API. For instance, a common self-hosted alternative to OpenAI is [Ollama](https://ollama.com/). To use Ollama with Mealie, change your `OPENAI_BASE_URL` to `http://localhost:11434/v1` (where `http://localhost:11434` is wherever you're hosting Ollama, and `/v1` enables the OpenAI-compatible endpoints). Note that you *must* provide an API key, even though it is ultimately ignored by Ollama.
|
||||
|
||||
If you wish to disable image recognition features (to save costs, or because your custom model doesn't support them) you can set `OPENAI_ENABLE_IMAGE_SERVICES` to `False`. For more information on what configuration options are available, check out the [backend configuration](./backend-config.md#openai).
|
||||
|
||||
## OpenAI Features
|
||||
- The OpenAI Ingredient Parser can be used as an alternative to the NLP and Brute Force parsers. Simply choose the OpenAI parser while parsing ingredients (:octicons-tag-24: v1.7.0)
|
||||
- When importing a recipe via URL, if the default recipe scraper is unable to read the recipe data from a webpage, the webpage contents will be parsed by OpenAI (:octicons-tag-24: v1.9.0)
|
||||
- You can import an image of a written recipe, which is sent to OpenAI and imported into Mealie. The recipe can be hand-written or typed, as long as the text is in the picture. You can also optionally have OpenAI translate the recipe into your own language (:octicons-tag-24: v1.12.0)
|
||||
@@ -5,40 +5,37 @@ PostgreSQL might be considered if you need to support many concurrent users. In
|
||||
**For Environment Variable Configuration, see** [Backend Configuration](./backend-config.md)
|
||||
|
||||
```yaml
|
||||
---
|
||||
version: "3.7"
|
||||
services:
|
||||
mealie:
|
||||
image: ghcr.io/mealie-recipes/mealie:v1.3.1 # (3)
|
||||
image: ghcr.io/mealie-recipes/mealie:v2.4.1 # (3)
|
||||
container_name: mealie
|
||||
restart: always
|
||||
ports:
|
||||
- "9925:9000" # (1)
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: 1000M # (2)
|
||||
depends_on:
|
||||
- postgres
|
||||
volumes:
|
||||
- mealie-data:/app/data/
|
||||
environment:
|
||||
# Set Backend ENV Variables Here
|
||||
- ALLOW_SIGNUP=true
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Anchorage
|
||||
- MAX_WORKERS=1
|
||||
- WEB_CONCURRENCY=1
|
||||
- BASE_URL=https://mealie.yourdomain.com
|
||||
# Set Backend ENV Variables Here
|
||||
ALLOW_SIGNUP: "false"
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: America/Anchorage
|
||||
BASE_URL: https://mealie.yourdomain.com
|
||||
# Database Settings
|
||||
DB_ENGINE: postgres
|
||||
POSTGRES_USER: mealie
|
||||
POSTGRES_PASSWORD: mealie
|
||||
POSTGRES_SERVER: postgres
|
||||
POSTGRES_PORT: 5432
|
||||
POSTGRES_DB: mealie
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
|
||||
# Database Settings
|
||||
- DB_ENGINE=postgres
|
||||
- POSTGRES_USER=mealie
|
||||
- POSTGRES_PASSWORD=mealie
|
||||
- POSTGRES_SERVER=postgres
|
||||
- POSTGRES_PORT=5432
|
||||
- POSTGRES_DB=mealie
|
||||
restart: always
|
||||
postgres:
|
||||
container_name: postgres
|
||||
image: postgres:15
|
||||
@@ -48,12 +45,16 @@ services:
|
||||
environment:
|
||||
POSTGRES_PASSWORD: mealie
|
||||
POSTGRES_USER: mealie
|
||||
PGUSER: mealie
|
||||
healthcheck:
|
||||
test: ["CMD", "pg_isready"]
|
||||
interval: 30s
|
||||
timeout: 20s
|
||||
retries: 3
|
||||
|
||||
volumes:
|
||||
mealie-data:
|
||||
driver: local
|
||||
mealie-pgdata:
|
||||
driver: local
|
||||
```
|
||||
|
||||
<!-- Updating This? Be Sure to also update the SQLite Annotations -->
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
tags:
|
||||
- Security
|
||||
---
|
||||
|
||||
# Security Considerations
|
||||
|
||||
This page is a collection of security considerations for Mealie. It mostly deals with reported issues and how it's possible to mitigate them. Note that this page is for you to use as a guide for how secure you want to make your deployment. It's important to note that most of these will not apply to you, if you:
|
||||
|
||||
1. Run behind a VPN
|
||||
2. Use a strong password
|
||||
3. Disable Sign-Ups
|
||||
4. Don't host for malicious users
|
||||
|
||||
Use your best judgement when deciding what to do.
|
||||
|
||||
## Denial of Service
|
||||
|
||||
By default, the API is **not** rate limited. This leaves Mealie open to a potential **Denial of Service Attack**. While it's possible to perform a **Denial of Service Attack** on any endpoint, there are a few key endpoints that are more vulnerable than others.
|
||||
|
||||
- `/api/recipes/create/url`
|
||||
- `/api/recipes/{id}/image`
|
||||
|
||||
These endpoints are used to scrape data based off a user provided URL. It is possible for a malicious user to issue multiple requests to download an arbitrarily large external file (e.g a Debian ISO) and sufficiently saturate a CPU assigned to the container. While we do implement some protections against this by chunking the response, and using a timeout strategy, it's still possible to overload the CPU if an attacker issues multiple requests concurrently.
|
||||
|
||||
### Mitigation
|
||||
|
||||
If you'd like to mitigate this risk, we suggest that you rate limit the API in general, and apply strict rate limits to these endpoints. You can do this by utilizing a reverse proxy. See the following links to get started:
|
||||
|
||||
- [Traefik](https://doc.traefik.io/traefik/middlewares/http/ratelimit/)
|
||||
- [Nginx](https://nginx.org/en/docs/http/ngx_http_limit_req_module.html)
|
||||
- [Caddy](https://caddyserver.com/docs/modules/http.handlers.rate_limit)
|
||||
|
||||
## Server Side Request Forgery
|
||||
|
||||
- `/api/recipes/create/url`
|
||||
- `/api/recipes/{id}/image`
|
||||
|
||||
Given the nature of these APIs it's possible to perform a **Server Side Request Forgery** attack. This is where a malicious user can issue a request to an internal network resource, and potentially exfiltrate data. We _do_ perform some checks to mitigate access to resources within your network but at the end of the day, users of Mealie are allowed to trigger HTTP requests on **your server**.
|
||||
|
||||
### Mitigation
|
||||
|
||||
If you'd like to mitigate this risk, we suggest that you isolate the container that Mealie is running in to ensure that it's access to internal resources is limited only to what is required. _Note that Mealie does require access to the internet for recipe imports._ You might consider isolating Mealie from your home network entirely and only allowing access to the external internet.
|
||||
@@ -9,12 +9,11 @@ SQLite is a popular, open source, self-contained, zero-configuration database th
|
||||
**For Environment Variable Configuration, see** [Backend Configuration](./backend-config.md)
|
||||
|
||||
```yaml
|
||||
---
|
||||
version: "3.7"
|
||||
services:
|
||||
mealie:
|
||||
image: ghcr.io/mealie-recipes/mealie:v1.3.1 # (3)
|
||||
image: ghcr.io/mealie-recipes/mealie:v2.4.1 # (3)
|
||||
container_name: mealie
|
||||
restart: always
|
||||
ports:
|
||||
- "9925:9000" # (1)
|
||||
deploy:
|
||||
@@ -24,19 +23,15 @@ services:
|
||||
volumes:
|
||||
- mealie-data:/app/data/
|
||||
environment:
|
||||
# Set Backend ENV Variables Here
|
||||
- ALLOW_SIGNUP=true
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
- TZ=America/Anchorage
|
||||
- MAX_WORKERS=1
|
||||
- WEB_CONCURRENCY=1
|
||||
- BASE_URL=https://mealie.yourdomain.com
|
||||
restart: always
|
||||
# Set Backend ENV Variables Here
|
||||
ALLOW_SIGNUP: "false"
|
||||
PUID: 1000
|
||||
PGID: 1000
|
||||
TZ: America/Anchorage
|
||||
BASE_URL: https://mealie.yourdomain.com
|
||||
|
||||
volumes:
|
||||
mealie-data:
|
||||
driver: local
|
||||
```
|
||||
|
||||
<!-- Updating This? Be Sure to also update the Postgres Annotations -->
|
||||
|
||||
@@ -11,7 +11,8 @@ Mealie is a self hosted recipe manager and meal planner with a RestAPI backend a
|
||||
- 🕸 Import recipes from around the web by URL
|
||||
- 📱 Progressive Web App
|
||||
- 📆 Create Meal Plans
|
||||
- 🛒 Generate shopping lists
|
||||
- 🛒 Generate Shopping Lists
|
||||
- 🏠 Separate Users into Households and share Recipes
|
||||
- 🐳 Easy setup with Docker
|
||||
- 🎨 Customize your interface with color themed layouts
|
||||
- 🌍 localized in many languages
|
||||
@@ -27,7 +28,7 @@ Mealie is a self hosted recipe manager and meal planner with a RestAPI backend a
|
||||
- Copy Me That
|
||||
- Paprika
|
||||
- Tandoor Recipes
|
||||
- Random meal plan generation
|
||||
- Random Meal Plan generation
|
||||
- Advanced rule configuration to fine tune random recipes
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
- Create a Backup and Download from the UI
|
||||
- Upgrade
|
||||
|
||||
## Upgrading to Mealie v1
|
||||
If you are upgrading from pre-v1.0.0 to v1.0.0, make sure you read [Migrating to Mealie v1](./migrating-to-mealie-v1.md)!
|
||||
## Upgrading to Mealie v1 or later
|
||||
If you are upgrading from pre-v1.0.0 to v1.0.0 or later (v2.0.0, etc.), make sure you read [Migrating to Mealie v1](./migrating-to-mealie-v1.md)!
|
||||
|
||||
## Backing Up Your Data
|
||||
|
||||
[See Backups and Restore Section](../getting-started/usage/backups-and-restoring.md) for details on backing up your data
|
||||
|
||||
## Docker
|
||||
For all setups using Docker the updating process looks something like this
|
||||
For all setups using Docker, the updating process looks something like this:
|
||||
|
||||
- Stop the container using `docker compose down`
|
||||
- If you are not using the latest tag, change the version (image tag) in your docker-compose file
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Permissions and Public Access
|
||||
|
||||
Mealie provides various levels of user access and permissions. This includes:
|
||||
- Authentication and registration ([check out the LDAP guide](./ldap.md) for how to configure access using LDAP)
|
||||
- Authentication and registration ([LDAP](../authentication/ldap.md) and [OpenID Connect](../authentication/oidc.md) are both supported)
|
||||
- Customizable user permissions
|
||||
- Fine-tuned public access for non-users
|
||||
|
||||
@@ -19,9 +19,10 @@ Administrators can navigate to the Settings page and access the User Management
|
||||
|
||||
## Public Recipe Access
|
||||
|
||||
By default, groups are set to private, meaning only logged-in users may access the group. In order for a recipe to be viewable by public (not logged-in) users, two criteria must be met:
|
||||
By default, groups and households are set to private, meaning only logged-in users may access the group/household. In order for a recipe to be viewable by public (not logged-in) users, three criteria must be met:
|
||||
|
||||
1. The group must not be private, *and* the group setting for allowing users outside of your group to see your recipes must be enabled. These can be toggled on the Group Settings page
|
||||
1. The group must not be private
|
||||
2. The household must not be private, *and* the household setting for allowing users outside of your group to see your recipes must be enabled. These can be toggled on the Household Settings page
|
||||
2. The recipe must be set to public. This can be toggled for each recipe individually, or in bulk using the Recipe Data Management page
|
||||
|
||||
Additionally, if the group is not private, public users can view all public group data (public recipes, public cookbooks, etc.) from the home page ([e.g. the demo home page](https://demo.mealie.io/g/home)).
|
||||
@@ -32,7 +33,8 @@ More broadly, here are the rules for how recipe access is determined:
|
||||
|
||||
- Private links that are generated from the recipe page using the `Share` button bypass all group and recipe permissions
|
||||
- Private groups block all access to recipes, including those that are public, except as noted above.
|
||||
- Groups with "Allow users outside of your group to see your recipes" disabled block all access to recipes, except as noted above.
|
||||
- Private households, similar to private groups, block all access to recipes, except as noted above.
|
||||
- Households with "Allow users outside of your group to see your recipes" disabled block all access to recipes, except as noted above.
|
||||
- Private recipes block all access to the recipe from public links. This does not affect Private Links.
|
||||
|
||||
```mermaid
|
||||
@@ -40,7 +42,8 @@ stateDiagram-v2
|
||||
r1: Request Access
|
||||
p1: Using Private Link?
|
||||
p2: Is Group Private?
|
||||
p3: Is Recipe Private?
|
||||
p3: Is Household Private?
|
||||
p4: Is Recipe Private?
|
||||
s1: Deny Access
|
||||
n1: Allow Access
|
||||
|
||||
@@ -53,5 +56,8 @@ stateDiagram-v2
|
||||
p2 --> p3: No
|
||||
|
||||
p3 --> s1: Yes
|
||||
p3 --> n1: No
|
||||
p3 --> p4: No
|
||||
|
||||
p4 --> s1: Yes
|
||||
p4 --> n1: No
|
||||
```
|
||||
|
||||
BIN
docs/docs/news/surveys/2024-october/Question2.png
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
docs/docs/news/surveys/2024-october/Question3.png
Normal file
|
After Width: | Height: | Size: 128 KiB |
BIN
docs/docs/news/surveys/2024-october/Question4.png
Normal file
|
After Width: | Height: | Size: 168 KiB |
BIN
docs/docs/news/surveys/2024-october/Question5.png
Normal file
|
After Width: | Height: | Size: 109 KiB |
BIN
docs/docs/news/surveys/2024-october/Question6.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
docs/docs/news/surveys/2024-october/Question7.png
Normal file
|
After Width: | Height: | Size: 135 KiB |
BIN
docs/docs/news/surveys/2024-october/Question8.png
Normal file
|
After Width: | Height: | Size: 236 KiB |
126
docs/docs/news/surveys/2024-october/overview.md
Normal file
@@ -0,0 +1,126 @@
|
||||
# October 2024 Survey
|
||||
|
||||
It's been a while since a Mealie survey was done, and the community was much smaller back then. So much has changed in 2024, and we wanted to gauge the community's thoughts.
|
||||
Our v2.0 release gave us a platform to ask people to take a few minutes to share their thoughts.
|
||||
|
||||
A massive thanks to everyone who took the time to fill out this survey. We had 525 respondents! We're overwhelmed with the support.
|
||||
|
||||
Also, thanks to ChristianB-F from our Discord community for putting the following images together, and to everyone who has taken the time to raise either an issue or pull request on our GitHub repository!
|
||||
|
||||
For each question, we've created a GitHub discussion and we invite you to share any interesting insights or thoughts you have from the survey results!
|
||||
If you see a specific idea that resonates with you, please check if there's already a feature request, and if not, please raise one and add your perspective.
|
||||
|
||||
The questions (bar question 1) that are free text are on separate pages you'll need to click into, as there's just too much content to include on this page.
|
||||
|
||||
For the written response sections, we have removed some of the more indifferent responses (e.g., "N/A") to save you reading time. If you'd like to see all the raw responses, they're in [this GitHub commit](https://github.com/mealie-recipes/mealie/pull/4666/commits/1287bc1635d9c2560b10db3a92a0d6644bc81571).
|
||||
|
||||
## Structured Questions
|
||||
|
||||
### Mealie Version (pre-v2)
|
||||
|
||||
This question was free text input and it was mandatory.
|
||||
|
||||
The responses to this were so varied and not overly informative/indicative of anything, so we've decided not to publish them - both to save space and your time.
|
||||
|
||||
### Database Type
|
||||
|
||||
This question was a single select and it was optional.
|
||||
|
||||
Key insight: SQLite is the predominant database, but Postgres maintains an admirable share and must remain front of mind for any changes we make.
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4640)
|
||||
|
||||

|
||||
|
||||
### Time Using Mealie
|
||||
|
||||
How long have you been using Mealie? This question was a single select and it was mandatory.
|
||||
|
||||
Key insight: Most users have been using Mealie less than a year, with another 25% in the 1-2 year range. These users will have seen a lot of change in the product over that time.
|
||||
Thanks to the long term users!
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4641)
|
||||
|
||||

|
||||
|
||||
### Engagement with Mealie, the Project, and the Community
|
||||
|
||||
This question was multiple choice and it was optional.
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4642)
|
||||
|
||||

|
||||
|
||||
### Number of Active Users
|
||||
|
||||
This question was a single select and it was mandatory.
|
||||
|
||||
Key insight: ~85% of instances have 2 users or fewer. This is assumed to be a couple of adults living together.
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4643)
|
||||
|
||||

|
||||
|
||||
### Number of Active Groups
|
||||
|
||||
This question was a single select and it was mandatory.
|
||||
|
||||
Key insight: Similar to the above question, one group being the most common backs the theory of one "family" using the Mealie instance.
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4644)
|
||||
|
||||

|
||||
|
||||
### Using Mealie on Mobile
|
||||
|
||||
Do you access Mealie on a mobile? Using your browser or with it installed as an app (a Progressive Web App/PWA)? This question was a multiple select and it was mandatory.
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4645)
|
||||
|
||||

|
||||
|
||||
### Feature Usage
|
||||
|
||||
Please select all the features you actively/regularly use, or consider important. This question was a multiple select and it was optional.
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4646)
|
||||
|
||||

|
||||
|
||||
## Suggestions/Feedback
|
||||
|
||||
Some of you will spot feature suggestions that you know to already exist in Mealie. We'd love it if you could help us improve the documentation so more people can know about them! All pull requests are much appreciated. The [features](https://docs.mealie.io/documentation/getting-started/features/) page, or the [FAQ](https://docs.mealie.io/documentation/getting-started/faq/) could be appropriate places to add documentation.
|
||||
|
||||
### Shopping List Suggestions
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4647)
|
||||
|
||||
[Question 9](q9.md)
|
||||
|
||||
### Meal Planner Suggestions
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4648)
|
||||
|
||||
[Question 10](q10.md)
|
||||
|
||||
### Recipe Timeline Suggestions
|
||||
|
||||
Key insight: Looks like a lot of people would be fine with this not existing, or at least being hidden.
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4649)
|
||||
|
||||
[Question 11](q11.md)
|
||||
|
||||
### Recipe Suggestions
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4650)
|
||||
|
||||
[Question 12](q12.md)
|
||||
|
||||
### Other Suggestions
|
||||
|
||||
There are so many kind words in this section in particular. Thanks so much, it means a lot to the whole team and all our contributors to see the impact Mealie has on people's lives!
|
||||
|
||||
[GitHub Discussion](https://github.com/mealie-recipes/mealie/discussions/4651)
|
||||
|
||||
[Question 13](q13.md)
|
||||
227
docs/docs/news/surveys/2024-october/q10.md
Normal file
@@ -0,0 +1,227 @@
|
||||
[Back to the overview](overview.md)
|
||||
|
||||
# Question 10: Any suggestions for how to improve the Meal Planner?
|
||||
|
||||
> again mostly visual, I think it works well as is for my needs but the interface could use some improvements
|
||||
|
||||
> The ability to open a recipe in a new tab from Edit mode. You can do this in the View only mode, but when editing the meal plan, it would be nice to easily get to a recipe to see what ingredients there are. I am often checking recipes to see if I already have the ingredients in my cupboard, as part of making a plan for my weekly meal plan. Not being able to quickly see the recipe is a little annoying.
|
||||
|
||||
> If Not fixed jet, integrate Portions e.g. 200g sugger and 2egg for two people and 400g sugger and 4eggs for 4 people
|
||||
|
||||
> I live alone, so I almost always have leftovers from a meal. Would love for the meal planner to be able to see how many portions a recipe makes, and if its more than the number of people eating it automatically makes leftover meals for the next days. I know you can create notes manually currently, but that's a lot of work.
|
||||
|
||||
> Option for "friendly mode" when selecting a date, I.e. "next Tuesday" or "two Wednesday's from today"
|
||||
|
||||
> Add a label with the name of the user who added a meal to the planner in case of two or more users in the same household don't share the same dish.
|
||||
|
||||
> editing is a separate button/step. It would be nice if that would be more intuitive/user friendly
|
||||
|
||||
> - two week view, month view - drag & drop - mass add to shopping list
|
||||
|
||||
> It would be very helpful if the meal planner had an option that helps the user to find recipes with some of the similar ingredients, so that it's easier to use all of the groceries bought.
|
||||
|
||||
> Allow to set the same food every day of the week if needed
|
||||
|
||||
> Synchronize Meal Plan via ics calendar
|
||||
|
||||
> Add a button to automatically fill the whole week (or a predetermined number of days). (Wasn't that an option before?) Add the choice of having the full week (Monday to Sunday) stay in place until the new week. Now the meal planner changes to the current day and adds the chosen number of days to display, which always creates a new empty day.
|
||||
|
||||
> Improve import
|
||||
|
||||
> A better sliding window of plans. I've found looking back to previous weeks clunky. Most of the time, we only care about this upcoming week but once in a while we'll plan a couple weeks out. I know you can expand the view to be more than 7 days; however, beyond planning, I typically only care about a few days in advance once the plan has been set.
|
||||
|
||||
> We create meal plans for the next 7 days but are not fixed to what meals have to be made on which dates. It's more flexible in practice. The Meal Planner as-is is a bit in-flexible in this aspect. Being able to check-off meals as they have been made. As above, are meal plans have to be flexible so being able to mark meals as 'made' or done, makes it easier to see what is left for the rest of the week.
|
||||
|
||||
> So the meal planner I find it to be the weakest yet the most important point of Mealie. My main issue is that there are only 4 fixed meals. There are some diet plans that have some intermediate snacks and stuff like that, so the best thing would be to have free control on how many meals each day can have, and perhaps have some rules like "mondays have the standard 4 meals" and "tuesdays have these 4 snacks in middle of the meals" or "wednesdays have these customs meals", so I can set as many meals each day with its custom names on them. The logic would be that I have a "meals" database so I create the object like "morning snack" and then I can apply rules like having a fruit on my morning snack and a power bar on my "afternoon snack". - Also would be cool to have a randomizer for the whole week or month after proper rules were established that autofills the meals set for each day, so I can plan my groceries in advance and save a good amount of repetitive clicking. - In the case of each day's random meal, its strange that there is a button for 2 different meals, but dinner and side have their own buttons. They should have eiother their own button each, or be all toghether in one menu - The possibilty of marking special days like birthdays so these days wont autofill with the suggested randomizer, ignore the rules, and instead would require user input for planning these special meals
|
||||
|
||||
> So far it works. It could use some UX changes to improve the flow, certain sizing on mobile would be nice. I am using it with a couple of rules, and made a feature request about this already.
|
||||
|
||||
> Create an option to create singular list, that does not tie recipe to specific date. When I create a meal plan, my idea is to use it as a todo list, not deciding upfront what will be done on each day. Currently I am not using meal planner at all, because it really cumbersome for me.
|
||||
|
||||
> 1. have a check box so a week could be automatically selected. maybe use the week of the year, ie check box next to Week 47 that would select Sunday - Saturday 2. to be able to click and drag the recipes between the days of the week. so if i didn't want make it on Monday but Tuesday instead i can just drag the recipe cards to the new days. 3. having a Today button in the drop down calendar in case you plan a few weeks ahead
|
||||
|
||||
> Being able to go back to previous dates and batch edit the meal plan without having to set the dates after each single edit
|
||||
|
||||
> A wizard for creating a meal plan for a given period
|
||||
|
||||
> Easy integration of daily meal image into Home assistant. eg a HACS addon?
|
||||
|
||||
> More options to auto create e.g. based on ingredients such as pick recipes that total 500g minced beef or 2 meals that include pulled pork. Include macro tracking e.g. total planned calories and average calories
|
||||
|
||||
> I was very excited about a "Meal Planner" feature when I first saw it, but it was not what I was expecting. I wanted to be able to collect several recipes into a single "meal", e.g., a soup, a starter, a main, and a desert; or combine my home made steak sauce recipe with my grilled steak recipe for a more complete meal without having to duplicate recipes in multiple records. This would be particularly helpful for large holiday gatherings or dinner parties. Once collected, it could provide a master ingredients list and help with organizing the sequencing of the cooking.
|
||||
|
||||
> Ability to reorder meals without switching to edit mode. (Very minor)
|
||||
|
||||
> It could be here that you pick the number of people a recipe is for when you add it to a plan. Currently, to double a recipe we have to add it twice to the meal planner and list. Also, drag n drop doesn't work great when editing plans on a tablet (android).
|
||||
|
||||
> No I like the meal planner. Integration with the shopping list would be awesome. As in, add the ingredients from recipes on the planner to the shopping list.
|
||||
|
||||
> Allow a default view instead of "today forward. (For example, "x previous days" or "this week") Remove the modes and integrate editing with viewing Default to "today" (or "first blank dinner/etc slot") when adding entries.
|
||||
|
||||
> As per previous shopping list comments. Really appreciate and like the planner. It makes managing the week's meals and shopping so much easier!
|
||||
|
||||
> Add https://github.com/mealie-recipes/mealie/discussions/1761, it would make it easier for me to make many recipes of like tacos or pizzas with base seasoning mixes/dough mixes and individual recipe customizations on top.
|
||||
|
||||
> Please add more entry type/food type on planner. In Poland the main dish is at 1-4 P.M. It's called obiad but it's related to lunch. But because it's main meal, we usually have 2 dishes: soup (zupa) and the second dish (drugie danie). It would be great to have separate entry type for soups and the second dished. So in generally, please allow to define own entry types in planner (like in Tandoor Recipes).
|
||||
|
||||
> On the meal planner screen, I feel like there should be a button for immediately adding or randomizing a meal for any given day that is blank. There’s something about having to go into edit mode first when you’re creating a meal plan on a blank day that seems unintuitive. To my brain “Edit” means to change something that exists, not to create from scratch. Not a big issue obviously but I notice it every time.
|
||||
|
||||
> It could be that I’m missing something, but excluding meals from categories when using random selection. For example, let me disable adding foods labeled “Dessert” when randomizing.
|
||||
|
||||
> Same here. Make it removable via env.
|
||||
|
||||
> Mealie has done a great job. If you have to ask questions, I hope to support the<video>tag in the recipe steps instead of iframes, which will cause the video to play automatically.
|
||||
|
||||
> Would love a "feature flag"/env var to enable/disable the nightly "Meal Planner -> Recipe Timeline" job. I really like clicking the "I made this!" button when finishing cooking a recipe, and would rather do it that way. My timeline is full of duplicates/incorrect recipe history.
|
||||
|
||||
> Nicer UI, option to assign meal to user (e.g. different dinner for kid).
|
||||
|
||||
> track times recipe is accessed and suggest meal plans based on patterns
|
||||
|
||||
> Make it possible to plan a re-scaled version of a recipe. This would be very helpful when scaling a dish up for hosting. At the moment, you have to remember to scale up the servings each time you go to a recipe from the meal planner.
|
||||
|
||||
> I like the meal planner alot. I use it all the time. It was a great bug fix to allow external recipe links as hyperlinks that were clickable (nice to try things before adding to mealie)
|
||||
|
||||
> Random within a tag.
|
||||
|
||||
> When showing the days, it would be very helpful to have an option to have something like be able to set "default: show week" For me that would make it easier as I sometimes skip cooking one night and have to manually set it so I can see days earlier in the week.
|
||||
|
||||
> We repeat our meal plan to a default 3-week plan so it would be nice to be able to apply a 'template' to a timeframe and then make manual adjustments from there. This would be the killer feature for us!
|
||||
|
||||
> Using the randomizer is clunky. I don't know how it determines the difference between sides and dinners. It isn't clear how best to organize sides and dinners.
|
||||
|
||||
> It may already be an existing feature and I haven't found it it some kind of calendar integration would be nice. I'm going to be trying the home assistant integration soon, then I can stop asking my wife everyday what's for dinner
|
||||
|
||||
> sometimes there's too much repetition Or some meals are not proper for a dinner sometimes even adds desserts etc. may be me miss using it to be fair
|
||||
|
||||
> Again on v0.5.6 so I'm not sure where this is at with the latest updates.
|
||||
|
||||
> Setting the default days would be nice but not a major inconvenience at the moment.
|
||||
|
||||
> Ability to export a nice PDF to print out and put it on the kitchen door. Maybe make i iportable as a calendar in Android
|
||||
|
||||
> Have settings that allow it to be formatted as a week view on screens that are wide enough or at least adjust the number of columns that can be displayed.
|
||||
|
||||
> Allow the ability add any text so that I can add a one time meal that I don't have added to my recipes
|
||||
|
||||
> buttons to move displayed days forward/back by 7 days
|
||||
|
||||
> It is annoying having to switch between "Meal Planner" and "Edit" views, I would prefer a (+) button on the view to add items to that day for users that can edit the meal plan
|
||||
|
||||
> When I add several meals, I can lose track of which days I've added meals to, so if the calendar can highlight days with existing entries, that could be handy.
|
||||
|
||||
> It would be nice if you could add meals to a different span of time instead of days. We don't plan to the day but to the week so if we could plan for meals in a week that would be nice. Basically we know we want to eat burgers next week but we don't choose the day, and some day during the week we just look at what is available and decide on the day which of the plan meals we will have.
|
||||
|
||||
> Again coming from Meal Lime - I personally prefer a much simpler meal planner (this is my preference so I appreciate everyone is different). I would prefer a toggle "Simple meal planner" vs "Advanced meal planner" The advanced planner would be its current form. The simple meal planner would essentially remove a lot of features. - Plus icon on a day simply pulls up a view of your recipes (with pictures) to tap and select (this is how meal lime works) the popup box with date is not needed, I already click plus on a certain day, why would I then want to select the date again? its a lot easier and quicker to see your pictures than a big list of titles - Meal planner would ONLY account for dinner (again personal preference) the plus icon simply adds a dinner meal - thats it. - No Random button - No side button - No rules or automations etc. You can, in essence, very quickly tap + on a few days, select what you fancy from your recipe photos and hit go. Shopping list is auto populated and you are ready to go. To give you an idea of how I used to use Meal Lime - I was able to complete a meal plan in a couple of minutes as I walked in to the shop, it was that easy and painless. I know I keep going on about it - but I would LOVE for this to be a self hosted version of that app!
|
||||
|
||||
> allow a way to disable it via config - we don't use it.
|
||||
|
||||
> I often add meals to the planner but don't end up making them, it's just an idea of what we might have, but it adds them to the timeline when I haven't made them. I don't want that.
|
||||
|
||||
> Ability to rename the entry type. We use "Side" for our kids meals. I have renamed it in the Magic Mirror module but having it renamed in the app would be a nice QoL improvement. Other than that minor thing it works very well.
|
||||
|
||||
> We typically plan meals as a "queue", rather than specific days. It'd be nice to have a non-day-specific queue to add recipes to, in addition to specific days.
|
||||
|
||||
> The ability to manually move recipes to the bottom or top of the list for a given day. The option to separate meal planners for each meal. Have consistent style between the “Meal Planner” mode and “Edit” mode. Integrate the Meal Planner so it shows up on external calendars.
|
||||
|
||||
> Maybe adding in time divisions e.g. breakfast, lunch, dinner so if I have multiple items I can see them, any maybe make the view sortable (like view only dinner). Can we add side dishes or condiments? Maybe suggestions of meals that we might like based on what we eat, but with variety (you eat a lot of chicken, have you tried this chicken pasta recipe). Maybe notifications for meals just in case I forget.
|
||||
|
||||
> allow for multiple meals per day (i.e. breakfast, lunch, dinner)
|
||||
|
||||
> Perhaps allow notes on the recipe entries?
|
||||
|
||||
> is could be more compact on mobile view. also in current version the title got cut off. this is a problem with notes only entries. when using till understood the difference i was wondering that I could not tap (mobile view) on the notes only entry to view the full title. That was possible before, cause i was in editing mode. would make the meal planner better if a detail view for notes only entries would be available. also in mobile view: when i am in editing mode with an open note only entriy and hit the OS back-button I not only leave the editing mode of the entry but also the editing mode of the meal planner. this is anoying when planning the next week ahead with our spouse on the kitchen table. dates have to reajusted to see the next week again
|
||||
|
||||
> When using the random functions, have the ability to exclude recipes that have already been added to the plan.
|
||||
|
||||
> ask for how many people when planning
|
||||
|
||||
> Meal image in edit mode in Android browser only shows a small cropped part of the thumbnail. It is not really useful.
|
||||
|
||||
> None, really like the way it is now
|
||||
|
||||
> Default to include past meals from the week
|
||||
|
||||
> High Value: Default view to "This week" instead of "Today+7 days" - sometimes we have more leftovers than anticipated so we skip cooking a new meal, and the next night when I go in to 'find' what I was supposed to cook last night, I have to update the date range to see yesterday/earlier in the same week. Let me set the week start date in settings (drives me nuts that the week starts on Monday 😅) Assume that if someone is on the meal planner, it was made that day (so I don't have to click "I made this" each time). If desired, could be a toggle setting. Low Value: Ability to add "Leftovers" or a restaurant as the 'Meal' for a particular night. I know I could just create a recipe called (for example) "Leftovers" or "McDonalds" but it sure would be cool if they didn't clutter my recipe view and I could specify "Leftovers of "Recipe X" I'm sure this is possible via API, and maybe already do-able, but I would love to integrate Meal Planner into a Home Assistant dashboard to display what is the meal plan for the week to the rest of the family. If there's other dashboard platforms people use, or maybe a static dashboard within Mealie, providing better/more support would be cool.
|
||||
|
||||
> Meal plan based on goals, I.e. macros
|
||||
|
||||
> its fine as it is
|
||||
|
||||
> Keep/restore scroll position when going back from a recipe to a list. Multiple people i talked to don't use Meale due to this as it's such an annoyance.
|
||||
|
||||
> It would be nice if you could enter that leftovers from the previous days are planned for a certain day.
|
||||
|
||||
> A button which fills the shopping list using all recipes currently displayed in the planner. Buttons which quickly change the current week. A button which fills in the whole week with random recipes.
|
||||
|
||||
> Ah YES! The meal planner needs some love. So our intention when we began trying to use Mealie was to have some help organicing our meals automatically, so I would have our recipes, and have them properly tagged. Then I would set some rules for each meal, but then I have to go clicking each meal of each day to have it planned. It would be great to have some randomizer to automatically fill all the meals following the rules I've established, so I can have the whole month planned and I can set my shopping list and do the shopping for it. Also there are diets that include other meals over the day, like snacks (in spanish they are called "colacion") or a "merienda" which is like a lighter breakfast that you have around 4-5PM, some coffee and a toast or something like that. So it would be cool to have the ability to add or customize the available meals of the day, perhaps even set the time it should be eaten so the app can send a notification X time before it to start cooking. Im a really undisciplined person and need to have everything as structured as possible, so being able to have it all set in advance, and more granular and user friendly control for the wife approval factor (WAF) and even with reminder to get ready for each meal so I can finish what Im doing and make my time for cooking properly would be awesome and really help me to get my diet in order.
|
||||
|
||||
> Accidentally mentioned that in the shopping list one, whoops
|
||||
|
||||
> This would also be nice if it could integrate with iOS to automatically show in Reminders/Calendar.
|
||||
|
||||
> The new query filter builder probably solves one of my biggest issues. Filter by "last eaten" should be included. Another issue is that the rules are predefined but often, the user wants to build the filters just for the specific "event" and wants to see a selection of dishes to choose from. There is also no back button on the settings page. (Recipes could also be opened as a popup although this idea needs testing especially because of mobile.)
|
||||
|
||||
> Allow more powerful search queries to be built from the Meal Planner screen, such as those that are available from the Recipes screen. Let these queries be included in the recipe rules section, such as "OR" statements for tags instead of just "AND" statements.
|
||||
|
||||
> Hard to add recipe by name if you have many, we have ~100+ in each household
|
||||
|
||||
> A way to persist date preferences, eg I often want to look two days back and 14 days forward. Switching between edit mode and normal is confusing at first
|
||||
|
||||
> Meal planner rules. I want a mixture of protein during the week so i would like to be able to do the following: Only allow X* recipes with these () ingredient(s)/tag(s) per week/month/Y* days
|
||||
|
||||
> I believe it is not the best UX to have the fine list and than to swap to the edit view to start editing it. Especially if you plan on long term you have to select the date range and bla bla bla... Instead: one continuing list would be great where I can directly edit a day in time. Also a calendar view would be great. And last: I want in the future that the meal plan is defining itself using rules without any manual interaction. I plan to do this automation with N8N again but would be great to have this integrated.
|
||||
|
||||
> My wife said that her PWA logs her out too frequently. It would be great to somehow configure a long lived token method for authentication to securely eliminate the login. The meal planner works great otherwise!
|
||||
|
||||
> It is great already
|
||||
|
||||
> Good as is. Love it!
|
||||
|
||||
> The option of having the meal plan generated for a specific period. Preferably with the possibility to define which meals should be generated and how often a recipe should be repeated on the following days (because we often cook a dish for n days in advance (usually 2 days in a row)).
|
||||
|
||||
> The differentiation between the "Edit" mode and the "View" mode doesn't make much sense to me personally. Whenever I the "view" mode, I somehow expect that I would be able to drag&drop the meals from one day to another, without going into the "edit" mode.
|
||||
|
||||
> From an recipe, assign it to a day
|
||||
|
||||
> I would like breakfast/lunch/dinner breakdowns.
|
||||
|
||||
> I haven't used it much but can you can meals with other users?
|
||||
|
||||
> Able to subscribe via .ics for easy reference
|
||||
|
||||
> Some sort of learning algorithm (probably using the openAI integration) to look at recipes and automatically tag them. This would help when adding sides and mains!
|
||||
|
||||
> I would like a way to be able to check off meals. For example, I often plan out meals but have something come up and don't make them on a given day. It's then rather difficult to go back and see what recipes I had bought ingredients for. Perhaps, if unchecked, the meal automatically shifts to the next available day (dinner remains dinner, lunch as lunch, etc). Or, praise, there is a section to see skipped meals and quickly reassign to a new day.
|
||||
|
||||
> Have them (or anything, really) be accessible across households, if desired. I.e., my SO and I live in different cities, thus use different households for the majority of the time. However, when we stay at the others place (which then usually is for minimum a week at a time), it would be useful to be able to share things like meal planner, shopping lists etc for that time, without some workaroung (like an additional user or moving my or their user to the other household for the time).
|
||||
|
||||
> The meal planner works fine for entries that link to a recipe. For items that do not link to a recipe, there's no easy way to see the whole text as it's cut off after a couple chars in the mobile UI. The only way of reading the full text of the entry is by editing it. It would be much better if those items would be accessible right from the meal planner rather than having to dig into editing mode.
|
||||
|
||||
> I mostly plan for a whole month or more so I would like to have an custom range of days I can choose in the settings. Right now I set it to a month manually each time I open the planner. For editing it would be nice to have a button to move all upcoming meals for a day. Sometimes we skip lunch and then I have to move all upcoming meals by a day
|
||||
|
||||
> Meal Planner is not important to me. I use Mealie purely as recipe storage.
|
||||
|
||||
> Better integration with Home Assistant
|
||||
|
||||
> More intelligent recipe suggestions (e.g. based on recipes not made in a while, ingredients you are likely to have) to assist creating plans
|
||||
|
||||
> Add rules that recipes can only be repeated in x amount of time. But I mostly just add the meals myself and don't use the automatic selection, because my recipes are not properly tagged and categorized (I have it on my todo list).
|
||||
|
||||
> My wife is not using it, because we have lots of meals we don't have recipes for. It would be very helpful if we could plan a meal which does not exist as a recipe.
|
||||
|
||||
> Remember the default number of days. Option to set number of 'meals' in a day - mostly we just use dunner. Quick access to 'todays meals' from the homs screen
|
||||
|
||||
> Make it toggable. If the user does not use it, let him disable it.
|
||||
|
||||
> The only real suggestion is to maybe add time-ranges for the meals, like breakfast from 6-10 am, lunch 10 am - 2 pm, and dinner 4 pm- 8 pm. The only reason I say this is I use Home Assistant and the home assistant integration pulls the meals over as all-day events in the calendar and doesn't give a nice order for the day.
|
||||
|
||||
> This is a minor thing -- and I don't even know if I would use such a feature, if it existed: but if the meal-planner would allow for an easy (read only) export is an .ical calendar, I could add it to my usual calendar tools and have it available in the typical interfaces.
|
||||
|
||||
> Better random, ability to switch days easily. Or pause to push back a day
|
||||
|
||||
> Ability to plan a fish for two days at once.
|
||||
|
||||
> Add a "Feeling lucky" button. Random recipes for the whole week!
|
||||
|
||||
[Back to the overview](overview.md) or [On to Question 11](q11.md)
|
||||
141
docs/docs/news/surveys/2024-october/q11.md
Normal file
@@ -0,0 +1,141 @@
|
||||
[Back to the overview](overview.md)
|
||||
|
||||
# Question 11: Any suggestions for how to improve the Recipe Timeline?
|
||||
|
||||
> Generally not used. Maybe could prompt to add to timeline after a recipe has been open for x amount of time but probably not useful. I was surprised that timeline comments are different from recipe comments so maybe making that clearer would be helpful?
|
||||
|
||||
> For me the timeline itself isn't that interesting, but I would love to be able to use the data in other ways. For example, I want to know how many times I've made a recipe, which recipes do I make the most or the least, etc.
|
||||
|
||||
> Scaling ingrediants is my biggest ask overall ofr sure
|
||||
|
||||
> It's not accuraten
|
||||
|
||||
> Maybe a way to import instagram recipe's (usually in the description of the video)
|
||||
|
||||
> maybe adding a comment together with the picture
|
||||
|
||||
> I like the timeline as it is right now but the only change I would make is to be able to add a picture after I have marked a recipe as done. Currently, I can only add a picture at the moment I mark the recipe and not after in an edit. I would also like to be able to press the photos to enlarge them.
|
||||
|
||||
> Instead of just the profile picture. Also add the name of the user. If there's multiple people who didn't set a profile picture, it's hard to tell who created that timeline event. Example: Recipe creation
|
||||
|
||||
> I didn't know it existed
|
||||
|
||||
> Not really, but I use it often
|
||||
|
||||
> default to reverse chronological order
|
||||
|
||||
> Make it easier to rate dishes and add comments directly from timeline
|
||||
|
||||
> Add the person's name without having to hover over their non-existent or too small to tell who it is photo.
|
||||
|
||||
> Again, really cool feature. I wonder if comments from the time line should appear as recipe comments. As most of the time I suggest things to myself as a part of recording that I've cooked the meal. Also being able to search the time line would be really cool.
|
||||
|
||||
> Its fine how it is.
|
||||
|
||||
> Make the pictures in the timeline bigger so that I can show off to my friends what dishes I have made
|
||||
|
||||
> disable it option
|
||||
|
||||
> I honestly don't use it. Haven't found a work flow for it.
|
||||
|
||||
> I am not sure what the purpose of this is...
|
||||
|
||||
> It seems good so far :)
|
||||
|
||||
> I don't see much sense in it, feel free to drop it.
|
||||
|
||||
> An option to automatically mark recipes in the meal planner as completed - forgetting to do this on most recipes in the meal planner makes the timeline mostly useless.
|
||||
|
||||
> Reverse the order so newer things are first (or at least make an option).
|
||||
|
||||
> Allow editing the date made. If a meal is made the day before or after it appears in the meal planner then the timeline will be wrong but can't be easily fixed.
|
||||
|
||||
> I don't need or use it
|
||||
|
||||
> I generally don't care when I added a recipe, just when I last cooked a recipe.
|
||||
|
||||
> We don't use the feature.
|
||||
|
||||
> I do not use this feature.
|
||||
|
||||
> we don't really use it
|
||||
|
||||
> Nope I think its fine the way it is.
|
||||
|
||||
> Never used it
|
||||
|
||||
> Be able to filter for “meals made” or “recipes created”.
|
||||
|
||||
> I only use this passively, but interesting to have, no notes.
|
||||
|
||||
> no, i don't use it
|
||||
|
||||
> Whilst I do use it, I do not use it consistently enough to be able to validly comment
|
||||
|
||||
> I'm still getting used to the timeline. Currently it seems like recipes appear on the timeline when I haven't cooked them yet, but I think I'm still getting used to how it interacts with the meal planner. Not sure if there's an issue there or not.
|
||||
|
||||
> this a cool side feature for me. love it but functionality is completely sufficent
|
||||
|
||||
> Do not use
|
||||
|
||||
> Not exactly timeline, sorry, but how about including in a recipe page how many times a recipe has been cooked
|
||||
|
||||
> Assume recipes on the Meal Planner were made, so they automatically also appear on the timeline after the meal planner date passes. Better search and filtering options. For example, what did we have last Valentines day? What was that potato dish we made last month? Being able to easily search for that type of stuff would be amazing.
|
||||
|
||||
> I haven't found the option to remove the creation of a recipe from the timeline. This would be useful if I could filter them out
|
||||
|
||||
> i dont see a need for the timeline
|
||||
|
||||
> Maybe being able to update the date? I entered a wrong date and couldn't update it (or didn't find a way to do it!).
|
||||
|
||||
> Not really, its a simple function.
|
||||
|
||||
> My only irritation with the timeline is that it doesn't show the name of who added a recipe, it only shows a picture. I have 1 user that refuses to update it with his picture.
|
||||
|
||||
> Just upgraded to 2.0 and I love this! I wish there was a way to edit the metadata on the recipes to show when they were actually added, in stead of just all imported on the one day that I upgraded
|
||||
|
||||
> Improve presentation, scale things down, make things interactive, provide more information (when hovering or clicking), improve loading time. I do not have found a use case for this feature but it feels like something that has potential
|
||||
|
||||
> For me, the recipe timeline is more important than the comments. And yet, it is not visible unless I click on a button. It would be nice to have an option for the recipe timeline to be shown directly in the recipe page.
|
||||
|
||||
> Could it be auto populated based on meal plan? I always forget to click "I made this"
|
||||
|
||||
> Smaller list view option for mobile
|
||||
|
||||
> One entry uses up a lot of screen space. I would decrease the size of an entry drastically. Also the image within an entry card looks a bit like an afterthought. I would move the user icon somewhere to the right an let the image got from top to bottom and have no border to the left.
|
||||
|
||||
> its nice, but in the time you collect new recipes, xou have only the dates from the creating
|
||||
|
||||
> Multiple images per recipe.
|
||||
|
||||
> Never used it.
|
||||
|
||||
> Build a mini timeline into the recipe page to see "committ history" (but for meals made haha)
|
||||
|
||||
> Option to hide, it isn't a feature we use.
|
||||
|
||||
> never use
|
||||
|
||||
> Keeps adding recipe as if "made", when in fact I have not yet made them. Maybe because I have it in my meal plan, but sometimes my meal plan changes...
|
||||
|
||||
> I would like that recipe timeline events would also show directly (without having to click on it and navigate away) on the recipe page itself. I.e., it could be shown as a comment? That would be really nice
|
||||
|
||||
> We never used the timeline at all.
|
||||
|
||||
> A way I would use it more often maybe is when at the end of a recipe there would be another button to say "I made it". Sometimes I just forget, especially when it's on the phone :)
|
||||
|
||||
> Recipe Timeline is not important to me. I use Mealie purely as recipe storage.
|
||||
|
||||
> Better integration with Home Assistant
|
||||
|
||||
> Faster loading times - never use it because it tends to be really slow
|
||||
|
||||
> It is difficult to use if I don't stick to my meal plan, which happens regularly. It would be great if I could go backwards in the meal planner with a button like "-1 week". That way, I would get a better overview of what I had as meals. Before I started to use the mealie mealplanner for the HassIO Integration, I used miro with virtual post-its for 2 years. So I was able to just scroll up and see what was for dinner 5 weeks ago and get some inspiration.
|
||||
|
||||
> Different view options would be nice. The alternating left/right orientation of posts is not as nice as a simple linear feed style timeline IMO
|
||||
|
||||
> More compact flow options
|
||||
|
||||
> Add an on behalf of function when adding recipes to the timeline
|
||||
|
||||
[Back to the overview](overview.md) or [On to Question 12](q12.md)
|
||||
283
docs/docs/news/surveys/2024-october/q12.md
Normal file
@@ -0,0 +1,283 @@
|
||||
[Back to the overview](overview.md)
|
||||
|
||||
# Question 12: Any suggestions for how to improve the Recipes functionality?
|
||||
|
||||
> Some things are not intuitive to use when creating recipes. also the import of recipes is sometimes interesting. Generally it works well but its been a while I havent added a new recipe so idont remember any pain points I had other than the ingredients and organizing the sections of steps
|
||||
|
||||
> Add the option to make recipes private from other households.
|
||||
|
||||
> Generally quite happy with recipe search and display :)
|
||||
|
||||
> Editing the ingredients list when creating a recipe feels a little cumbersome and could use some UX love, but mostly I think it works well.
|
||||
|
||||
> Highlight the ingredient used in a step that when tapped or clicked on shows the amount to use for that specific step. For example, a recipe uses carrots twice, once in step one and again in step 2. Tapping"carrots" in step one shows a pop up that shows "1 cup" and tapping carrot in step two shows "1/3 cup"
|
||||
|
||||
> While cooking offer support, included timers, using AI to discuss/ask questions about current step, next step, etc.
|
||||
|
||||
> Scaling ingrediants
|
||||
|
||||
> I would love to have a shortcut / one step process to analyze recipes with OpenAI directly on import
|
||||
|
||||
> possibility to add more pictures. maybe also a picture per step
|
||||
|
||||
> I wish I could have multiple columns of ingredient units, for example, 30 grams or 0,5 dl powdered sugar, because if I share my recipes they may not use weight as a unit like me. If I then increase/decrease the amount of the recipe I would like both units to change.
|
||||
|
||||
> One of my user's is bad at including tags. Perhaps an option to remind users to categorize, tag, etc
|
||||
|
||||
> Ability to double, triple, etc the ingredient amounts
|
||||
|
||||
> I think it works pretty well. Our most used feature of Mealie.
|
||||
|
||||
> Lots of improvements were introduced in the last updates here, so I may only add: - The possibility of grouping steps. For example for some pasta recipe, have the steps for the dough in one group, and separately for the sauce, or perhaps have a "sauce" whole category and have the possibility to add a dropdown menu so I can chose which sauce I want to add to the recipe. I wouldnt go as far as making sauce recipes as an indepentand meal recipe because the meal planner would treat them as a meal and mess up with that, but have the option to "+add" a sauce recipe to a meal recipe, and therefore adding it own subset of steps and ingredients to the whole recipe. - Tools: this seems to be only another tagging function but it would be useful is there were a place where I can input the tools that I ALREADY have, and then if some recipe specifies a tool that I DONT have, it would be highlighted so I dont find myself with the issue when im already in the middle of cooking it. Perhaps even the option to add it to the shopping list
|
||||
|
||||
> I would love to be able to decrease a serving count. If a recipe does 8 serves, but I only want to do 4, unless I want to manually adjust the scale to 0.5, I can't use the +/- buttons to reduce serving count. Additionally, if I want to do 10 serves instead of 8, I can't use the +/- buttons, it goes up by multiples of the serving count. I understand this wouldn't be for everyone, so maybe allowing the option to change the behaviour?
|
||||
|
||||
> add button which can change recipe portions count (if i have recipe for 4 people i should be able to recalculate for 2 or 1)
|
||||
|
||||
> The auto import imports weirdly sometimes. Also, absolutely allow fractions (1/4) instead of only .25 as an example
|
||||
|
||||
> Maybe add video support, template for receipes type
|
||||
|
||||
> Anything that could be done to simply or automate parsing ingredient sizes so that multiples (2x, 3x the recipe size) could be done without so much effort.
|
||||
|
||||
> when creating a recipe via text input, don't add example ingredients and steps, always a pain to delete 1 cup of flower, etc.
|
||||
|
||||
> I'd like to have the possibility to add macros at the food level - and make recipes calculate the recipe macros from the food macros. Thanks.
|
||||
|
||||
> Import from pdf
|
||||
|
||||
> Importing, particularly parsing ingredients and setting amounts is a pain. I wish there was a way to at least set the relevant settings by default (as I usually want the ability to scale my recipes)
|
||||
|
||||
> I would love ingredients to be identifiable as logical entities in the body-text of the instructions so I can hover over them, and it will pop-up how much. E.g., in Chicken Marsala I remove the fried chicken from the pan and add butter before sautéing the mushrooms. I don't want to scroll back up to the top to see how much butter, that instruction step could be context-aware and able to show me how much butter to add. This could be achieved rudimentarily with a markdown like tag, or an 'insert intergradient' button that would give you a picker of the ingredients already entered in the edit interface. If users didn't want to use them, they could still type ingredients in plain-text as before. A more advanced implementation could looks for matching text and recommend 'smart ingredient' links for the user.
|
||||
|
||||
> Would like to be able to enter a recipe for 2 people, but then see ingredients for just 1 person, or 3 etc. Currently you are stuck at a minimum for 2 and multiples thereof.
|
||||
|
||||
> No, I love the app. Think it works great.
|
||||
|
||||
> On ipad, please don’t make swiping all the way to the top refresh the page. Ive lost manual recipes while creating them.
|
||||
|
||||
> When clicking 'parse ingredients', it usually asks to save changes. That save doesn't include any actual changes from the recipe form. It would be nice to flow straight into 'parse ingredients' from the import instead of having to do at least 2 separate editing passes Include recipe as ingredient, with autocomplete and bidirectional referencing. ("Recipes that include this recipe:")
|
||||
|
||||
> Not sure how feasible it is, but it would be nice to have the option to turn off authentication for local deployments.
|
||||
|
||||
> Calculation of nutritive aspect of the recipes (like cholesterol, lipides, glucides) , based on the ingredient list. For example based on openfoodfacts.org or ciqual.anses.fr
|
||||
|
||||
> Ability to increase the servings and automatically multiplying quantities.
|
||||
|
||||
> I can't think of anything. It works really well and is a great way to manage our food.
|
||||
|
||||
> Improve visibility of ingredients linked to specific steps
|
||||
|
||||
> Ingredient categories. They would prob tie into https://github.com/mealie-recipes/mealie/discussions/1761 which would include ingredient sub-sections for sub-recipes, but they would be useful for recipes that have something like a cake and a sauce as well - especially when the cake and sauce both take sugar and it's easier to read when the amounts are split between sub-goals.
|
||||
|
||||
> Changing the serving size for fractions of the original is only possible by giving it a number and not the plus and minutes buttons. Typically over wants to decrement or increment by single servings.
|
||||
|
||||
> In ingredients list please add better support for non-english languages with more complicated grammar like Polish. We say: * 1 szklanka cukru / 1 cup of sugar * 2 szklanki cukru / 2 cups of sugar * 3 szklanki cukru / 3 cups of sugar * 4 szklanki cukru / 4 cups of sugar * 5 szklanek cukru / 5 cups of sugar * 6 szklanek cukru / 6 cups of sugar etc. * 1/2 szklanki cukru / 1/2 cup of sugar Antoher example: * 1 marchewka / 1 carrot * 2 marchewki / 2 carrots * 3 marchewki / 3 carrots * 4 marchewki / 4 carrots * 5 marchewek / 5 carrots * 6 marchewek / 6 carrots etc * 1/2 marchewki / 1/2 carrot So we have: * form for 1 * form for 2,3, 4 and fractions like 1/2 * form for 5 and more
|
||||
|
||||
> I often find that the brute parser is 10x better than the NLP ingredient parser, so I’d love to be able to select it as my default and use it automatically on recipe import.
|
||||
|
||||
> Ingredient Calculation should work. X = Ingredient / Default Servings so you can calculate every number.
|
||||
|
||||
> more features to support baking. Like portion: small cake(16cm) regular cake (22cm)
|
||||
|
||||
> Option to create recipe from url with AI rather than scraper (in many cases, the structure for recipe is not followed by website).
|
||||
|
||||
> Being able to import from PDF, spreadsheet, etc from other recipe programs and/or wikis that are private
|
||||
|
||||
> It would be good to be able to parse by default, and also add common ingredient aliases. There are ingredients that are commonly described with multiple forms, e.g.: "ground pepper", "black pepper", "pepper" etc. and it gets tedious to have to keep on making the same sorts of replacements instead of just adding a few rules. Similarly, unit conversion would be brilliant. At a basic level, you could make it possible to define units that are automatically converted to other units (e.g. cups to ml). A big step up, but a tricky one, is converting between volume and weight measurements. This is appropriate when say using metric and measurements like "1 cup" of flour, which should become ~150g, not 250ml of flour. Conversion of units and weight/volume seems like an area where having some default values (or an importable source, like with ingredients) that can be added to would make sense. I did some work along these lines myself a while ago and found http://www.fao.org/docrep/017/ap815e/ap815e.pdf a useful resource.
|
||||
|
||||
> This is probably mealie's most refined section. I use it all the time. Haven't had any complaints about it in a while.
|
||||
|
||||
> I would love to have a text to speech option, so that it can read out tasks while I am busy cooking, it would be great to have a button that reads out one step at a time...and you can just click next or even better just say the word next....i have text set to large on my phone/tablet as my eyes are poor so I keep having to scroll down between steps....I am also a little OCD about touching my phone/tablet with dirty hands so I have to wash my hands between each step before i scroll down on the phone/tablet...sounds like a "me" problem I know.
|
||||
|
||||
> I feel everything works great. Sometimes the import is buggy but that's probably due to the site and not mealie
|
||||
|
||||
> Not sure if this is updated since I'm on v0.5.6 but being able to section ingredients is important - especially where you have duplicated ingredients (e.g. one for a sauce, one for the main course).
|
||||
|
||||
> I'd love to be able to universally enable ingredient amounts.
|
||||
|
||||
> - Allow private recipes to be shared with certain individuals or households (vs sharing a link)
|
||||
|
||||
> Actually really like this section and the main reason why I use Mealie.
|
||||
|
||||
> It would be great if there was some way to convert between metric and imperial units.
|
||||
|
||||
> Combining Recipes similar to Tandoor Recipes. Sometimes I have a base dough when baking which can be used with several different baking recipes. Combining and connecting them in recipes would be a nice feature so I do not have to switch back and forth between different recipe parts.
|
||||
|
||||
> Support for meals which include multiple recipes e.g. a roast dinner would include links to roast chicken, roast potatoes, braised cabbage and so on. Filtering of recipes should allow tags or categories to be excluded.
|
||||
|
||||
> Split ingredient and "amount of ingredient" to allow for eg. convert imported recipes in Imperial units to normal metric and to allow multiplying the recipe for smaller/larger portions.
|
||||
|
||||
> Adding and rearranging steps can be quite cumbersome when there are many steps, if there's some way to streamline inserting and rearranging steps, that could be handle.
|
||||
|
||||
> none, it's already great!
|
||||
|
||||
> I dont have any complaints about this - works fine for my needs. I dont use the OpenAI feature so might look in to this.
|
||||
|
||||
> Maybe a way to paste a block of text copy and pasted from a private facebook post, and it would (at least attempt) to parse ingredients and steps. Aside from that, it works pretty well as is.
|
||||
|
||||
> I was really excited when I saw that there was a new version, but there's really nothing of interest in it for me which is really disappointing. Out of all the improvements that could have been made, there's household sharing been done which seems pretty niche, surely most people like me just use it for their house. I would have loved to have seen conversion of imperial to metric automatically. I would like to be able to have my main screen show only the main meal recipes, not all the dessert recipes together, just some sort of better separation that you could use on your home screen for the food vs drinks and desserts etc. Coloured tags would be a bonus. An android app where you can press a button to keep the screen on while cooking would be welcome too. I forgot to add for the Meal Planner functionality in the previous screen... There's nothing that can be used for advanced meal prep, when you make 2 or 3 meals on a sunday for the week, you can't plan for that. Your options are only limited to breakfast, lunch and dinner.
|
||||
|
||||
> For recipe scaling, scale by multiples instead of by serving count when using the plus and minus buttons, including multiples less than one (1/2, 1/4, etc). Please include a reset button with the plus and minus (which would be the x1 multiplier I suppose). I am often making half a recipe and it would be nice to use the minus button to scale to 1/2, instead of opening the custom number input and calculating the serving size for half the recipe. Please do keep the custom scaling input though, that is very nice in some cases.
|
||||
|
||||
> Add images from the recipes that are inlined so they are part of the steps Replace functionality, allow a recipe that was imported to be updated from the URL. Ive sometimes deleted a recipe so I could add it back with better images and nutritional information and then the parser fails so I have to add it all back by hand.
|
||||
|
||||
> An android app would be so good. Using the browser is really annoying
|
||||
|
||||
> Nope. I love it the way it is :-)
|
||||
|
||||
> Link other recipes for base recipes or combine different stuff
|
||||
|
||||
> If it was possible to specify the quantities for, say, 1 person, and then in the planner specify how many people are eating and get the required ingredients in the shopping list - that could be very handy.
|
||||
|
||||
> Sub-recipe nesting would probably be my biggest point. Also, built-in timers would be convenient.
|
||||
|
||||
> Nope! It’s great :)
|
||||
|
||||
> I end up with loads of stuff all mixed up, perhaps folders to help me sort it a bit? I think cookbooks might work in this way (just started using). Perhaps sort by number of people? I find the sort by ingredient filter doesn’t really work would be amazing if this did.
|
||||
|
||||
> allow for half portions to be selected as well - many recipes are for 4-6 portions, so we have to manually scale them down to 1 or 2 portions before adding to mealie - having that done automatically would be great
|
||||
|
||||
> Unless I am misunderstanding usage ideas, I would like to see the cookbooks or silos to be possible to hide one group of recipes from another so the "recipe" for the soap I make does not go into the same silo and show up alongside my cok-au-vin
|
||||
|
||||
> automatic unit detection to adjust the size of protions
|
||||
|
||||
> more possible entries for nutritional values. adding note for amount food per entred nutritional values. OpenAI calculation for those. editing mode for uploaded or scaped pictures. we found that if pictures are in landscape mealie would rotate the picture in wrong (upright) position. no possibility to change beside adjusting the picture outside of mealie.
|
||||
|
||||
> Big ask but calorie & macro computation(s) related to the recipes.
|
||||
|
||||
> ADD UNRAID TO YOUR INSTALLATION GUIDES. Make official app on unraid community applications.
|
||||
|
||||
> When importing a recipe, it would be great if I could switch on ingredient counts and parse the ingredients right away before saving.
|
||||
|
||||
> some websites guard against recipe imports by detecting bots. would be nice to allow the importer to have some kinds of bot evasion options - changing the user-agent, pairing with something like flaresolverr, importing saved raw web pages, explicitly allowing specified local IP address (i see that's a security concern) to allow proxying, etc.
|
||||
|
||||
> Make it possible to remove recipes that you don't want anymore.
|
||||
|
||||
> A better method for PDF export. Currently the webp images result in large PDFs when exported (multiple MB when webp picture is less than 1MB).
|
||||
|
||||
> Give me a compact view!
|
||||
|
||||
> Have an option for a secondary measurment option which also scales when you increase the amount of servings. Like if the main option is "1 packet", then have the option to add "2 teaspoons" or "20 ml", etc.
|
||||
|
||||
> Works as intended for me
|
||||
|
||||
> Add support for Ingredients that change the plural based on the number so like 1 egg 2 eggs
|
||||
|
||||
> A cool feature would be to add reminders for some ingredients. Some recipes require X ingredient to soak in water 24 hours or another thing to be prepared well in advance. If the recipe is added in the meal planner, then it should send a notification based on what was configured in Settings that you should prepare that ingredient.
|
||||
|
||||
> Better initial parsing of ingredients, specifically automatic creation of unknown item and automatic breakdown of quantities. My partner doesn't like to take the time to clean up recipes so they're unable to take advantage of a lot of other functionality within Mealie as a result. If the recipe was imported via URL, option to save the original webpage as .html/PDF/similar to guard against link rot.
|
||||
|
||||
> Quick UI option to 2x,3x,1/2x, etc recipe ingredients
|
||||
|
||||
> Honestly love it as is. I go external to figure out the nutritional information for my recipes it would be nice to bring it into mealie https://www.verywellfit.com/recipe-nutrition-analyzer-4157076
|
||||
|
||||
> I love overall how recipes function and are laid out. The only thing that would be nice is if you were able to take a picture of a physical recipe and have the parser create the recipe, similar to the URL importer. I know that is a huge ask though and it is not a deal breaking by any means.
|
||||
|
||||
> A general tips or something like that would be useful to link, things related with food and cooking but that they are not recipes, for example: cooking temperatures of the meat, type of fat: pro and cons, cuts of meat and which ones are best for each case
|
||||
|
||||
> not really. it works great as it is
|
||||
|
||||
> Well, its not clear nor easy how to connect to OpenAI and take advantage of ChatGPT properly. I've managed to connect it but when trying to import recipes using it I fail to get it right. I've already tried to get ChatGPT on its free site to get me a recipe from a site which is not compatible with the scraper, and it was very successful to give me a script with Mealie format, although I had to create every ingredient first manually so it wasnt viable, but it would be great if it were possible to use GPT to scrape recipes websites and import them so we can then tweak them a bit if needed. An example is this page my wife loves but is not compatible so she always ends up complaining: https://www.paulinacocina.net/
|
||||
|
||||
> Add the option to enable ingredient amounts by default for all recipes
|
||||
|
||||
> I think I would just want to be able to share recipes across groups or copy a recipe to another group more easily.
|
||||
|
||||
> Print / Export functionality improvements: ### Print - Allow for padding changes or something like "force on one page" or "condense." The amount of whitespace is great for web but not needed and wasteful for print. - Allow change of header/Section formatting (center, left, size) - Allow for margin size changes "Leave space for notes on right" ### Export - I love the new Ingredients Copy function, would love something similar on the instructions side. That way I can easily paste it in a different document or email if needed. - Allow export as text only - basically the download as JSON version, but just the basics to be opened in notepad or word
|
||||
|
||||
> Support multiple languages for ingredients, let the user choose preferred names from aliases of foods/units, support abbreviations and aliases in manual ingredients input suggestions, parsing after importing without saving/refreshing the side has weird behavior, better local parsing (brute force add ingredient button does not correctly apply the same ingredient to other fields; local model? pdf/image parsing?), when exiting the editor indicate unsaved changes
|
||||
|
||||
> Improve bulk tagging functionality, e.g., let me search for recipes then tag everything that matches the search. Right now I have to scroll through all the recipes and bulk tag everything by hand.
|
||||
|
||||
> Hardness (discussed in discord and issue) that can be filtered by. Preamble "before you begin" step.
|
||||
|
||||
> Ability to get nutrition information on ingredients would be quite useful
|
||||
|
||||
> - Bulk import of recipes based on images. - A way to review all of the imported data before committing it to the database - Allow for multiple images when importing a single recipe.
|
||||
|
||||
> Remind me to use the feature that adds ingredients to steps because it's awesome but I always forget to set it up
|
||||
|
||||
> When I import a recipe, I want the option to automatically parse my ingredients and take me to the parse page.
|
||||
|
||||
> Editing - could we have a 'Save' button at the bottom as well, or better still, that sticks to the same position on-screen? I seem to be forever scrolling back to the top to save it, every time I make an edit. Printing - I sometimes print out a recipe to avoid using my device near the cooker(!) It would be good to have some control over the layout. For instance, the headings Step 1, Step 2, etc, needlessly take up space.
|
||||
|
||||
> What about a simplified WYSIWYG Editor for the step text? (My wife will never learn to use Mark down syntax..)
|
||||
|
||||
> NA, mealie is great. I appreciate the work done to help quickly build recipes snd ingredients from copying and pasting non structured recipes that can’t be imported.
|
||||
|
||||
> In steps, make links to quantities or ingredients so I don't have to scroll up to the top again
|
||||
|
||||
> Serving scaling would be amazing
|
||||
|
||||
> Loving it, just keeps getting better
|
||||
|
||||
> That you can add x many ingredient fields.
|
||||
|
||||
> It would be great to have alternative ingredients. I like to use the 'ingredient amounts' and would like to be able to specify 'use *this oil* or *that fat* to fry'.
|
||||
|
||||
> Add photos to each step
|
||||
|
||||
> Overall, it seems to work well, Maybe a global setting for ingredient amounts?
|
||||
|
||||
> When editing a recipe I've not been able to find a way to remove the image, for example I imported a recipe from a URL and it added an image. I didn't want to use an image so I tried to remove it. I couldn't and needed to create a new recipe manually.
|
||||
|
||||
> Nutritional function improvements?
|
||||
|
||||
> not really. Easy to use!
|
||||
|
||||
> I could not find a way to add or remove units (like tsp, cups, etc.) so I've been stuck with a unit called "ts" when I made a typo when entering "tsp". Also have to have plural forms of units (cup/cups); maybe a place to manage units could have a checkbox to indicate "when quantity is equal or greater than 1, use plural form or add an s".
|
||||
|
||||
> When ingredients are not linked to steps having the ingredient list stick to the side when scrolling down the steps would help a lot.
|
||||
|
||||
> I use Mealie live while cooking, I hate the way it is scaling right now. I would love to have it just as multiplier and not with the "smart way" as it is right now
|
||||
|
||||
> I sure miss the native recipe OCR functionality. My main reason for using a recipe keeper was to digitize my cookbooks to make it easier to find recipes. The built-in OCR was a differentiator between Mealie and its competitors (and for whatever it's faults, it worked surprisingly well for me.) The AI implementation was both complicated to setup and didn't work (and I'm not interested in relying on a third-party service either.)
|
||||
|
||||
> Have the ingredient quantities enabled by default and supported by the importer
|
||||
|
||||
> I would love the required tools to work the same as ingredients. That is, have a counter (i.e., the recipe needs 1 oven, two pans, one small bowl and 3 large bowls) and especially, linking those to the steps. I love the "link ingredients to step" feature, because it allows me to really quickly see what I need for the current step without having to scroll (or touch the screen at all for that matter), but as of now, for the tools I still need to do that.
|
||||
|
||||
> Difficulty level (how difficult is it to cook)
|
||||
|
||||
> - Allow sorting (manually) of the linked ingredients of a recipe step. - Allow ticking (marking as done) of the linked ingredients of a recipe step. - Automatically save while creating a new recipe (to avoid losing progress). - Make it easier to rename/change existing ingredients in the DB. - Make it possible to clone an existing recipe. - Maybe it would make sense to have a linked recipe within a recipe. For example, a "cake base" that is used by several cakes. - Allow for multiple timers. This would be useful if several steps require a certain amount of time.
|
||||
|
||||
> Can't think of an improvement right now.
|
||||
|
||||
> Maybe making categories and tags more automatic? I am not sure if it's maybe too hard. But some recpies are called "Noodles with..." and I have a category "Noodles". Would be cool if something like that could be automatically parsed
|
||||
|
||||
> * Allow scaling ingredients to different servings ("4 serving(s)" appears clickable but does actually nothing). * Allow creating small variations of a base recipe without fully duplicating (e.g. "the recipe says this, but I usually do this instead"). Comments are too out-of-the-way to suffice. * Allow adding notes/conversions to specific ingredients (e.g. setting conversion rates of substitute ingredients: "1 clove of garlic is 0.25 teaspoons of powder", "the one onion the recipe calls for is about one cup of pre-chopped opnions" or just adding per-ingredient notes that are easier to access)
|
||||
|
||||
> I find the detailed ingredients somewhat awkward to use. (but thk you for all the work on mealy ❤️)
|
||||
|
||||
> Better integration with Home Assistant
|
||||
|
||||
> Link ingredients to steps. I think this is possible in tandoor and would be really great. But please keep also the main ingredient list, just links to the steps. It would probably be good to be able to link one ingredient to multiple steps, like e.g. salt or pepper.
|
||||
|
||||
> Could the recipe ingredient parser be built into the recipie editor - no need to navigate away to parse? Drah-and-drop recipe images? Perhaps allow a space to upload a photo of a meal 'as made'
|
||||
|
||||
> - ingredient scraper usually needs to be passed and manual adjusted. Not a big deal tho.
|
||||
|
||||
> Perfect
|
||||
|
||||
> Add an option to hide the 1-5 star ratings on recipes.
|
||||
|
||||
> Better UI/UX for parsing Ingredients, sharing Links with PWA imports instantly without the time to change the checkboxes, for parsed recipes allow to decrease the meal portions from 4 to 3 or 2 with plus and minus instead of doubling it or requiring to input something like 0.75 manually.
|
||||
|
||||
> Being able to reduce servings would be great. If a recipe is made for 4 servings, being able to see only 2 servings would be nice. I had another thought before, but cannot remember off the top of my head
|
||||
|
||||
> Two points that (to my knowledge) are also already discussed online would be 1. Timers linked to steps. 2. Recipes as ingredients or alternatives, with the option to add them to the Meal Planner / Shopping List with a single click.
|
||||
|
||||
> Fiddly part for me is to parse the ingredients and convert various units to grams. Not sure how it would work exactly but I think make use of llms. Eg a cup of flour = ?? grams
|
||||
|
||||
> Better UI flow
|
||||
|
||||
> I would like to see images treated as their own objects, instead of in-line. I always end up having to manually add styles to the img tag, otherwise the image takes too much space. Also would be nice to be able to disable images when printing the recipe.
|
||||
|
||||
> More support for sites with different formats. Or picture OCR
|
||||
|
||||
> No super happy with it
|
||||
|
||||
> Not really, it's great
|
||||
|
||||
[Back to the overview](overview.md) or [On to Question 13](q13.md)
|
||||
391
docs/docs/news/surveys/2024-october/q13.md
Normal file
@@ -0,0 +1,391 @@
|
||||
[Back to the overview](overview.md)
|
||||
|
||||
# Question 13: Any other suggestions or feedback you have for us?
|
||||
|
||||
> Great Project, We love it !
|
||||
|
||||
> It's an amazing software. thanks for making it. has helped me organize my family recipes and be able to more easily find and make family favourites.
|
||||
|
||||
> I love the concept of mealie, great work so far, excited to see how it develops in the future!
|
||||
|
||||
> Honestly, keep up the great work! I've been slowly getting my family to use it and has worked for a meal or two so far! Thank you for the dedication to this project!
|
||||
|
||||
> Thanks for the great app!
|
||||
|
||||
> Import recipe from "betty bossi": e.g. https://www.bettybossi.ch/de/Rezept/ShowRezept/BB_BBZA110115_0004A-40-de
|
||||
|
||||
> For inspiration have a look here, I think it has a lot of nice features and the integration with AI is everywhere https://cooked.wiki/
|
||||
|
||||
> I would love to see caching / storage in mobile browsers / PWA, so that recipes are available offline. The performance of mealie could be better. I currently only have 88 recipes, but the initial load of Mealie takes 10 seconds. This should load instantly.
|
||||
|
||||
> First and most important:Mealie is really great. Keep up the incredible work! For my storage I use Grocy. Mealie is of course much better redarding recepies, but in Grocy I like the possibilty to show recepies based on what I have in stock or where only few items are missing or what needs to be used. It would be great, if there would be an easy way to link recepies and shopping lists between Grocy and Mealie, but I know this is probably more an API thing...
|
||||
|
||||
> I think this is a great app, thank you!
|
||||
|
||||
> It would be useful if I could use categories/tags/tools/food to do advanced searches for example, I want the dessert category and egg as food but to exclude strawberry in the food search. In other words, I would like to be able to select and deselect things to make advanced searches.
|
||||
|
||||
> Maybe I've missed this option, but I would like to be able to "share" recipe (or even dump the database of recipe, without login/config/...) with other Mealie users on a different system
|
||||
|
||||
> We're still learning how to integrate Mealie into our kitchen. Thank you for including OIDC. Some desired features: - Tag deduplication, & merging - Tag parsing. Some recipes have 'Chicken' others have 'Chicken soup'. Two different tags when looking for things with Chicken - Recipe deduplication. A good task for AI perhaps
|
||||
|
||||
> I love Mealie!!!
|
||||
|
||||
> No specific feedback other than a big thanks for your hard work! Kudos to all of you
|
||||
|
||||
> I love the program and like its functionality. I'm glad there is now an option to make your mealie recipes accesable without special links or login requirements.
|
||||
|
||||
> It'd be great if the login requirement could be ignored for LAN connections so that users at home do not have to keep logging back in - but only if it's possible to maintain overall security.
|
||||
|
||||
> Not really, mostly Meal Planner and Shopping List recommendations. I would love to have some sort of syncing functions so I can integrate it with notes, shopping lists and calendars. Regarding sync, having the meal planner somehow synced with my calendar could be great for planning my day, specially as the recipes usually have some expected time for the preparation, so for example: If I expect to have Lunch everyday at 1PM, and the recipe for my monday takes 45m to make, I would have an event in my calendar called "MEALIE Lunch: Spaghetti w/ Filetto" starting 12.15PM with a 30m before notification so I get notified and have time to round up my ongoing workm, be ready to start cooking and check I dont have to buy fresh ingredient. I dont know the technicals behind it but if syncing to calendars is too complex, at least as an intermediate step, having the option to export an .ics with the whole month and then each user can have it imported in the calendar fo their chosing.
|
||||
|
||||
> Love mealie!! I probably don't use it enough though. One thing worth taking a look at (not sure how technically viable it is, but) the recipe import often fails, especially for recipes in hebrew (which is my native language). I still use it to save recipes but it kinda misses the point. Anyway, thank you so much, and keep up the good work :)
|
||||
|
||||
> Keep up the good work, mealie is a great tool
|
||||
|
||||
> I use this with Authentik so pretty glad to see OIDC made it in (though I haven't had a chance to update my instance in a while). Just to be clear, I'll *never* use any of the OpenAI integrations. GenAI is a negative value add and I don't want it anywhere near my instance.
|
||||
|
||||
> Mealie is fantastic so far, I've only just started using it in the past week. It would be great if it had the option to group ingredients into sections, e.g. for a recipe with multiple components. Also when it scraped a recipe from a website it was able to tell the difference between a heading and an instruction step. It might already be able to do this but I haven't quite explored all its capabilities and if so, I apologise! Thank you for making such a fab service self-hostable!
|
||||
|
||||
> I am may missed the section for the Shopping List and this may be an impossible ask. But would it be possible to combine ingredients to reduce waste. For example: if i had 2 recipes for that use a 1/4 cup of milk and another that used 1 cup of milk, the shopping list would say 1-1/4 milk as a total purchase. the Mealime app performs this function as a reference.
|
||||
|
||||
> Thank you for making Mealie.
|
||||
|
||||
> THANK YOU. Thank you for your work. Thank you for putting us back on a healthier meal plan. It honestly makes a pretty significant difference.
|
||||
|
||||
> It would be nice to be able to personalize the instance a little bit more. I host this instance for family and friends and to be fair they don't really care what's under the hood. So, changing the title, the banner that appears when a link is shared, etc would bring a lot of value
|
||||
|
||||
> At the moment you can only have the text next to the logo in the top-left corner say "Mealie". For me, it would be nice if you could change that text to be something else (e.g. frank's bistro).
|
||||
|
||||
> Keep up the great work!
|
||||
|
||||
> Mealie is the only tool I've found that allows me to meal plan efficiently. I eat healthier and save money
|
||||
|
||||
> Absolutely fantastic application. My family depends on it!
|
||||
|
||||
> Keep up the good work. Me and wife love it alot.
|
||||
|
||||
> I was using it daily to import recipes from url, plan weekly meals. The dinner image would show on a home assistant dashboard what was for dinner that night. This broke with a mealie update. Mealie is still working but not grabbing the dinner (unknown).
|
||||
|
||||
> continue the way you do ;)
|
||||
|
||||
> I love mealie :D Thank you for providing it and making it better and better!
|
||||
|
||||
> Keep up the great work thank you! Mealie is fantastic!
|
||||
|
||||
> Thanks for making and maintaining this! It's revolutionised how we eat.
|
||||
|
||||
> Have you considered making recipes publishable via activitypub? That could be very cool.
|
||||
|
||||
> The Households filter is a lifesaver. Maybe add a filter to find recipes owned by a user to make it more granular.
|
||||
|
||||
> I love this project and it has absolutely made my love significantly easier, thank you. The ability to import a cert/key file to enable SSL would be great, either via the UI or yaml would be fine. This is a very odd and specific request but when importing from something like HelloFresh many of their ingredients are in units, how they ship them. If there were some built in way for me to define one unit of ingredient X = 1.5 tsp or similar for it to auto switch that when parsing, that would be amazing.
|
||||
|
||||
> Love the product! Such great work. We use it non stop for meal planning and shopping. Thank you so much for all your hard work in making such an amazing bit of software.
|
||||
|
||||
> No. It's been very useful to me. I'd love to contribute. Not a programmer but I am an IT professional
|
||||
|
||||
> When importing recipes (especially in bulk), it would be nice if the system notified you if the URL you are trying to import is already in the DB instead of just importing it and marking it with a (1). Or have an option to just not import duplicate URLs.
|
||||
|
||||
> AI is not for food.
|
||||
|
||||
> 1 - Ability for the Admin user to rename or delete wrong "foods" or "units" items. (today the only way I found is to use swagger). 2 - Management of "of" in ingredient list. (like in "1 kg of oranges " vs "4 oranges")
|
||||
|
||||
> Thank you for all the great work. Really enjoy using, and we rely on Mealie for our food planning 😁🍲
|
||||
|
||||
> Recipe as an ingredient https://github.com/mealie-recipes/mealie/discussions/1761 my kings and queens and all royalty in between.
|
||||
|
||||
> Please add a fully guide how to install mealie. I got lost with the env variables and was only able to set Mealie up thanks to guy I found on youtube that provided a standard docker compose file that worked perfectly for me. Why don't you provide a standard docker compose that people can modify? Or at least a full guide? Apart from that I completely love Mealie! Imprting recipes is amazing. It won't work in a few cases (plain text) which is something that you could optimize.
|
||||
|
||||
> Formatting recipes to parse ingredients AND automatically connect ingredients to the steps could be done with LLM/OpenAI integration, that would save a lot of time.
|
||||
|
||||
> Hover effect for all recipes is useless. Most of the sites i import from have just bullshit in the first section. Would be nice to have some themes or disable stuff like this.
|
||||
|
||||
> i personally dont use any of the planning etc. also i use another app for my shopping list. mealie for me is just a plattform to share reciepies with familie and friends, all thoose recipies we have for years in our famaliy. so we all have a place with recipies we all know are working great. something like chefkoch and co are flooded with bad recipies and nobody wants them. so using mealie as a managaer for shopping list and week planning etc is nothing we use at all becouse this would mean that everything lives in mealie, something like bring or similiar is way better for just that use case and mealie is "just" a plattform for private recipies what would be a nice feature is some kind of centrialized database a private mealie CAN push to and this way making recipies others would like to share explorable.
|
||||
|
||||
> Love Mealie! Thanks for making, sharing, and maintaining a really cool open source project :)
|
||||
|
||||
> Integration with Bring would be very nice
|
||||
|
||||
> an app for android would be perfect
|
||||
|
||||
> Have the meal planner select meals for a time-span, e.g. a whole week/month (excluding weekends).
|
||||
|
||||
> abandoning the project for another one which is similar and unreleased was a huge fuck up. Reliability is more important than flashy flashy by miles.
|
||||
|
||||
> thanks for the great work
|
||||
|
||||
> Thanks !
|
||||
|
||||
> A way to import a nice recipie i have seen on social media (e.g. Instagram). And also save the iamge/ video of it. I know its a large task, but it would be great.
|
||||
|
||||
> You do great work!
|
||||
|
||||
> Keep going. Mealie is really looking good right now.
|
||||
|
||||
> FANTASTIC APP!
|
||||
|
||||
> A small issue I have is being logged out when using mealie as a pwa on android through the brave browser. Just a little annoying when it happens but it doesn't happen that often.
|
||||
|
||||
> My wife loves this and enjoys importing recipes from the web when she has time to find them, but most of our meals are an established part of a set we have been using for years. Importing from other systems or through some sort of OCR tech in an app to grab grandma's cookie recipe would be more useful than scouring all the cooking websites and importing something that may never make it to the table again. Maybe that is just us, but the kids and jobs make recipe searching a luxury. Without a good recipe base, the other features are less useful.
|
||||
|
||||
> Thanks a lot for your great work you're doing with Mealie. I use it to store my recipes and manage my family's shopping list and it's so much better that managing everything in paper folders.
|
||||
|
||||
> Some bits of the UI are a bit slow, for instance adding a new ingredient has a huge typing delay when showing hundreds of other ingredients (I tried to profile this in-browser, but the tab crashed). It would be good to prioritise snappiness over fanciness. It would also be quite good to split complex recipes into multiple stages.
|
||||
|
||||
> Integration with Grocy would be nice.
|
||||
|
||||
> I've had some ideas to contribute but haven't had the time unfortunately. 1. When cooking, the timer "floats" and follows as you scroll down. 2. Multiple timers. 3. Visual warning when timer goes off. (had my pc connected to bluetooth so didn't hear it go off..) 4. Add pre-set timer to recepie
|
||||
|
||||
> I am very happy with the features for mealie. It helps me budget and make nice food for my family
|
||||
|
||||
> Keep up the good work
|
||||
|
||||
> Love it. So far, all of the updates have been positive. While there are a ton of new features that we'll probably explore in the coming year, the core functionality is still spot on . 🤞 for the future :)
|
||||
|
||||
> None at this time. Thanks for your work!
|
||||
|
||||
> Thank you for everything. I would like to find ways to contribute more to the project and the community. Mealie is now also in use by my parents' household and two co-workers' households since I should it off. My only other recommendation would be to have a better set of default food labels/units/categories/measurements. Or perhaps localised sets of defaults.
|
||||
|
||||
> I understand it's probably not doable but some form of Grocy integration would be so amazing.
|
||||
|
||||
> I´m astonished by the work you´v done already. Since certain circumstances I´m not able to fund the project, but hope it will change soon. Coud it be possible to habe each recepie analysed by AI, if it is keto, low-carb, vegan, etc.? Or maybe automaic mealpans for a certain type of diet? So one wil not miss their macros.
|
||||
|
||||
> Most of my recipes were imported from AllRecipes.com. I used to have an account there where I saved recipes, but the website has lost features and gotten progressively slower over the years. Once I found Mealie I imported all my recipes and ditched my AllRecipes.com account. Mealie works better than AllRecipes.com ever did, even in its hey day. Just having the ability to search my own recipes again is wonderful! I don't use the advanced features much, mainly importing from URLs, tagging and categorizing, and occasionally commenting if I need to remember alterations or tips. Thank you so much for this great software!
|
||||
|
||||
> love you keep it up
|
||||
|
||||
> You guys are amazing! Thanks again for all of your hard work.
|
||||
|
||||
> I'm a new user but I love it already.
|
||||
|
||||
> Would be nice to have a "I'm cooking setting that stops eg. tablets from sleeping for "Total time" for this recipe or default of eg. 30 minutes
|
||||
|
||||
> I need to look to see if this can be done already, but an accountless option would be nice, don't need an account for home use only.
|
||||
|
||||
> Just an idea, it would be cool if I could set requirements for recipes. For example making it required that a category and tag is set. I have set up my instance to add things to cookbooks from these but some of my users forget to add them, therefore they don't appear in the cookbook. If it were required then they wouldn't be able to save the recipe until they did.
|
||||
|
||||
> please allow the ability to disable/hide extra functionality throughout, we don't use a lot of it so it's just clutter. We don't use shopping list, meal planner, nor the timeline. All we wanted was a simple recipe creation + storage app and mealie does do this very well. We do use 'cookbooks' to separate group recipes made by me, made by my wife, internet recipes, family, etc.
|
||||
|
||||
> Great project. Thank you!
|
||||
|
||||
> I think the recipes page is really good, and I love using it for my cooking, and it makes me cook a lot more now. The other things like shopping list and meal planner aren't useful for me in their current form unfortunately, but I hope to be able to use them in the future. I'd never use a shopping web app because of the page refresh in a browser, so that would have to be in an app before I'd consider using it while I was at the supermarket. I also have to spend too much time converting imperial to metric quantities in recipes that I've imported and that would be a massive time saving feature to have them auto convert if I set up the ingredient amounts.
|
||||
|
||||
> So far I love Mealie and I hope you guys keep up the great work. You have made a fantastic product.
|
||||
|
||||
> Much better and clearer handling of administrative task. Things like bulk adding or removing tags and labels to selected items.
|
||||
|
||||
> I love Mealie. It's one of my most essential self hosted services right next to DNS and a password manager.
|
||||
|
||||
> Converting to metric would be so good! Also, being able to set the primary language as British English would be good. Ie. Fiber --> Fibre etc.
|
||||
|
||||
> Keep up the awesome work on this project. I am trying to get more family members into using it. But I started them with an earlier (less functional and feature rich) version. So I am trying to draw them back in as it seems to work so much better these days.
|
||||
|
||||
> We are generally very happy with the app and it's functionality. We are using it self-hosted internally on a Raspberry Pi and it serves our needs very well.
|
||||
|
||||
> Please make URL importer and recipe/ingredient editing/adding more user friendly. Often when importing I find errors or need to manually edit a lot myself, which makes it very clunky and dissuades my family from using Mealie. Thank you for a wonderful system!
|
||||
|
||||
> Keep up the amazing work!
|
||||
|
||||
> Nope, just thanks, your app rocks and has completely changed how we prepare food. You have helped us to be healthier and more organised, thanks.
|
||||
|
||||
> I love love love mealie. Temporarily had to stop sponsoring through Github - but will definitely responsor in the future. I appreciated incorporating OIDC. Happy that we can still see recipes without being logged in (was afraid this would disappear going into v1 territory). I love cooking but choosing what to make gives me analysis paralysis. Having a shortlist of thing I love right there in Mealie is great. My girlfriend uses mealie as well. We don't live together so it is a surpsie to find new recipes in there from time to time.
|
||||
|
||||
> Nice application, I enjoy it a a lot. Thanks for your work :)
|
||||
|
||||
> Mealie is great and has helped massively improve my diet. Inspiring stuff. Keep up the good work.
|
||||
|
||||
> I'm having some trouble with the OpenAI image parsing feature. The error messages indicate OpenAI isn't returning JSON as expected? This isn't a critical feature to me, so I haven't followed up yet, but it'd certainly be handy if this worked better.
|
||||
|
||||
> Thank you very much for your effort. you make our family life much easier cause we know have a central place for receipt storage which we mutual agree on. thats makes it a lot easier to find receipts we already did. also all the loose paper collections are gone
|
||||
|
||||
> No. I wouldn't mind telemetry as long as it was opt in by default.
|
||||
|
||||
> Keep up the great work!
|
||||
|
||||
> - Allow specifying ingredients measurement in recipe builder via acronym (typing in tsp instead of teaspoon) -Cache/Save recipes in client so that reactions can still be accessed if server/Internet is down (I assume this probably needs a proper mobile app to implement)
|
||||
|
||||
> Thanks for your great work. Mealie was a live saver when my main recipe website suddenly went offline. It started as an archive and is now my family's recipe book.
|
||||
|
||||
> very nice!
|
||||
|
||||
> Mealie is great! Thanks for developing it and making it available for free. It has improved our organization.
|
||||
|
||||
> Thank you very much for developing Mealie! Me and my wife use it for everyday meal planning and find it very useful.
|
||||
|
||||
> You are doing great work! I am super happy with mealie!
|
||||
|
||||
> Good job!
|
||||
|
||||
> It would be great there was a better way to display the dashboard in HA than to use an iframe and also to not have to type the password every couple weeks
|
||||
|
||||
> On bulk imports, it would be great if you could parse out the pasted step numbers.
|
||||
|
||||
> Love the project, use it daily as a family!
|
||||
|
||||
> Nutrition information for Ingredients to automatically build up to recipes
|
||||
|
||||
> Please add a "no login" Option. In a private household with 1-2 people it's annoying to login every now and then... I would prefer to use Mealie without a login, at least I wish I could have the option to do so.
|
||||
|
||||
> It's an amazing application. It improved my marriage as there was always arguments as to what to eat, who cooks, what we need to buy. Everything is organized, it removed a LOT of stress from my life.
|
||||
|
||||
> Every time I log in I get the welcome to mealie lets get started. I always have to click I'm already setup, just bring me to the homepage. I find this kind of annoying. I am not sure why I would want to setup after I have already done so. Maybe I am missing something.
|
||||
|
||||
> Great work love the platform
|
||||
|
||||
> I just want to say I absolutely love Mealie and you've done an amazing job! I'm happy to support such a fantastic piece of FOSS software!
|
||||
|
||||
> Might be nice to have a settings option to disable features you don’t care about to reduce UI clutter. Helpful for less technical household users who just want a simple digital/self-hosted recipe book.
|
||||
|
||||
> I get lots of recipes from websites that require signing in. The recent addition of importing through HTML will hopefully improve my workflow a bit. A browser extension to send the full HTML would be even nicer.
|
||||
|
||||
> It is perfect for my use case. We use it to plan for the upcoming week and we use the pool of recipes that I have imported as inspiration. We use planner comments for restaurant names in order to have a complete timeline.
|
||||
|
||||
> It's a great app and I use it a lot more than I thought I would. Thanks a lot for it!
|
||||
|
||||
> Mealie starts to bog down heavily when there are 1000+ recipes.
|
||||
|
||||
> Thanks for the great work!
|
||||
|
||||
> My wife and I love this software, we use it every day for our cooking and we are always adding new recipes into it. Keep up the fantastic work!
|
||||
|
||||
> This software solves a problem I never even realised I had - where to collect all those recipes from books, magazines, websites and scraps of paper all over the place - and it runs an absolute charm. Thank you!
|
||||
|
||||
> Thank you for the amazing work you are doing
|
||||
|
||||
> Please make the WPA work as the web page on iOS, because the icons get lost and replace by generic rectangle, it's not usable for checking in real time the shopping list.
|
||||
|
||||
> Include support for other databases like Oracle.
|
||||
|
||||
> thanks for the hard work
|
||||
|
||||
> Great software, thank you kindly!
|
||||
|
||||
> It's such a useful app, thanks for all the hard work!
|
||||
|
||||
> update mealie from application
|
||||
|
||||
> The app has been improving steadily and I'm aware that we are in no position to ask for anything, I do believe that there is a lot of margin to improve and make it much user friendly and not so "power user only". The most important things here for me are the meal planner which should be smart enough to plan my meals and just tell me what to eat based on what rules I established, the shopping list because if I dont have the items to cook, I end up derailing and eating some delivery or breaking my rules, and of course the smartest scrapper possible so its easy to import recipes we like. From a person who is in almost constant need of a controlled diet, I can tell that discipline can be hard to keep, and Mealie can be a really powerful tool to keep it, and Im thankful for that.
|
||||
|
||||
> Love the project, it's the only way I enjoy doing groceries and planning meals in advance opposed to ordering out
|
||||
|
||||
> I would like to be able to switch between groups more easily, if there was a button to select a group. Right now, as far as I'm aware, I have to change the URL to access the different groups. Though, I haven't used it recently because of this issue.
|
||||
|
||||
> i enjoy mealie as well as my family since the beginning of the project. Thx a lot for your time :)
|
||||
|
||||
> The search improvements are huge!! Love the additions there. - Would love to be able to search by source domain - with recipes added via url. (e.g. "Mary's Test Kitchen" would return every recipe from the domain https://www.marystestkitchen.com/) there could be a matching section in settings to make it easier to read like that, or the filter would just show marystestkitchen.com, either is fine - Why do the foods in the list appear to be random? Couldn't they pull from the ingredients in all the recipes?
|
||||
|
||||
> I moved to Mealie from Tandoor, and I like the look and feel of Mealie much better. I host Mealie in docker, and every time I update the docker it wipes my database. I have to back up before updating, and restore after updating every time, which is probably a good habbit to have, but it would be nice to not have to every time. I don't know if it is my docker compose, or the way Mealie works. It is not a huge deal, but it is kind of annoying. Other than that I really enjoy Mealie, and have come to depend on it. Thank you for creating Mealie and keep up the great work.
|
||||
|
||||
> oh my gawd PLEASE let me change the color of the header on the mobile safari app. it drives me crazy that it's always orange ::tears:: But- love the app overall :)
|
||||
|
||||
> Provide (more) ideas/concepts for tags and categories to the user, restructure profile page: the amount of different things that would be more accurately described as settings are confusing, allow combination of NOT IN and IN in search, save language setting per user. Forgot to mention for recipes: provide a toggle to merge ingredients to see the total amount of an ingredient needed for a recipe. Similar to how it is handled when adding to a shopping list but should also merge regardless of note. This is useful when using sections. Also with regard to internationalization: internationalize/standardize servings and time. Also when internationalizing categories, foods, units, tags etc., don't make it dependent on the UI language setting
|
||||
|
||||
> Can you make PWA shortcuts available on iOS? If not, please provide documentation explaining this limitation. I tried and tried to get it to work, but it appears to be an Android-only feature.
|
||||
|
||||
> Take care of yourselves!
|
||||
|
||||
> PLEASE keep working on Mealie, my family has come to pretty much rely on it daily! I would even be willing to pay for a license as long as the project stays strong!
|
||||
|
||||
> I love Mealie. Please keep up the great work!
|
||||
|
||||
> I only use it for the basics, but Mealie does its job really well.
|
||||
|
||||
> Please continue! Mealie is a great system, we love it!
|
||||
|
||||
> I added my wife’s feedback under the meal planner question, she doesn’t like that she needs to login to often. Also, there’s a longstanding bug that I believe is a a WebKit bug on iOS that prevents the screen from sleep function working when mealie is running as a PWA. Not your fault, however if it was possible to find a workaround to that maybe, that would be great. Thanks! Mealie has changed our lives, I cannot thank you enough!
|
||||
|
||||
> Thank you for this amazing project.
|
||||
|
||||
> I've tried to import recipes from Podio with the API, but I got many error messages. The API accepted data that caused issues reading the data, so I had to dig into the database to correct the information. Validation on the API should be added.
|
||||
|
||||
> Love the service! Thank you for putting it together!!!
|
||||
|
||||
> Some custom editing options for uploaded images might be nice. I'm honestly just super happy that this app continues to get love and development.
|
||||
|
||||
> While I love Mealie in general (thanks for the awesome project, btw!), I fell that the responsiveness of the interface could still be improved a lot (haven't upgraded to v2 yet, but didn't see anything in this regard). Especially on mobile devices and slower/low-end computers, the interface doesn't feel snappy and I find myself often waiting for it to do things. It might be because I'm using Firefox, which might not be a major development target/platform though.
|
||||
|
||||
> Really great app, my wife and I love it. I self host a few services but after Home Assistant this is probably our second most frequently used service. We also use the Home Assistant integration for Mealie and have announcements of what is planned for dinner. We also use a mixture of Home Assistant native shopping lists for non supermarket stuff (like the hardware store) and Mealie shopping list for food and drugstore stuff.
|
||||
|
||||
> Thanks for this wonderful product. I created an article about this projects and I added some extra functionality to my Home Assistant dashboard for it. https://vdbrink.github.io/homeassistant/homeassistant_dashboard_mealie After I shared my article in multiple social medias I see a lot more people who use it now also. Afterwards there is now also the hacs home assistant module.
|
||||
|
||||
> Thank you for all that you do!
|
||||
|
||||
> GG for v2.0
|
||||
|
||||
> its nice, but we are currently in testing-modus
|
||||
|
||||
> For the user-specific rating, it would be really nice, if I could look up the rating for each person (maybe only as admin?)
|
||||
|
||||
> In the Group admin pages, there is a checkbox for "Private Group". There is also one for "Allow users outside of your group to see your recipes". Both of those are presented without any explanation of what they are, or how they are different. Adding some text explaining what the different options do would be useful.
|
||||
|
||||
> Y'all are awesome keep up the amazing work. I use Mealie as my modern recipe book and love it
|
||||
|
||||
> Overall a GREAT app and am very happy with it.
|
||||
|
||||
> Would love to import raw PDF (no AI) even if it was just viewable and not parsed or searchable just to keep my recipe hoard all in the same place
|
||||
|
||||
> Keep up the great work! I have been using Mealie 5-6 days a week consistently for over a year, it's been a great help, a wonderful tool. I never "disable ingredient amounts", so if you can find a way for import recipe to automatically match up the units and quantities by default, it would save me time and be amazing, because I love cook mode, being able to increase/decrease recipe servings, and ingredient linking.
|
||||
|
||||
> It would be awesome if the API docs got some TLC. There are several endpoints that have no description or are rather confusing on how they work.
|
||||
|
||||
> Thank you for the great work!
|
||||
|
||||
> After importing a new recipe via URL and making a few changes (like assigning categories/tags), it requires me to first save, then re-enter edit mode before I can safely use the ingredient parser. Please consider having the 'parse' button prompt to save changes rather than saying "you're gonna lose everything!"
|
||||
|
||||
> Just a great tool.
|
||||
|
||||
> mealie is fantastic
|
||||
|
||||
> Manual recipe building is needlessly complicated due to two limitations: Mealie doesn't have an option to start with a baseline "blank" recipe state and it doesn't properly pass bulk-added ingredients to the parser, In the first case, this means every time I create a new recipe I first have to delete the first ingredient and first sample step so I can bulk add my own. Guess how many times I forget to do that. In the second case, if ingredients are bulk added then you must first save the unfinished recipe and then go back to editing it to use the parser. This should definitely not be necessary.
|
||||
|
||||
> I have it running on a docker container on a Synology and I'm not sure how to upgrade. I'd love some dumbed down documentation for installing, migrating, and upgrading.
|
||||
|
||||
> I wish the recipe parser would automatically go to edit mode after importing a recipe
|
||||
|
||||
> Great work!
|
||||
|
||||
> I just love the tool. The UI and UX is great (well, some settings are obscurley hidden, but one can learn that) overall, I am really happy. Thank you all a bunch!
|
||||
|
||||
> Currently I am using 2 different instances of Mealie. This is because for my deployment I NEED a way to completely segregate 2 different groups. Users from group A must not be able to see anything in group B. Some users from group B should be able to see recipes in group A. The groups should be auto-assigned through OIDC auth. Currently there is no way to have this functionality, because groups can not be assigned automatically from OIDC and there is no functional way to have a single user as part of both groups. At least this is so AFAICT, I was not able to get this to work. (If you wish to chat about this to me, I am in the discord. user: Gecko)
|
||||
|
||||
> Usability should be the main focus. The system is often used by non-technical people and they get lost quickly. Keep things simple and clear.
|
||||
|
||||
> It would be great to support the installation in a subpath. It looks like Nuxt has support for this in v3 using app.baseURL / NUXT_APP_BASE_URL.
|
||||
|
||||
> We're rather happy with Mealie despite it being not perfect. A quick detour to Tandoor brought us back to Mealie after a single day as it's just not fur us apparently. While Todoist worked for us a long time as a Meal Planner and Shopping List, Meal Planning has moved completely to Mealie. Shopping Lists are not quite there but I'm confident they'll get there eventually. Thank you for listening to user feedback and your continued investment into Mealie, it makes a real difference :)
|
||||
|
||||
> Thank you! You have greatly improved my planning and dealing with meals. I have like 10 recipe books and used to never find anything, but now it is so easy and central. Otherwise my autistic ass loves statistics. If you want to include something like a Spotify wrapped like "You cooked 20kg of noodles this year" that be hilarious
|
||||
|
||||
> Thank you ❤️
|
||||
|
||||
> Better integration with Home Assistant
|
||||
|
||||
> It's never really been clear to me the purpose of a 'group'. Perhaps this can be better explained in the UI when you would use it. Especially now there's another grouping of users in households. One other thing is that the PWA on Android seems to be much slower and less responsive than on IOS. Otherwise, love mealie and it's up there with my most used self hosted apps
|
||||
|
||||
> I really enjoy using mealie as a recipe database and mealplanner. I integrated it in HassIO so that I get a message every morning with whats for lunch and dinner and a notification when I need to start preparing lunch so that it's ready at noon.
|
||||
|
||||
> Please make a Android app like Mealient but with full mealie options
|
||||
|
||||
> Thanks for a great product - it brought harmony to our household 💖
|
||||
|
||||
> I really appreciate the work. This has made cooking for holidays (especially) so much easier. I look forward to seeing what is happening in groups in v2.0.0. I wanted to share with my family outside of my house, but didn't want them to see meal planning or shopping lists.
|
||||
|
||||
> Generally, this tool is great -- and I very much belief that it actually does reduce the amount of food-waste with us planning better what to eat. Very definitely, it saves us time doing shopping: )
|
||||
|
||||
> keep up the great work! :-) i love mealie and it is an integral part of our household :-)
|
||||
|
||||
> Thank you for providing this software!
|
||||
|
||||
> Thanks for the awesome app! Some thoughts: - A nice feature to have would be a native app widget so I could show a recipe on my kitchen tablet's home screen. - Another one would be an option to increase the font size of recipes, again for use on tablet. Thanks again!
|
||||
|
||||
> I do not like how Cookbooks are managed. I shouldn't have to set a tag for a recipe to be in a cookbook, there should be a different way to assign a recipe to one or more cookbooks. Cookbooks should be organized and displayed as though you picked up a physical cookbook and were about to go through all the categories - as displayed on your screen. Cookbooks should also display the total number of recipes as well as the total recipes per category. Please consider extending the functionality of cookbooks, how the user interacts with them, and how recipes are assigned to cookbooks. Thank you for the consideration.
|
||||
|
||||
> Keep on the good work
|
||||
|
||||
> Love it. Only thing I wish it did or did better if it is available, is when I import a recipe it creates a separate list of just the ingredients outside of the standard one that includes how much. It's hard to quickly view what I need when grocery shopping.
|
||||
|
||||
> I enjoy using Mealie and appreciate all the contributors
|
||||
|
||||
> Keep on trucking Brothers
|
||||
|
||||
[Back to the overview](overview.md)
|
||||
319
docs/docs/news/surveys/2024-october/q9.md
Normal file
@@ -0,0 +1,319 @@
|
||||
[Back to the overview](overview.md)
|
||||
|
||||
# Question 9: Any suggestions for how to improve Shopping Lists?
|
||||
|
||||
> Take a look at OurGroceries, it is awesome. but i guess it works a bit differently, but its very quick to add
|
||||
|
||||
> Functionally it feels good in 1.x just some visual improvements would be nice. havent tried it out in 2.x yet
|
||||
|
||||
> I am on 1.12.0, running in a browser (no PWA since I don't have HTTPS set up for my homelab). On mobile, shopping lists feel like thet take up a lot of space for each item, with the item name and amount, description, buttons for editing, showing the recipe the ingredient belongs to, and drag symbol. When on mobile in the store doing the shopping I really only need a checkbox, amount, and ingredient name. Maybe simplify the list and add a button for an "advanced" or "edit" mode?
|
||||
|
||||
> Toggle showing or hiding notes imported from recipes.
|
||||
|
||||
> Sort the ingredients and add up the quantity
|
||||
|
||||
> Using AI to just describe the ingredients using natural language or upload a picture of the ingredients and then add them automatically to the shopping list
|
||||
|
||||
> Per-store ordering of aisles (so the list is in order of where I plan to route throughout the store)
|
||||
|
||||
> For me there's not much room for improvement, as I'm exporting the Shopping List into Home Assistants Shopping List. It does make sense for me, as Home Assistant offers me a local and privacy first voice assistant, that can add things to the Home Assistant Shopping List. Implementing such a feature would in my opinion not fit to Mealie. So I'd say, if you can improve the sync functionality for the shopping list in Mealie, it would be better than to try to "improve" to another voice assistant, this time for shopping lists andd recepies. Concentrate on what Mealie does really, really good: serving as a support app for all your food needs. But not for all the shopping needs.
|
||||
|
||||
> - add a pole to write down a shop name with option to group products by that name - automatically categorize product by their kind ex. cheese, brewery, etc., with option to group them together
|
||||
|
||||
> Make it look or feel more like Microsoft todo
|
||||
|
||||
> Ability to add shopping list items in a conveniant way via Alexa, Siri or other speech. Although it is somehow possible with tags, I like shopping list, where I can order categories in the same order they are in a shop (e.g. vegetables, meat, drinks, spices, etc) so I have my list in the order of the shop and i can easiely work from top to bottom of my list while shopping
|
||||
|
||||
> Maybe have some kind of household inventory in addition?
|
||||
|
||||
> I don't use the Mealie shopping list as the stores I buy at have their own digital shopping lists in their apps.
|
||||
|
||||
> Ingredient sterilization to make cleaner shopping lists
|
||||
|
||||
> To me fetching recepies via url and importing them is the reason to use mealie.
|
||||
|
||||
> I would like to see an option to set a custom label ordering per shopping list. Usecase: You have different supermarkets and for each a seperate shopping list. For the ordering of food could differ from store to store. Having the ability to re-order tags for a specific shopping list (market) would make handling this situation very convenient. A default order could be applied when creating new shopping lists
|
||||
|
||||
> Unfortunately I've yet to use it. But I really like the idea of having it available to me once I use mealie fully.
|
||||
|
||||
> I don't really use this feature (despite wanting to) as it is more convenient to share/sync a list with my partner on Google Keep
|
||||
|
||||
> I cant access my Mealie outside my lcoal network as its not exposed, so It would be cool to have some sharing function so I can send the list to my phone, to someone who is at the store or to some other app, perhaps some notes or Google Keeps app (It would be even better if could be synced with some of these apps). This is something that was on my mind but I recently saw that the copy function was added which is great!! I would recommend putting all the action buttons on top of the list so I dont have to scroll to the bottom in order to perform the actions as an UX thing. I would also look forward to have it integrated with HAOS as most mealie users are self-hosted users who try to run everything locally and integrate it as much as possible, perhaps have a card for it with a sync button and the possibilty to add items through some assistant or at least to read it out loud when requested.
|
||||
|
||||
> Unify measurements so there is no double ups of ingredients
|
||||
|
||||
> add nutritional data, very important
|
||||
|
||||
> I guess this would be more of a "units as a whole" thing, but I'd love to see a "Unit Conversion" thing as a whole. For example, in the shopping list, if Recipe A uses 500g Beef Mince, and another recipe uses 1kg of Beef Mince, the two would usually separate in to two Shopping List entries. It would be cool to see units combine where possible, like in the example above, the list would show either 1500g or 1.5kg Beef Mince
|
||||
|
||||
> connections to 3rd party app / grocy
|
||||
|
||||
> I'm still in the process of learning how best to use it, so not in a position to advise.
|
||||
|
||||
> Little icons for each item Favorites List of regularly shopped items clearer iconography while entering a new item
|
||||
|
||||
> 1. mass delete for Tags, i have over 300 tags and don't want to delete them all manually 2. look at this webpage (https://www.traeger.com/recipes/bbq-chicken-wings-3-wings) on the left hand side they have ingredient headings (with a different font size so it stands out) like Chicken Wing, Franks RedHot Sauce, etc. that way the ingredient list can be separated into groups. i currently add blank ingredient spaces to try and do this. 3. be able to click and drag recipe cards to cookbooks 4. be able to mass assign tags to recipe cards. for example if i had a BBQ tag and wanted to assign it to 10 recipe cards, it would be nice to do that instead of opening up each card and making the change
|
||||
|
||||
> Some lists are hidden by default, which is confusing I sync my lists with home assistant which is fantastic!
|
||||
|
||||
> I do my grocery shopping online, and my shop (Sainsbury's) has the option to paste my shopping list and do a search for each line. I would like an option to customise what the generated text from mealie looks like
|
||||
|
||||
> Ai to learn your preferred labels and then auto suggest a label for new ingredients.
|
||||
|
||||
> At the moment, I am not using it that much.
|
||||
|
||||
> Allow ingredients to be added to the shopping list directly from the recipe. This would save time for ad-hoc menus when you don't want to use the meal planner.
|
||||
|
||||
> Option to auto convert free text items to categorised via natural language parser Timeline/stats for previously bought items Prices especially if integrated with a supermarket price tracker Export for online shopping
|
||||
|
||||
> Create Pantry Section but this idea got no go-forward
|
||||
|
||||
> Continue to sort by labels but be able to hide them. Easier reordering on mobile.
|
||||
|
||||
> We'd like to be able to select the number of people a recipe is for when you add it to the list. Currently, most of our recipes are for 2 people so if we have guests we have to add the meal to the plan twice in order to get the correct amount of ingredients. Also, when you tick an item as done and it's attached to a recipe, that recipe information is lost if you untick it. This isn't great if you tick anything by accident, or need to check a ticked ingredient against a recipe.
|
||||
|
||||
> Combine like ingredients from two different recipes. Meaning if two recipes call for garlic there is just one shopping list item for garlic.
|
||||
|
||||
> I think the ingredients need to be added “correctly” from URL import instead of just a large string.
|
||||
|
||||
> I did really like the auto shopping list based on meal plan, but I understand the logic about selecting specific meals and ingredients from those recipes. Perhaps if you could press one button and refine a list from all the recipes in the current meal plan, that would be best of both. Also, the ability to re-order or sort shopping lists. Thank you.
|
||||
|
||||
> When adding recipes to the Shopping List, it will take about a minute to actually load the ingredients into the Shopping List section. However, the linked recipe will be visible at the bottom of the Shopping List page right away
|
||||
|
||||
> Export/Integraion to Home Assistant ToDoS (I use the as shopping list and don't have access to mealie from extern)
|
||||
|
||||
> The biggest think that I need is to be able to sync the shopping list between my account and my wife's account one thing that I love that is included in samsung food app is that it allows me to use the share button on a website to send the recipe to the app. I wish mealie had this same functionality
|
||||
|
||||
> It seems (I'm still a newbie) Shopping Lists aren't immediately shared, contrary to recipes, in a group. If that's correct, it's counterintuitive.
|
||||
|
||||
> 1. Please add more entry type/food type on planner. In Poland the main dish is at 1-4 P.M. It's called obiad but it's related to lunch. But because it's main meal, we usually have 2 dishes: soup (zupa) and the second dish (drugie danie). It would be great to have separate entry type for soups and the second dished. So in generally, please allow to define own entry types in planner (like in Tandoor Recipes). 2. In ingredients list please add better support for non-english languages with more complicated grammar like Polish. We say: * 1 szklanka cukru / 1 cup of sugar * 2 szklanki cukru / 2 cups of sugar * 3 szklanki cukru / 3 cups of sugar * 4 szklanki cukru / 4 cups of sugar * 5 szklanek cukru / 5 cups of sugar * 6 szklanek cukru / 6 cups of sugar etc. * 1/2 szklanki cukru / 1/2 cup of sugar Antoher example: * 1 marchewka / 1 carrot * 2 marchewki / 2 carrots * 3 marchewki / 3 carrots * 4 marchewki / 4 carrots * 5 marchewek / 5 carrots * 6 marchewek / 6 carrots etc * 1/2 marchewki / 1/2 carrot So we have: * form for 1 * form for 2,3, 4 and fractions like 1/2 * form for 5 and more
|
||||
|
||||
> I just submitted a survey, but forgot to mention this: dragging and dropping items to organize them within shopping lists is *extremely* clunky, especially if you use a trackpad or touchscreen. I often have to click on the box for moving the item at least 3 times before it actually lets me move it to where I want to. Then, it’s hard to get it to the right place if the list is long, because the screen doesn’t scroll in the way you’d want (it scrolls at a static rate but doesn’t stop scrolling once it’s started unless the item is dropped, causing the entire process to repeat).
|
||||
|
||||
> I would love the ability to set a default order for how items with labels are ordered automatically when added. I organize my shopping lists by type (e.g., “Dinner List”) to make it easier when exporting items to the lists. But this means shopping for items can be tough, since I have to switch between lists. Being able to set it so that the “Vegetables” label automatically comes right before the “Grains” label would be amazing. I would also love a way to create or see a “parent” list that simply contains all of the unchecked items from all lists (as a stretch goal, it would be nice to be able to exclude lists) using the above ordering. Then I would no longer have to switch between lists.
|
||||
|
||||
> I would like to disable all this not realy usefull stuff via env.
|
||||
|
||||
> Mealie has done a great job. If you have to ask questions, I hope to support the<video>tag in the recipe steps instead of iframes, which will cause the video to play automatically.
|
||||
|
||||
> I think live sync'ing the checkboxes on a shopping list would be cool, we often grocery shop together, and with Mealie, it's challenging for us to "share" a shopping list/both use it at the same time (having to constantly refresh the page, checkboxes not syncing, etc.). I haven't updated to v2+ yet, so maybe this is different/improved with Households!
|
||||
|
||||
> Big Stretch... it would be awesome if there was a plugin architecture to support purchasing groceries from stores that have API's available i.e. Kroger in the US has a fully documented API to support the writing of a Kroger Shopping plugin to let you take everything that you need to shop for and one click "add it to my cart at Kroger" or even "buy these things and schedule them for delivery or pickup"
|
||||
|
||||
> Integration of "Bring" would be great. Bring is a german shopping list app: https://www.getbring.com/
|
||||
|
||||
> Introduce a "Pantry List" to keep track of spices, rice, flour and other non-perishables. Then add the option to subtract used amounts from Pantry List instead of having to cross them out from Shopping Lists generated from Meal Plans. Pantry List could also serve as foundation for a "Suggest a recipe" feature in meal planning, to suggest recipes based on items already contained on the Pantry List - e.g. Pantry: 3x cans of chopped tomatoes 500 g pasta Suggested recipes: Spaghetti Bolognese ...
|
||||
|
||||
> Maybe space it out a little more on Mobile. I sometimes tap the wrong ingredients as they are close together.
|
||||
|
||||
> Have the shopping be more instantly syncing. If I check off an item in the list. The app should reflect that a little quicker on my SOs phone. A second thing related to shopping is some way to keep track of expiring items like milk. Maybe have a place to enter the date of expiration in so when shopping you can easily see if you need to buy a new one. Also a small note about the new update 2.0. I don't really like the units in the shopping list now. I ignore them/remove them when adding to the shopping list from a recipe.
|
||||
|
||||
> android app
|
||||
|
||||
> It would be ideal if shopping lists would be accessible offline, i.e. without a connection to the Mealie server. Closing the PWA somtimes causes it to "un-load" the page and you aren't able to open it again offline. I understand that this is probably difficult to realize with just the PWA, so just keep up the great work you're doing with Mealie!
|
||||
|
||||
> Sorry, I haven't tested it in a few months. I tried early implementations, and ended up switching to AnyList. I will revisit and provide feedback in discord. Off the top of my head, the reason why I switched to anylist was: - A way to add to the list with voice assistant - Grouping of ingredients into shopping aisle sections.
|
||||
|
||||
> I have not been able to sort the items on the list. Firefox, android. When I move them, they move back after a couple of seconds.
|
||||
|
||||
> The ability to mark certain items that are not linked to a recipe in such a way that they can easily be added again later with a single click. For pantry staples that you buy every couple of weeks e.g flour, milk, cereals it would be nice to not have to type them again every time.
|
||||
|
||||
> Save ingredient labels when they are edited
|
||||
|
||||
> As I'm still on v0.5.6 I haven't tried out new features so I'm not sure where this is at. The best case scenario would be to use a meal plan to select recipes, then build and aggregate the shopping list based on all ingredients. Structured ingredients is required for this so the shopping list includes units of each ingredient.
|
||||
|
||||
> They are great! We have two lists: "This Week" and "Next Week". It works really well in PWA when in the grocery store.
|
||||
|
||||
> Automatically split ingredients into sections; produce, canned, frozen etc. (if this already exists it not well documented)
|
||||
|
||||
> An ability to add the shopping list items to another app (Apple Reminders, etc) would be nice
|
||||
|
||||
> Make an integration with Grocy so Mealie can see what you have/do not have and plan accordingly.
|
||||
|
||||
> Allow labels to have a custom order (so that I can order them in the order I shop in the supermarket)
|
||||
|
||||
> Unifying ingredients automatically and then apply nutrition calculation derrived from a standartised database.
|
||||
|
||||
> render list as text for copying from browsers which prevent clipboard interaction when serving over http option to copy as text without quantities
|
||||
|
||||
> I have no need for online shopping lists. I prefer it on paper as I use my phone to scan and pay goods in the supermarket.
|
||||
|
||||
> My version is a bit old, so maybe it has improved already, but an easy way to clear the list without having to delete and recreate a new list. Also, when adding items to the list, if there's only one list, just use it rather than having to select it.
|
||||
|
||||
> I've honestly not used it at all because I don't need to. Because of that I cannot make a suggestion. Sorry.
|
||||
|
||||
> Yes, it should be as close to Meal Lime as possible (the app). When you create a meal plan all recipes automatically by defualt add their ingredients to the shopping list. If you delete a recipe, it removes its ingredients from the list automatically. I suppose ideally this would be a toggle "Automatically sync shopping list with Meal Plan" or something...
|
||||
|
||||
> allow a way to disable it hiding the option - we don't use it.
|
||||
|
||||
> It's not as full features as grocy, which I use as my shopping app.
|
||||
|
||||
> Source recipes are currently tracked on shopping lists before items are checked (marked complete). I often would like to know which recipe my completed shopping list items belonged to. Keeping the source recipe list in a separate list of completed recipes on the shopping list would be handy.
|
||||
|
||||
> Quicker to add food instead of just notes
|
||||
|
||||
> I currently use grocy for shopping lists because I can categorise all products so when I'm shopping it's easy to go aisle by aisle. There's also an app as well and using mobile browser is annoying. It would be handy to have shopping list in the same app as my recipes, but unless you could match the functionality of grocy then I won't be using it in Mealie.
|
||||
|
||||
> Sync to Bring
|
||||
|
||||
> The ability to manually re-order the shopping lists.
|
||||
|
||||
> An integration with CalDAV so that the shopping list can sync with Apple Reminders.
|
||||
|
||||
> It's UI/UX, cannot provide details in text field
|
||||
|
||||
> Export as string so that you can paste into into a chat
|
||||
|
||||
> By merging similar items, I think this happens in some cases (perhaps if something is close and the app is not sure it could check?), maybe suggestions for items you use regularly. Group items by type (e.g. veggies, baking, tinned goods). Group items by when you need them (e.g. do I need this today or next week).
|
||||
|
||||
> Better grouping of ingredients added from recipes
|
||||
|
||||
> Have the option to combine/not combine items. if I have lets say two receipes each needing 1KG of chicken wings, having the option to show it as 2KG, or 1KG shown twice but grouped perhaps with recipe next to it so when shopping the chicken wings which are all in one spot, can be purchased at once rather than jumping around
|
||||
|
||||
> Grouping items by type of ingredient. I.E. Vegetables. Makes them easier to gather when in the shop.
|
||||
|
||||
> I'd like to be able to export/ merge the lists to other apps, such as Google Keep, so I can use the Mealie feature alongside Google Assistant.
|
||||
|
||||
> Integration of third party apps like bring. i think the shopping list is a really good feature, but there is almost always more to buy than groceries. so to us there happened two things (1) we wrote a written shopping list (default) (2) switched to bring app reason for bring: we use mealie hosted locally not accessable from the internet. beside avaiable vpn the mealie shopping list is to unconvient to reach
|
||||
|
||||
> The ability to parse and merge ingredients from recipes. So say if I add two recipes to a list that both need garlic. One says two cloves and the other says 4 cloves. I don't want two separate entries in the list. Personally I don't really want the amounts in there.
|
||||
|
||||
> None come to mind. Very handy as-implemented.
|
||||
|
||||
> integration with flipp for best prices.
|
||||
|
||||
> It would be cool to sync them with external services, like bring. I only Idee mealie for food related shopping but not for stuff like cleaning supplies. Using two apps while shopping is a bit cumbersome.
|
||||
|
||||
> Make it so you can organize the list by store section (in addition to category).
|
||||
|
||||
> Add price of ingredient, brand, store bought at
|
||||
|
||||
> My main use is there is no good cross platform way to shop with my girlfriend while being able to split up. Mealie fixes this, we make a list and split up knowing checked items will update instantly, no reloading the page. I wish common foods were already included in the system Maybe keep an ingredient history so when I add lemons I can see "5 lemons were added in the last week".
|
||||
|
||||
> When adding multiple recipes for the week, if they use the same ingredient, it would be nice if they combined.
|
||||
|
||||
> sectioned by ingredient type (dairy, fruit, veg, etc) - maybe this happened in v2?
|
||||
|
||||
> Sorting by ingredient name. There's recipes that require 1 carrot, another that requires 1 cup of carrots, it would be a lot easier to see what needs to be bought if all ingredients are grouped. Sure, for recipes we should have the same measuring unit, but it's not always easy when managing hundreds of recipes.
|
||||
|
||||
> Integration with Google Home for adding to list
|
||||
|
||||
> Better initial parsing of ingredients into discrete amounts/items (my partner never cleans up their recipes after importing, so they cannot take advantage of shopping list, scaling, etc.) Permission support to mark a list as shared between users or private. That way different users can add to the same shopping list if/when desired, but if cooking something as a surprise (birthday, etc.) they can add ingredients into a private list. To be clear, the biggest thing that can be done to improve shopping list is actually not to do with the lists themselves but with the ingredient parsing. If that can happen automatically and more reliably, both scaling and shopping lists benefit. Anything else is just an enhancement.
|
||||
|
||||
> I don't really use it and would not find it usefull unless it would link to the android shopping list app I use (called Shopping List)
|
||||
|
||||
> If there was an integration with Walmart+ I’d use it forever
|
||||
|
||||
> Reordering of the items is not possible
|
||||
|
||||
> At one point we accidentally removed all entries from our shopping list just by clicking on the trash icon. A confirmation dialog here would be very helpful, to avoid this.
|
||||
|
||||
> Not really sure why but after some days the sessions logout in the phone using PWA although the checkbox remember me is marked when logging in
|
||||
|
||||
> Make it work similar to the app AnyList (https://apps.apple.com/us/app/anylist-grocery-shopping-list/id522167641) or better for spouse/family approval factor. :) Thanks for the good work
|
||||
|
||||
> Add a way to right click on a recipe ingredient and add to a shopping list.
|
||||
|
||||
> it would be nice if it could be deactivated if you don't use it (in the settings)
|
||||
|
||||
> The offline mode is not really working pre v2. I have not checked v2 yet though. To be honest, I never saw a good offline pwa yet. They always break apart after some time. I can imagine that an iOS / Android app will yield better results. In addition, we also use the apple watch app from our current shopping list app, that would also require an iOS app for mealie I think.
|
||||
|
||||
> First thing would be the possibility to export it to google keep or some notes app, because my instance is not exposed to the internet, so when Im actually going to the store, I cant access the list. Therefore it would be nice to have some sync function to have it synced to some external notes app or to at least have a share button so I can send the list to my wife when she is at the store. Its not even possible to select the text and copypaste it. No other change I can think of right now
|
||||
|
||||
> Adding recipes from the meal planner does always reliably add all the recipes as linked. Otherwise it'd be cool to have an option for the meal planner to automatically add 2 portions of all recipes
|
||||
|
||||
> If there was an app or easy way to integrate into iOS notes/reminders, that would work really well for me.
|
||||
|
||||
> Offer prompts to combine ingredients that are the same or are similar - like how contacts lists say "want to merge Sam Rockwell and Samuel Rockwell?" Prompt with "Want to add 1 onion with 1/2 cup onion, diced?" Then the result would be "1 onion and 1/2 cup onion, diced" in one line.
|
||||
|
||||
> Make it easier to quickly type multiple entries (using enter to save, have a more natural order of entry fields). In that context also, include abbreviations of units as search hint.
|
||||
|
||||
> Make shopping lists easier to navigate to on mobile PWA, such as allow the shopping list to be opened when the PWA is first launched, so that it opens automatically when I open mealie at the supermarket. Allow the user to move items from one shopping list to another. It looks like there is a "Transfer" function, but it does not work for me. Simplify the UI for adding items, or explain the concept of notes vs. foods better.
|
||||
|
||||
> Make a print dialog, which removes everything from the page except the pure shopping list.
|
||||
|
||||
> A fast way to open your default list
|
||||
|
||||
> When I add an ingredient that is a duplicate of an ingredient that has already been checked off, I want to remove it from the checked off list. Right now, duplicates are only removed if both entries are in the unchecked shopping list.
|
||||
|
||||
> merge same ingredient, different unit items into one line
|
||||
|
||||
> Try to connect similar ingredients
|
||||
|
||||
> I'm currently on it to obtain the shopping list via N8N in order to transfer it into Microsoft To Do App. Because the ToDo App is our central app to maintain all! shopping activities. Using Shopping List in Mealie would require to start swapping between two Apps/Lists. So, what to improve? Integration/Ingestion (automated) of Shopping Lists into other Services, e.g. Microsoft ToDo. 😉
|
||||
|
||||
> Recently I have been getting a "browser does not support copying to the clipboard" error. It seems to happen from all my browsers thought the main one I use is Falkon.
|
||||
|
||||
> It would be nice if it removed linked recipes once they passed from the meal plan. I love the copy button as text button which I use constantly.
|
||||
|
||||
> This is my favorite feature. I imagine it would be very difficult to pull off in the code. But would be amazing if it could detect small changes in how ingredients are listed and pulled from recipe imports and consolidate them into the same phrase. (ie.. "1 small egg and 1 egg") so that it could combine the same ingredients for multiple recipes into one line (2 eggs) into the shopping list. It would be less manual editing to create the list. But possibly an easier suggestion to implement would be to automatically uncheck general use spices. I imagine we usually already have those so there is no need to manually uncheck from shopping list on adding a recipe.
|
||||
|
||||
> When I make lists by hand I will often put the items in the order I go through the store, eg produce first. It would be nice if I could define a category sort order that would apply to all shopping lists by default.
|
||||
|
||||
> If no list exists then create one automatically when I add ingredients from a meal plan I just put together. It is really not a big deal at all, but will save me a click or two.
|
||||
|
||||
> Bull add feature similar to recipe ingredients
|
||||
|
||||
> I'm always irritated when I click on a list item (with the intention of editing it) and it is directly marked as done. Then I rediscover the edit button on the right again. For me personally the checkbox is the call to action button for the user journey of checking off an item. I would also like to click and hold to drag an item instead of needing to grab the handle on the right.
|
||||
|
||||
> dont use it till know, but maybe for the x-mas seasion for the backing
|
||||
|
||||
> I want to easily export into my ios reminders app
|
||||
|
||||
> I would like to be able to click on ingredients in a recipe, and say "Add to Shopping List" Right now, I believe it adds all of the ingredients, regardless of what's selected.
|
||||
|
||||
> Some persistence that tracks checked off boxes across sessions if that is not a thing
|
||||
|
||||
> Auto complete for checked off items to re-add without searching for it. Manual sorting of lists
|
||||
|
||||
> Native Apps Offline usage for Apps Automatic Sorting into Categories
|
||||
|
||||
> I don't use them enough right now. When adding items to a list, removing things in brackets , e.g., tbs garlic (cut) would be nice. WOuld be just tbs garlic. Or something nicer like that. And merging items in the list would be great too!
|
||||
|
||||
> all good
|
||||
|
||||
> Implement bring implementation (without mealie being exposed to the internet, see https://github.com/felixschndr/mealie-bring-api)
|
||||
|
||||
> A recently checked option that displays any items checked in the last 30 minutes or so. Would be very useful in store to help reduce fat fingering. The current checked item list can be used that way but it isn't as timely so not always the best.
|
||||
|
||||
> We use a google keep list for our shopping list because we can add items with our voice via google home. So either integrate it into keep or add it as a feature that google home can add directly to.
|
||||
|
||||
> Make it easier to organize list order. We try to order it by aisles and in the phone it can be difficult to reorder them
|
||||
|
||||
> Have them (or anything, really) be accessible across households, if desired. I.e., my SO and I live in different cities, thus use different households for the majority of the time. However, when we stay at the others place (which then usually is for minimum a week at a time), it would be useful to be able to share things like meal planner, shopping lists etc for that time, without some workaroung (like an additional user or moving my or their user to the other household for the time).
|
||||
|
||||
> Not sure how to do them right, but the experience is very off for some reason (or rather the sum of many). We're still doing our weekly shopping planning in Todoist that holds 3 broad categories (2 different shops and one for meat). - Adding recipes to a list is not something we'd do. We usually have half the ingredients (or more) at hand already and just need a couple. - Jumping between lists is clumsy. When we add items to the list, we jump between out "categories" (which are held in different lists. It's hard to think of anything that is bought at shop A while remembering the items that come from Shop B. Having a back button in the UI doesn't work well for this workflow, a list of tabs in the top to jump between lists easily would be much better for this. - The shopping list is very unforgiving to mistakes. Deleted an item? To bad, it's gone. Any change to a list or an item needs to be reversible.
|
||||
|
||||
> Maybe an integration with Bring or similar shopping list apps. I also buy things outside of recipes, that way I could combine them
|
||||
|
||||
> Shopping Lists are not important to me. I use Mealie purely as recipe storage.
|
||||
|
||||
> Better integration with Home Assistant
|
||||
|
||||
> Ability to have a default ordering of categories for new lists
|
||||
|
||||
> All of my recipes don't have ingredients parsed, so the shopping list is quite complicated to use. I write my shopping list manually in the nextcloud tasks app and use it with tasks.org on android. Also I recently started to use grocy to track my inventory, so I'm planning to write some script to combine the shopping lists and save it to the caldav server. Something with a simple drag'n'drop webinterface. I still like mealie for recipes way better than grocy :-)
|
||||
|
||||
> No, its great i think
|
||||
|
||||
> Make it quicket / faster to input ingredients overall - possible 'quick add', or add from home. Remember the default layouts and sorting of the list - label sort. Easy way to update labels on food from the shopping list - or link to unlabelled food
|
||||
|
||||
> - adding nutritional tracker
|
||||
|
||||
> Add Nice icons to catégories/foods Make it raster or an apk
|
||||
|
||||
> Feature: Copy paste ingredients for to do app
|
||||
|
||||
> Make them toggable. Not everyone uses them, and it's a UI element which could be removed if the user does not use it.
|
||||
|
||||
> Sync it with Bring/Alexa would be very cool (I dont use shopping lists because I prefer Bring)
|
||||
|
||||
> Yes, it would be great if it could combine the totals for all food items for all of the recipes added it to the shopping list. For example, if I add 2 recipes and the first needs 1 cup flour and the other needs 1/2 cup flour, it would be nice to have a single line of 1.5 cups flour. This would be especially helpful for planning Holiday meals. The second suggestion is less helpful, but being able to categorize the shopping list and then group the food items would also be nice (produce, dairy, meat, soups, etc.) to make it more efficient while shopping.
|
||||
|
||||
> Make it more like buymeapie it is easier to use, esp. when modifying the list on my phone while shopping.
|
||||
|
||||
> I only use it once a year at Thanksgiving when I'm making a lot of food. It seems fine.
|
||||
|
||||
> Integration with other shopping list providers like Bring! (https://www.getbring.com/en/home) or others.
|
||||
|
||||
[Back to the overview](overview.md) or [On to Question 10](q10.md)
|
||||