# Luncher Aplikace pro profesionální management obědů. Aplikace sestává ze tří modulů. - types - společné TypeScript definice, pro objekty posílané mezi serverem a klientem - server - backend psaný v [node.js](https://nodejs.dev) - client - frontend psaný v [React.js](https://react.dev) ## Spuštění pro vývoj ### Závislosti #### Klient/server - [Node.js 18.x](https://nodejs.dev) - [Yarn 1.22.x (Classic)](https://classic.yarnpkg.com) ### Spuštění na *nix platformách - Nainstalovat závislosti viz předchozí bod - Zkopírovat `server/.env.template` do `server/.env.development` a upravit dle potřeby - Spustit `./run_dev.sh`. Na jiných platformách se lze inspirovat jeho obsahem, postup by měl být víceméně stejný. ## Sestavení a spuštění produkční verze v Docker ### Závislosti - [Docker](https://www.docker.com) - [Docker Compose](https://docs.docker.com/compose) ### Spuštení s traefik - `docker compose -f compose-traefik.yml up --build -d` ## TODO - [x] Umožnit smazání aktuální volby "popelnicí", místo nutnosti vybrat prázdnou položku v selectu - [x] Přívětivější možnost odhlašování - [x] Vyřešit responzivní design pro použití na mobilu - [x] Vyndat URL na Food API do .env - [x] Neselhat při nedostupnosti nebo chybě z Food API - [x] Dokončit docker-compose pro kompletní funkčnost - [x] Implementovat Pizza day - [x] Umožnit uzamčení objednávek zakladatelem - [x] Možnost uložení čísla účtu - [x] Automatické generování a zobrazení QR kódů - [x] https://qr-platba.cz/pro-vyvojare/restful-api/ - [x] Zobrazovat celkovou cenu objednávky pod tabulkou objednávek - [ ] Zobrazit upozornění před smazáním/zamknutím/odemknutím pizza day - [x] Umožnit přidat k objednávce poznámku (např. "bez oliv") - [x] Negenerovat QR kód pro objednávajícího - [ ] Pizzy se samy budou při naklikání přidávat do košíku - [ ] Nutno nejprve vyřešit předávání PHPSESSIONID cookie na pizzachefie.cz pomocí fetch() - [ ] Ceny krabic za pizzu jsou napevno v kódu - problém, pokud se někdy změní - [ ] Předvyplnění poslední vybrané hodnoty občas nefunguje, viz komentář - [ ] Nasazení nové verze v Docker smaže veškerá data (protože data.json není venku) - [x] Vylepšit dokumentaci projektu - [x] Popsat závislosti, co je nutné provést před vývojem a postup spuštění pro vývoj - [x] Popsat dostupné env - [x] Přesunout autentizaci na server (JWT?) - [x] Zavést .env.template a přidat .env do .gitignore - [x] Zkrášlit dialog pro vyplnění čísla účtu, vypadá mizerně - [ ] Podpora pro notifikace v externích systémech (Gotify, Discord, MS Teams) - [ ] Umožnit zadat URL/tokeny uživatelem - [ ] Umožnit uživatelsky konfigurovat typy notifikací, které se budou odesílat - [ ] Skripty pro snadné spuštění vývoje na Windows (ekvivalent ./run_dev.sh) - [ ] Možnost náhledu na jiné dny v týdnu (např. pomocí šipek) - [ ] Možnost zadat si oběd dopředu na následující dny v týdnu - [x] Zbavit se Food API, potřebnou funkcionalitu zahrnout do serveru - [x] Vyřešit API mezi serverem a klientem, aby nebyl v obou projektech duplicitní kód (viz types.ts a Types.tsx) - [ ] Mazat z databáze předchozí dny, aktuálně je to k ničemu - [ ] Vylepšit parsery restaurací - [ ] Sladovnická - [ ] Zbytečná prvotní validace indexu, datum konkrétního dne je i v samotné tabulce s jídly, viz TODO v parseru - [ ] U Motlíků - [ ] Validovat, že vstupní datum je zahrnuto v rozsahu uvedeném nad tabulkou (např. '12.6.-16.6.') - [ ] Jídelní lístek se stahuje jednou každý den, stačilo by to jednou týdně ("ID" by mohlo být číslo týdne v roce, místo celého datumu) - [ ] TechTower - [ ] Validovat, že vstupní datum je zahrnuto v rozsahu uvedeném nad tabulkou (typicky 'Obědy 12. 6. - 16. 6. 2023 (každý den vždy i obědový bufet)')