SmartTech e-shop
E-shop so smartfónmi s vyhľadávaním odolným voči preklepom, filtrami, trojkrokovým nákupom a administráciou.
Živé demoZdrojový kód
Beží na mojom domácom serveri, takže môže byť občas nedostupné (napríklad pri výpadku elektriny alebo internetu).

O projekte
Semestrálny projekt z predmetu Webové technológie na FIIT STU v zime 2021, robený vo dvojici, a môj prvý projekt v Laraveli. Zadaním bol e-shop vykresľovaný na serveri s filtrami, vyhľadávaním, košíkom, ktorý prežije odhlásenie, nákupom bez registrácie, účtami a administráciou.
Neskôr som mu dal nový dizajn a potom som ho postupne aktualizoval na Laravel 13, najprv som ho pokryl testami a presunul na domáci server.
Čo si môžete vyskúšať
- Vyhľadávanie, ktoré odpustí preklepy (skúste „samsng“), s návrhmi počas písania
- Filtre podľa ceny, značky, farby, pamäte, veľkosti displeja a systému, každý so živým počtom výsledkov
- Filtrovanie, triedenie a stránkovanie bez načítania stránky, s čistými URL na zdieľanie
- Nákup v troch krokoch s výberom dopravy a platby, aj bez registrácie
- Košík sa uloží pri odhlásení a spojí pri ďalšom prihlásení
- Celý e-shop v angličtine, nemčine a slovenčine, každý jazyk na vlastnej URL
- Zľavnené ceny a zľavové kódy; košík v deme ponúkne jeden na vyskúšanie
- Recenzie s hviezdičkami, zoznam želaní a porovnanie až štyroch telefónov vedľa seba
- História objednávok so stavom každej z nich
- Rýchle hľadanie stránok a telefónov cez Ctrl+K a tmavý režim
- Administrácia produktov a fotiek, objednávok a ich stavu, zľavových kódov, štatistík návštev bez cookies, prekladov a plánovanej údržby
- Administráciu si vyskúšate cez „Try the admin demo“: dočasný účet, ktorého produkty vidí len on a každú noc sa zmažú
Hlavné body
- Fuzzy vyhľadávanie cez PostgreSQL trigramy s návrhmi počas písania
- Filtre, triedenie a stránkovanie bez načítania stránky
- Nákup bez registrácie, košík medzi reláciami, sledovanie zásob
- Automatické testy v GitHub Actions, nasadenie cez Docker Compose
Ako to funguje
- Asi 140 testov beží proti PostgreSQL v GitHub Actions
- Administrácia chránená cez gates a policy; demo administrátori majú vlastný limit požiadaviek a nikdy nezasiahnu do produktov ani objednávok obchodu
- JSON API katalógu len na čítanie, verejné a s limitom požiadaviek na návštevníka
- Kanonické odkazy, štruktúrované dáta pre produkty a navigáciu, sitemap a hreflang odkazy medzi jazykmi
- Nahrané fotky sa znovu zakódujú, zmenšia a dostanú WebP náhľady; neočakávané chyby ukážu referenčný kód, ktorý sa zapíše aj do logu
- Knižnicu košíka som nahradil vlastnou triedou, keď som zistil, že uložené košíky sa nedali obnoviť: PostgreSQL orezal serializovaný text pri prvom nulovom bajte
- Vyhľadávanie odolné voči preklepom cez trigramovú podobnosť v PostgreSQL
- Docker Compose s PHP-FPM, nginx a PostgreSQL, nočný reset dema, obmedzenie počtu požiadaviek a kontrola stavu
Architektúra
- 1PrehliadačStránky vykresľované na serveri cez Blade, štýly v Tailwind CSS
- 2Tailscale FunnelVerejné HTTPS zo sidecar kontajnera
- 3nginxWebový server pred PHP-FPM
- 4LaravelKatalóg, košík, objednávky a administrácia na PHP-FPM; kontajner s plánovačom každú noc obnoví demo
- 5PostgreSQLProdukty a objednávky, s trigramovým vyhľadávaním
Zoznam zmien
- Najprv testy, potom Laravel 8 a PHP 8.1 na Laravel 13 a PHP 8.5, po jednej hlavnej verzii
- Tailwind CSS z CDN na lokálny build Tailwind 4
- PostgreSQL 18
- Kedy
- 2021 – 2026
- Typ
- Tímový
- Verzie
- Laravel 13
- PHP 8.5
- PostgreSQL 18
- Tailwind CSS 4
- Technológie
- Laravel
- PHP
- PostgreSQL
- Tailwind CSS
- Docker
- nginx
- Tailscale
- GitHub Actions
Galéria





