Analytika predajne: dashboard nad dátami z Pohody
Webová aplikácia, ktorá importuje XML exporty Zásob a Pohybov z účtovného systému Pohoda, ukladá ich do Supabase/PostgreSQL a poskytuje prehľad tržieb, zisku, sortimentu a kvality dát na jednom mieste.
Dashboard analytiky predajne s KPI a grafmi
public/projects/predajna-dashboard.webp

Pre koho a prečo
Analytika predajne je interný nástroj pre maloobchodné predajne, ktoré majú dáta v Pohode, ale chýba im prehľadná analytika nad tržbami, ziskom, sortimentom a kvalitou importovaných dát. Namiesto ručného prechádzania tabuliek v účtovníctve ponúka jeden centralizovaný panel s filtrami, KPI, grafmi a kontrolnými kontrolami.
Čo bolo treba vyriešiť
- Pohoda má dáta, ale nie prehľadnú predajnú analytiku ani kontrolu kvality importov.
- Ručné počítanie tržieb, marže a segmentácie sortimentu je pomalé a náchylné na chyby.
- Výdajky a vlastná produkcia skresľujú zisk, ak sa nedajú klasifikovať a upraviť jednotným pravidlom.
Čo som postavil
Single-page aplikácia s backendom v PostgreSQL cez Supabase. Ťažké výpočty (agregácie dashboardu, kontroly, sumáre) bežia v SQL RPC funkciách, nie v Reacte. Frontend slúži na filtrovanie, vizualizáciu a správu metadát: typy produktov, vlastná produkcia, klasifikácia výdajok.
Ako aplikácia funguje v praxi
Dashboard analytiky predaja
KPI karty (tržby, zisk, marža, nákupy, výdajky, počet riadkov), prepínač medzi ziskom podľa Pohody a upraveným ziskom, denný graf, segmentácia podľa typu produktu, top kategórie a produkty, rozpad výdajok podľa dôvodu.
Dashboard s KPI kartami a grafom vývoja tržieb
public/projects/predajna-dashboard.webp

Importy z Pohody
Nahratie XML exportov so automatickou detekciou typu (Zásoby / Pohyby), parsovanie vo Web Workeri na pozadí, zápis cez Supabase RPC s idempotentnými dávkami a históriou importov vrátane varovaní pri prekrývajúcich sa obdobiach.
Obrazovka importu XML dávok
public/projects/importy.webp

Správa sortimentu
Prehľad a filtrovanie produktov, vlastné typy, označenie vlastnej produkcie a jednotkového nákladu, hromadné akcie, detail s grafom predajnosti a návrhmi vlastnej produkcie.
Tabuľka produktov a detail karty
public/projects/predajna-produkty.webp

Pohyby
Read-only výpis skladových pohybov z importu s filtrami podľa dátumu, agendy a produktu. Súhrnný riadok tržieb, zisku a nákupov podľa aktívneho filtra.
Prehľad skladových pohybov
public/projects/pohyby.webp

Kontrola kvality dát
Osem automatických kontrol v databáze (nulový náklad, predaje do mínusu, záporné stavy, neúplné karty, nezaradené výdajky, duplicitné EANy, čerstvosť dát, chybné dávky) a klasifikácia výdajkových dokladov s hromadným priradením dôvodu.
Kontrolný panel a klasifikácia výdajok
public/projects/kontrola.webp

Ako funguje import z Pohody
XML súbor z Pohody
Export Zásob alebo Pohybov z účtovného systému.
Detekcia a parsovanie
Web Worker rozpozná typ exportu a parsuje XML cez fast-xml-parser so Zod validáciou.
Zápis do databázy
Chunkovaný insert cez Supabase RPC: upsert produktov, deduplikácia pohybov, report dávky.
Invalidácia cache
TanStack Query obnoví dashboard a tabuľky po dokončení importu.
Technické riešenie
Výpočty v SQL, nie v prehliadači
Agregácie dashboardu, kontrolné kontroly a sumáre bežia ako PostgreSQL RPC funkcie. Frontend len filtruje a zobrazuje, čo škáluje aj pri desaťtisícoch pohybov.
Multi-tenant s Row Level Security
Každý používateľ patrí k tenantovi cez profiles. RLS izoluje dáta podľa tenant_id. Prihlásenie cez Supabase Auth, frontend volá len RPC a tabuľky s kontrolou tenanta.
Vlastná doménová logika zisku
Zisk podľa Pohody z importovaných polí. Upravený zisk pre vlastnú produkciu s custom_unit_cost. Výdajky sa dajú vylúčiť podľa dôvodu (napr. neskoršia fakturácia sa nepočíta do KPI).
Nasadenie
Frontend na Vercel (SPA rewrites), backend na Supabase s migráciami v supabase/migrations/. Parsovanie XML v pozadí cez Web Workers bez zamrznutia UI.
Kľúčové technické vlastnosti
- Import reálnych XML exportov z komerčného ERP Pohoda, nie mock CSV.
- Idempotentné importy: opakovaná dávka nespôsobí duplicity.
- Web Workers pre parsing veľkých XML mimo main threadu.
- TanStack Table a Query pre veľké datasety s pagináciou a cache.
- Recharts pre denný vývoj na dashboarde a predajnosť v detaile produktu.
- Vitest a Testing Library pre parsery a React logiku.
Stav a určenie
Interný nástroj v prevádzke pre maloobchodnú predajňu. UI v slovenčine, cielený na majiteľa predajne, prevádzkara alebo interného analytika s prístupom k Pohode.
Máte podobný projekt? Napíšte mi.
Osobné stretnutie nie je problém. Ozvem sa do 24 hodín.
Späť na projekty