5.9 KiB
5.9 KiB
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
- client
- frontend psaný v React.js
Spuštění pro vývoj
Závislosti
Klient/server
Spuštění na *nix platformách
- Nainstalovat závislosti viz předchozí bod
- Zkopírovat
server/.env.template
doserver/.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
Spuštení s traefik
docker compose -f compose-traefik.yml up --build -d
TODO
- Umožnit vybrat libovolný čas odchodu
- Validace zadání smysluplného času (ideálně i klientská)
- Možnost úhrady celé útraty jednou osobou
- Základní myšlenka: jedna osoba uhradí celou útratu (v zájmu rychlosti odbavení), ostatním se automaticky vygeneruje QR kód, kterým následně uhradí svoji část útraty
- Obecně to bude problém např. pokud si někdo objedná něco navíc (pití apod.)
- Tlačítko "Uhradit" u každého řádku podniku - platí ten, kdo kliknul
- Zobrazeno bude pouze, pokud má daný uživatel nastaveno číslo účtu
- Dialog pro zadání spropitného, které se následně rozpočte rovnoměrně všem strávníkům
- Generování a zobrazení QR kódů ostatním strávníkům
- Umožnit u každého strávníka připočíst vlastní částku (např. za pití)
- Umožnit (např. zaškrtávátky) vybrat, za koho bude zaplaceno (pokud někdo bude platit zvlášť)
- 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
- Zavést notifikace typu "Jdeme na oběd"
- Notifikaci dostanou pouze uživatelé, kteří mají vybranou stejnou lokalitu
- Možnost náhledu na ostatní dny v týdnu (např. pomocí šipek)
- Možnost výběru oběda na následující dny v týdnu
- Vylepšit parsery restaurací
- Někdy jsou v názvech jídel přebytečné mezery kolem čárek ( , )
- 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, teoreticky by stačilo jednou týdně (za předpokladu, že se během týdne nemění)
- 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)')
- Jídelní lístek se stahuje v rámci prvního požadavku daný den, ale často se jídelní lístek na stránkách aktualizuje až v průběhu pondělního dopoledne a ten zobrazený je proto neaktuální
- Stránka neposílá hlavičku o času poslední modifikace, takže o to se nelze opřít
- Nevím aktuálně jak řešit jinak, než častějším scrapováním celé stránky
- Nasazení nové verze v Docker smaže veškerá data (protože data.json není vystrčený ven z kontejneru)
- Zavést složku /data
- Mazat z databáze data z minulosti, aktuálně je to k ničemu
- Skripty pro snadné spuštění vývoje na Windows (ekvivalent ./run_dev.sh)
- Implementovat Pizza day
- Zobrazit upozornění před smazáním/zamknutím/odemknutím pizza day
- 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í
- QR kód zobrazovat už po objednání, není důvod čekat na doručení
- Zbytečně nescrapovat každý den pizzy z Pizza Chefie, dokud není založen Pizza Day
- Umožnit uzamčení objednávek zakladatelem
- Možnost uložení čísla účtu
- Automatické generování a zobrazení QR kódů
- Zobrazovat celkovou cenu objednávky pod tabulkou objednávek
- Umožnit přidat k objednávce poznámku (např. "bez oliv")
- Negenerovat QR kód pro objednávajícího
- Umožnit smazání aktuální volby "popelnicí", místo nutnosti vybrat prázdnou položku v selectu
- Přívětivější možnost odhlašování
- Vyřešit responzivní design pro použití na mobilu
- Vyndat URL na Food API do .env
- Neselhat při nedostupnosti nebo chybě z Food API
- Dokončit docker-compose pro kompletní funkčnost
- Vylepšit dokumentaci projektu
- Popsat závislosti, co je nutné provést před vývojem a postup spuštění pro vývoj
- Popsat dostupné env
- Přesunout autentizaci na server (JWT?)
- Zavést .env.template a přidat .env do .gitignore
- Zkrášlit dialog pro vyplnění čísla účtu, vypadá mizerně
- Zbavit se Food API, potřebnou funkcionalitu zahrnout do serveru
- Vyřešit API mezi serverem a klientem, aby nebyl v obou projektech duplicitní kód (viz types.ts a Types.tsx)
- Vybraná jídla strávníků zobrazovat v samostatném sloupci
- Umožnit výběr/zadání preferovaného času odchodu na oběd
- Hodí se např. pokud má někdo schůzky
- Ukládat dostupné pizzy do DB místo souborů
- Ukládat jídla do DB místo souborů