Private
Public Access
1
0

moved to server

Update readme.md

Signed-off-by: rasmus <rsbendtsen@gmail.com>

Update readme.md

Update Dockerfile

Update Dockerfile
This commit is contained in:
2025-12-29 06:19:31 +01:00
commit dd2c15ba67
15 changed files with 1022 additions and 0 deletions

58
readme.md Normal file
View File

@@ -0,0 +1,58 @@
# [madplaner.rasmusbendtsen.dk](https://madplaner.rasmusbendtsen.dk)
## Introkduktion
Min kæreste og jeg var trætte af altid at spise spagetti kødsovs eller boller i karry.
Vi forsøgte os med forskellige måltidskasserne, men sad hurtigt tilbage med en følelse af, at det aldrig rigtig var pengene værd. Især fordi vi primært anvendte som at måde at slippe for, altid at skulle tænke over "hvad skal spise de næste par og hvilke vare skal vi købe". Selve det at handle ind og madlavningen, er ikke et problem. Det handlede mest om planlægningen. Hvis det er eneste formål, så er måltidskasser en dyr løsning.
Jeg anvendte ChatGPT til hurtigt at generer en indkøbsliste til fire retter. Det fungeret overraskende godt. Min kæreste sagde så, "Skal jeg så printe det ud, inden jeg går ud og handler"
![Michael Jordan meme](https://media1.tenor.com/m/B3_AR5dup94AAAAd/michael-jordan.gif)
Derfor lavet jeg denne løsning i stedet.
Den fungere ved at brugeren udfylder nogle inputfelter, som flettes ind i systempromten til en LLM. Svaret fra sprogmodellen sættes så pænt og let tilgængeligt op.
## Start din egen instans
```bash
mkdir madplaner; \
cd madplaner; \
mkdir instance; \
wget https://git.rasmusbendtsen.dk/rasmus/madplaner/raw/branch/main/compose.yml; \
#Opret .env fil eller rediger direkte i compose fil og derefter
docker compose up -d
```
Docker compose
```yaml
services:
web:
image: git.rasmusbendtsen.dk/rasmus/madplaner:latest
container_name: madplaner
restart: always
ports:
- "${HOST_PORT:-80}:5000"
volumes:
# sqlite DB lives here
- ./instance:/app/instance
environment:
- FLASK_ENV=production
- OPENROUTER_API_KEY=${OPENROUTER_API_KEY}
- OPENROUTER_MODEL= ${OPENROUTER_MODEL}
- SECRET_KEY=${SECRET_KEY}
# Anvendes hvis der skal vises link til klidekode på forsiden
- SOURCECODE_LINK=${SOURCECODE_LINK}
```
## Backend
Backenden er lavet med Flask og SQlite. Sprogmodellen kaldes gennem Open-Router. Der bør tilføjes server side validering af inputfelterne for at forhindre prompt injection.
Servicen kører fra en ældre kontor pc i min lejlighed i Valby. Den er gjort tilgængelig gennem en omvendt proxy på den billigeste VPS jeg kunne finde, ved brug af [Pangolin](https://github.com/fosrl/pangolin)
## Frontend
Frontenden er lavet med tailwindcss. Jeg har forsøgt at begrænse anvendelsen af javascript. Layout og UI er 100% vibecoded.
## Tilpasning
Ved at redigere i dashboard.html og system_prompt.txt. Kan løsningen justeres til andre formål. Eksempelvis
- Lav en træningsplan til mig
- Anbefal nogle film og tv-serier
- Hvilken X vil være bedst at købe, udfra mine behov