Preskočiť na obsah
Ákos Kappel
Jazyk: sk
Téma
Svetlé
Tmavé

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).

Katalóg smartfónov s filtrami

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

  1. 1PrehliadačStránky vykresľované na serveri cez Blade, štýly v Tailwind CSS
  2. 2Tailscale FunnelVerejné HTTPS zo sidecar kontajnera
  3. 3nginxWebový server pred PHP-FPM
  4. 4LaravelKatalóg, košík, objednávky a administrácia na PHP-FPM; kontajner s plánovačom každú noc obnoví demo
  5. 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
Úvodná stránka obchodu SmartTech s telefónom a tromi dôvodmi na nákup
Úvodná stránka s bannerom dema, vyhľadávaním a prepínačom jazyka.
Stránka produktu telefónu Sony s množstvom, celkovou cenou a tlačidlom do košíka
Detail produktu s množstvom, priebežnou cenou a parametrami.
Návrhy vyhľadávania pre preklep samsng so zoznamom telefónov Samsung s fotkami a cenami
Návrhy počas písania nájdu telefóny Samsung aj pre „samsng“.
Katalóg smartfónov v tmavom režime filtrovaný na Apple, Google a Samsung, zoradený podľa ceny
Katalóg v tmavom režime, s filtrami značiek ako odstrániteľnými štítkami.
Košík s jedným telefónom, výberom množstva, poľom na zľavový kód a celkovou sumou
Košík s poľom na zľavový kód.
Zoznam produktov v administrácii s vyhľadávaním, triedením, náhľadmi, cenami a stavom zásob a upozornením pre demo administrátora
Zoznam produktov v administrácii, otvorený cez dočasný demo účet administrátora.

1 z 6

Úvodná stránka obchodu SmartTech s telefónom a tromi dôvodmi na nákup

Úvodná stránka s bannerom dema, vyhľadávaním a prepínačom jazyka.