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

Modern Fashion Store

Dashboard skladu a predaja pre odevnú firmu so živými aktualizáciami pre každého, kto ho má otvorený.

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

Dashboard produktov v Modern Fashion Store s fotkami, cenami a zásobami

O projekte

Vznikol v januári 2025 ako zadanie pri pohovore: dashboard skladu pre manažéra obchodu s oblečením v Elixire a Phoenixe, teda v technológiách, ktoré som dovtedy nepoužil. Dokončil som obe povinné úlohy, všetky štyri voliteľné aj bonusové nasadenie.

Neskôr som ho aktualizoval, skontroloval jeho bezpečnosť a spravil z neho verejné demo na vlastnom serveri. Prihlásite sa tlačidlom „Try the demo“ a dáta sa každú noc obnovia.

Čo si môžete vyskúšať

  • Pridávanie, úprava a mazanie produktov s fotkami, cenami, zásobami a viacerými štítkami
  • Kombinácia filtrov podľa štítkov, ceny a dostupnosti, vyhľadávanie a triedenie; filtre ostávajú v URL
  • Otvorte dashboard v dvoch oknách a sledujte, ako sa zmeny hneď objavia v druhom
  • Transakcie po mesiacoch s výberom mesiaca a stránkovaním
  • Štatistiky: porovnanie s minulým mesiacom, graf tržieb za 12 mesiacov, tržby podľa kategórií a tri najpredávanejšie produkty
  • Grafy sa dajú prepnúť na tabuľku pre čítačky obrazovky
  • Veľkosti a farby s vlastnými zásobami a zľavy naplánované na obdobie so značkou výpredaja a históriou cien
  • História úprav s verziami, ktoré sa dajú obnoviť, a možnosť vrátiť zmazaný produkt ešte niekoľko minút
  • Prehľad aktivity s úpravami, doplneniami zásob a predajmi; simulovaný zákazník každých pár minút niečo kúpi
  • Počet ľudí online a upozornenie, keď ten istý produkt práve upravuje niekto iný
  • Import z CSV, ktorý skontroluje každý riadok skôr, než niečo uloží, a export skladu aj transakcií do CSV
  • Štítok na regál s QR kódom pre každý produkt
  • Príkazová paleta cez Ctrl+K, tmavý režim, angličtina, nemčina a slovenčina a inštalácia ako aplikácia

Hlavné body

  • Živé aktualizácie medzi používateľmi cez Phoenix PubSub
  • Filtre skladu a transakcií, štatistiky predaja
  • Prihlásenie do dema bez zdieľaného hesla, nočný reset dát
  • Na vlastnom serveri s Dockerom, nginx a Tailscale

Ako to funguje

  • Asi 320 testov v 46 súboroch; kontrola pred commitom spúšťa kompilátor s varovaniami ako chybami, Credo, bezpečnostný skener Sobelow a testy
  • GitHub Actions spúšťa aj Dialyzer, zostaví release image, preskenuje ho nástrojom Trivy a nahrá do GHCR; server tento image len stiahne a spustí
  • Obmedzený počet zapisovacích požiadaviek v nginx, atomický limit počtu produktov, Erlang distribúcia viazaná na localhost a voliteľná databázová rola bez práv superusera
  • Bezpečnostná kontrola: prísna Content Security Policy, povolené zdroje fotiek, limity WebSocket správ a vstupov, prihlásenie do dema na serveri s ochranou CSRF
  • Zostavený ako release vo viacstupňovom Docker image, za nginx s bezpečnostnými hlavičkami a limitmi požiadaviek, zverejnený cez Tailscale Funnel sidecar s kontrolou stavu
  • View Transitions, oznamy pre čítačky obrazovky pri živých zmenách a podpora obmedzeného pohybu

Architektúra

  1. 1PrehliadačStránky sa menia naživo cez WebSocket LiveView
  2. 2Tailscale FunnelVerejné HTTPS zo sidecar kontajnera
  3. 3nginxBezpečnostné hlavičky a obmedzenie počtu požiadaviek
  4. 4Phoenix LiveViewElixir release; PubSub posiela každú zmenu všetkým otvoreným stránkam
  5. 5PostgreSQLProdukty, zásoby a predaje

Zoznam zmien

  • Phoenix 1.7 na 1.8 a LiveView 1.0 na 1.2
  • Tailwind CSS 3 na 4
  • Odstránené nepoužívané knižnice
  • Demo dáta narástli z 10 na 34 produktov s vlastnými fotkami a rokom predajov
Kedy
2025 – 2026
Typ
Osobný
Verzie
  • Elixir 1.20
  • Phoenix 1.8
  • LiveView 1.2
  • PostgreSQL 18
  • Tailwind CSS 4
Technológie
  • Elixir
  • Phoenix LiveView
  • PostgreSQL
  • Tailwind CSS
  • Docker
  • nginx
  • Tailscale
Tabuľka skladu filtrovaná podľa štítku winter, s fotkami produktov, kategóriami, cenami a stavom zásob
Sklad filtrovaný podľa štítku, so zľavnenými cenami a označenými nízkymi alebo minutými zásobami.
Detail trenčkotu v bočnom paneli nad skladom, so zľavou 20 % a zásobami podľa veľkostí
Produkt sa otvorí v bočnom paneli, ktorý má vlastný odkaz.
Stránka produktu džínsov v tmavom režime so zásobami podľa veľkostí, odhadom predaja a QR kódom
Stránka produktu v tmavom režime: zásoby podľa veľkostí, nedávne predaje a QR kód na regál.
Štítok na regál na tlač s názvom produktu, cenou, kategóriou a QR kódom
Štítok na regál na tlač; QR kód otvorí produkt v mobile.
Stránka transakcií s výberom mesiaca, súčtami predaja a predajmi zoskupenými po mesiacoch
Transakcie zoskupené po mesiacoch, so súčtami a exportom do CSV.
Štatistiky predaja so stĺpcami mesačných tržieb a koláčovým grafom tržieb podľa kategórií
Štatistiky: tržby za mesiac a podľa kategórie, upozornenia na zásoby a najpredávanejšie produkty.

1 z 6

Tabuľka skladu filtrovaná podľa štítku winter, s fotkami produktov, kategóriami, cenami a stavom zásob

Sklad filtrovaný podľa štítku, so zľavnenými cenami a označenými nízkymi alebo minutými zásobami.