SportBuddy/USER_STORIES.md

26 KiB

SportBuddy - User Stories


US-001: Registrácia a prihlásenie

Status: HOTOVÉ

Ako nový používateľ chcem sa zaregistrovať a prihlásiť aby som mohol používať aplikáciu

Vývojár: Kamil Berecký

Tasky:

  • Setup Next.js projekt + Tailwind + BetterAuth
  • PostgreSQL databáza
  • Prisma schema: User model
  • BetterAuth konfigurácia (credentials provider)
  • Registračný formulár (/register)
  • Prihlasovací formulár (/login)
  • Validácia (email formát, heslo min 8 znakov)
  • Hash hesla (bcrypt)
  • Session management (localStorage)
  • Responzívny dizajn formulárov

Výsledné funkcie:

  • Fungujúca registrácia
  • Fungujúce prihlásenie
  • Session persistence
  • Redirect na /dashboard po prihlásení

US-002: Používateľský profil & Dashboard

Status: HOTOVÉ

Ako používateľ chcem vidieť a upraviť môj profil a dashboard s mojimi aktivitami aby som mohol prezentovať svoje športové záujmy a mať prehľad o mojich udalostiach

Vývojár: Jozef Kovalčín

Tasky:

Profil sekcia

  • Profil stránka (/profile)
  • Zobrazenie: meno, email, mesto, bio, obľúbené športy
  • Formulár na editáciu profilu (/profile/edit)
  • Upload profilovej fotky
  • API: GET /api/profile
  • API: PUT /api/profile
  • Validácia formulára
  • Responzívny dizajn

Dashboard sekcia

  • Dashboard stránka (/dashboard)
  • API: GET /api/activities/my (filtrovanie podľa userId)
  • Dve sekcie: "Moje aktivity" (vytvorené) a "Prihlásený na" (joined)
  • Používanie Activity card komponentu
  • Loading state
  • Empty states
  • Quick actions: "Vytvoriť aktivitu", "Hľadať aktivity"
  • Štatistiky: počet aktivít, počet prihlásení
  • Responzívny layout

Výsledné funkcie:

  • Zobrazenie profilu
  • Editácia profilu
  • Upload fotky
  • Dashboard so zoznamom
  • Filtrovanie funguje
  • Štatistiky sa zobrazujú

Poznámka: Profil model existuje v databáze (User + Profile), ale žiadne UI stránky nie sú implementované. Dashboard stránka existuje s navigáciou a základnou štruktúrou (3 štatistické karty), ale neobsahuje žiadne reálne dáta ani zoznam aktivít.


US-003: Vytvorenie aktivity

Status: 🔄 WIP (Work In Progress)

Ako používateľ chcem vytvoriť novú športovú aktivitu aby som našiel spoluhráčov

Vývojár: -

Tasky:

  • Prisma schema: Activity model
  • API: POST /api/activities
  • Automatické pridanie tvorcu ako účastníka
  • Validácia (dátum v budúcnosti, cena >= 0)
  • ⏸️ Formulár na vytvorenie (/activities/create)
  • ⏸️ Polia: názov, šport (dropdown), dátum, čas, miesto, max hráčov, úroveň, cena, popis
  • ⏸️ React Hook Form + Zod validácia
  • ⏸️ Loading state pri submit
  • ⏸️ Redirect na detail po vytvorení
  • ⏸️ Responzívny formulár

Výsledné funkcie:

  • API endpoint funguje
  • Funkčná validácia na BE
  • Aktivita sa uloží do DB
  • ⏸️ Frontend formulár chýba

Poznámka: API je hotové, ale chýba frontend formulár na vytvorenie aktivity.


US-004: Zoznam a detail aktivít

Status: 🔄 WIP (Work In Progress)

Ako používateľ chcem vidieť zoznam aktivít a ich detail aby som vedel, čo je k dispozícii

Vývojár: -

Tasky:

  • API: GET /api/activities (pagination 20/page)
  • API: GET /api/activities/[id]
  • Filtrovanie podľa športu, mesta, statusu
  • ⏸️ Stránka zoznamu (/activities)
  • ⏸️ Card komponenta pre aktivitu
  • ⏸️ Zobrazenie: názov, šport, dátum, čas, miesto, voľné miesta
  • ⏸️ Loading skeleton
  • ⏸️ Empty state ("Žiadne aktivity")
  • ⏸️ Detail stránka (/activities/[id])
  • ⏸️ Kompletné info + mapa (Google Maps embed)
  • ⏸️ Zoznam účastníkov
  • ⏸️ Progress bar obsadenosti
  • ⏸️ Responzívny grid/detail

Výsledné funkcie:

  • API endpoints fungujú
  • ⏸️ Zoznam aktivít (UI)
  • ⏸️ Detail aktivity (UI)
  • ⏸️ Pagination funguje

Poznámka: Backend API je kompletný s filtrovaním, ale chýba celý frontend UI.


US-005: Prihlasovanie na aktivity

Status: 🔄 WIP (Work In Progress)

Ako používateľ chcem sa prihlásiť na aktivitu aby som rezervoval miesto

Vývojár: -

Tasky:

  • Prisma schema: Booking model (many-to-many User-Activity)
  • API: POST /api/activities/[id]/join
  • Kontrola voľnej kapacity
  • Kontrola duplicity (už prihlásený)
  • Aktualizácia počtu hráčov
  • ⏸️ Tlačidlo "Prihlásiť sa" na detaile
  • ⏸️ Tlačidlo "Odhlásiť sa" ak som prihlásený
  • ⏸️ API: DELETE /api/activities/[id]/leave
  • ⏸️ Optimistic updates (TanStack Query)
  • ⏸️ Toast notifikácie
  • ⏸️ Badge "Prihlásený" na karte aktivity

Výsledné funkcie:

  • Prihlásenie funguje (API)
  • ⏸️ Odhlásenie funguje
  • Počet hráčov sa aktualizuje
  • ⏸️ UI komponenty chýbajú

Poznámka: Join API je hotové, ale chýba leave endpoint a všetky UI elementy.


US-006: Vyhľadávanie aktivít

Status: 🔄 WIP (Work In Progress)

Ako používateľ chcem vyhľadávať aktivity aby som rýchlo našiel, čo ma zaujíma

Vývojár: Kamil Berecký

Tasky:

  • API: GET /api/activities?search=... (full-text cez názov, popis)
  • Prisma search
  • ⏸️ Search bar
  • ⏸️ Search input na /activities
  • ⏸️ Loading spinner pri searchi
  • ⏸️ Highlighting výsledkov (optional)
  • ⏸️ Clear search button
  • ⏸️ "Žiadne výsledky" state
  • ⏸️ Query params v URL (?search=futbal)

Výsledné funkcie:

  • Vyhľadávanie funguje (API)
  • ⏸️ Real-time výsledky (UI)
  • ⏸️ URL synchronizácia

Poznámka: API podporuje search, ale UI komponenty nie sú implementované.


US-007: Základný UI/UX

Status: 🔄 WIP (Work In Progress)

Ako používateľ chcem pekné a funkčné rozhranie aby som mal dobrý zážitok

Vývojár: Všetci spoločne

Tasky:

  • Responzívny dizajn (mobile/tablet/desktop)
  • Header s navigáciou (logo, links, user menu)
  • Footer (copyright, links)
  • Dark mode toggle
  • ⏸️ Loading states všade (skeleton, spinner)
  • ⏸️ Notifikácie (react-hot-toast)
  • ⏸️ Error states a error boundaries
  • ⏸️ 404 stránka
  • Konzistencia písma a farebných schém
  • Tailwind configurácia
  • Mobilné menu (hamburger)

Výsledné funkcie:

  • Responzívny dizajn
  • Konzistentný UI
  • ⏸️ Loading/Error states

Poznámka: Základný design a theme switching je hotový, ale chýbajú loading states, error handling a notifikácie.


US-008: OAuth prihlásenie

Status: 📋 PLANNED

Ako používateľ chcem sa prihlásiť pomocou Google, Facebook alebo iných platforiem aby som nemusel vytvárať nové heslo a prihlásenie bolo rýchlejšie

Vývojár: -

Tasky:

  • ⏸️ BetterAuth konfigurácia OAuth providers (Google, Facebook)
  • ⏸️ Google OAuth setup (Client ID, Secret)
  • ⏸️ Facebook OAuth setup (App ID, Secret)
  • ⏸️ Prisma schema: rozšírenie User modelu (providerId, provider)
  • ⏸️ API: OAuth callback handling
  • ⏸️ Tlačidlá "Prihlásiť cez Google/Facebook" na login/register stránke
  • ⏸️ Mapovanie OAuth dát na User profil (email, meno, avatar)
  • ⏸️ Handling existujúceho účtu (merge alebo error)
  • ⏸️ Session management pre OAuth users
  • ⏸️ Responzívne OAuth tlačidlá

Výsledné funkcie:

  • ⏸️ Google login funguje
  • ⏸️ Facebook login funguje
  • ⏸️ Automatické vytvorenie profilu
  • ⏸️ Merge s existujúcim emailom (optional)

US-009: Mapa s lokalitami aktivít

Status: 📋 PLANNED

Ako používateľ chcem vidieť polohu aktivít na Google Maps aby som vedel, kde sa aktivita koná a ako ďaleko to mám

Vývojár: -

Tasky:

  • ⏸️ Google Maps API setup (API key)
  • ⏸️ Prisma schema: pridať lat/lng do Activity modelu
  • ⏸️ Geocoding pri vytváraní aktivity (mesto/adresa → súradnice)
  • ⏸️ API: GET /api/activities s lat/lng dátami
  • ⏸️ React komponenta: MapView s Google Maps embed/SDK
  • ⏸️ Markery pre jednotlivé aktivity na mape
  • ⏸️ Info window pri kliknutí na marker (názov, šport, čas)
  • ⏸️ Prepínanie medzi zoznam view a mapa view na /activities
  • ⏸️ Mapa na detail stránke (/activities/[id])
  • ⏸️ Directions link (navigácia do Google Maps)
  • ⏸️ Responzívna mapa (mobile/desktop)
  • ⏸️ Loading state pre mapu

Výsledné funkcie:

  • ⏸️ Mapa na zozname aktivít
  • ⏸️ Mapa na detaile aktivity
  • ⏸️ Klikateľné markery
  • ⏸️ Navigácia do Google Maps

US-010: Zdieľanie aktivít

Status: 📋 PLANNED

Ako používateľ chcem zdieľať aktivitu na sociálnych sieťach aby som mohol pozvať priateľov

Vývojár: -

Tasky:

  • ⏸️ Share API implementácia (Web Share API)
  • ⏸️ Fallback pre desktopové prehliadače (Copy link + social share buttons)
  • ⏸️ Share buttons: Facebook, Instagram, WhatsApp, Twitter/X, Email
  • ⏸️ Generovanie share URL s UTM parametrami
  • ⏸️ Open Graph meta tags pre aktivitu (og:title, og:image, og:description)
  • ⏸️ Twitter Card meta tags
  • ⏸️ Preview image generátor (optional - dynamický OG image)
  • ⏸️ Share button na detail stránke
  • ⏸️ Share button na activity card (optional)
  • ⏸️ Toast notifikácia "Link skopírovaný"
  • ⏸️ Analytics tracking pre shares (optional)

Výsledné funkcie:

  • ⏸️ Web Share API na mobile
  • ⏸️ Social share tlačidlá
  • ⏸️ Copy link funkcia
  • ⏸️ Rich previews na sociálnych sieťach

US-011: Pridanie do kalendára

Status: 📋 PLANNED

Ako používateľ chcem pridať aktivitu do môjho Google/Apple kalendára aby som nezabudol na termín

Vývojár: -

Tasky:

  • ⏸️ Generovanie .ics súboru (iCalendar formát)
  • ⏸️ API: GET /api/activities/[id]/calendar (vracia .ics)
  • ⏸️ Google Calendar link generátor
  • ⏸️ Apple Calendar kompatibilita
  • ⏸️ Outlook Calendar link
  • ⏸️ Tlačidlo "Pridať do kalendára" na detaile
  • ⏸️ Dropdown menu s možnosťami (Google, Apple, Outlook, Download .ics)
  • ⏸️ ICS súbor obsahuje: názov, popis, lokácia, začiatok, koniec, alarm (1h pred)
  • ⏸️ Automatické nastavenie časového pásma
  • ⏸️ Responzívne tlačidlo

Výsledné funkcie:

  • ⏸️ Google Calendar export
  • ⏸️ Apple Calendar export
  • ⏸️ Outlook Calendar export
  • ⏸️ .ics download

US-012: Pokročilé filtrovanie a preferencie

Status: 📋 PLANNED

Ako používateľ chcem filtrovať aktivity podľa skúseností, pohlavia, veku, ceny a ďalších kritérií aby som našiel aktivity, ktoré mi vyhovujú

Vývojár: -

Tasky:

Rozšírenie databázového modelu

  • ⏸️ Prisma schema: rozšírenie Activity (skillLevel, gender, minAge, maxAge, price)
  • ⏸️ Prisma schema: UserPreferences model (preferredSports, skillLevel, maxDistance, maxPrice)
  • ⏸️ Migrácia databázy

Backend

  • ⏸️ API: GET /api/activities s rozšíreným filtrovaním
  • ⏸️ Filtrovanie: skillLevel (začiatočník, stredne pokročilý, pokročilý, expert)
  • ⏸️ Filtrovanie: gender (muži, ženy, zmiešané)
  • ⏸️ Filtrovanie: vekové rozpätie (minAge-maxAge)
  • ⏸️ Filtrovanie: cena (od-do)
  • ⏸️ API: GET/PUT /api/preferences (uloženie používateľských preferencií)

Frontend - Filter panel

  • ⏸️ Bočný filter panel na /activities
  • ⏸️ Dropdown/Select pre úroveň (skillLevel)
  • ⏸️ Radio buttons pre pohlavie
  • ⏸️ Slider/Input pre vek (range)
  • ⏸️ Slider/Input pre cenu (range)
  • ⏸️ Checkbox pre športy
  • ⏸️ "Použiť filtre" a "Resetovať" tlačidlá
  • ⏸️ Uložené preferencie v /profile/preferences
  • ⏸️ Quick filter badges (zobrazenie aktívnych filtrov)
  • ⏸️ Mobile-friendly filter (bottom sheet/modal)

Formulár na vytvorenie aktivity

  • ⏸️ Pridať polia: skillLevel, gender, minAge, maxAge do create formu
  • ⏸️ Validácia (minAge <= maxAge, price >= 0)

Výsledné funkcie:

  • ⏸️ Filtrovanie podľa všetkých kritérií
  • ⏸️ Uloženie preferencií
  • ⏸️ Rozšírený create form
  • ⏸️ Responzívny filter UI

US-013: Verejný používateľský profil

Status: 📋 PLANNED

Ako používateľ chcem vidieť profily ostatných používateľov s ich predošlými aktivitami aby som vedel, s kým budem hrať

Vývojár: -

Tasky:

Backend

  • ⏸️ API: GET /api/users/[id] (verejné dáta)
  • ⏸️ API: GET /api/users/[id]/activities (absolvované aktivity)
  • ⏸️ Prisma query: počet aktivít, hodnotenie (optional)
  • ⏸️ Privacy nastavenia (ktoré dáta sú verejné)

Frontend - Verejný profil

  • ⏸️ Stránka /users/[id]
  • ⏸️ Zobrazenie: meno, avatar, bio, mesto
  • ⏸️ Štatistiky: počet aktivít, obľúbené športy
  • ⏸️ Zoznam predošlých aktivít (completed)
  • ⏸️ Badge systém (optional: "Častý hráč", "Organizátor" atď.)
  • ⏸️ Hodnotenie/Recenzie od ostatných (optional)
  • ⏸️ Responzívny dizajn

Prepojenia

  • ⏸️ Link na profil z activity card (pri účastníkoch)
  • ⏸️ Link na profil z activity detail (zoznam účastníkov)
  • ⏸️ Avatar klikateľný → profil

Privacy

  • ⏸️ Nastavenie v /profile/privacy (čo je verejné)
  • ⏸️ Možnosť skryť predošlé aktivity
  • ⏸️ Možnosť skryť štatistiky

Výsledné funkcie:

  • ⏸️ Verejný profil stránka
  • ⏸️ História aktivít
  • ⏸️ Štatistiky používateľa
  • ⏸️ Privacy nastavenia

US-014: Notifikácie o nových aktivitách

Status: 📋 PLANNED

Ako používateľ chcem dostávať notifikácie o nových aktivitách v mojom okolí podľa mojich preferencií aby som nezmeškal zaujímavé aktivity

Vývojár: -

Tasky:

Backend - Notifikačný systém

  • ⏸️ Prisma schema: Notification model (type, userId, activityId, read, createdAt)
  • ⏸️ API: GET /api/notifications (zoznam notifikácií)
  • ⏸️ API: PUT /api/notifications/[id]/read (označiť ako prečítané)
  • ⏸️ API: DELETE /api/notifications/[id]
  • ⏸️ Background job: kontrola nových aktivít podľa preferencií (cron job)
  • ⏸️ Matching engine: aktivita vs. user preferences (šport, location, price)
  • ⏸️ Rate limiting (max X notifikácií denne)

Push notifikácie (optional)

  • ⏸️ Web Push API setup
  • ⏸️ Service Worker registrácia
  • ⏸️ Push subscription management
  • ⏸️ API: POST /api/notifications/subscribe
  • ⏸️ Browser notification permission request

Email notifikácie

  • ⏸️ Email service setup (SendGrid, Resend, alebo Nodemailer)
  • ⏸️ Email template pre novú aktivitu
  • ⏸️ Digest email (denný/týždenný súhrn)
  • ⏸️ Unsubscribe link

Frontend - Notification center

  • ⏸️ Notification bell icon v headeri
  • ⏸️ Badge s počtom neprečítaných
  • ⏸️ Dropdown/Panel s notifikáciami
  • ⏸️ Notification item: avatar, text, čas, link na aktivitu
  • ⏸️ "Označiť všetko ako prečítané"
  • ⏸️ "Vymazať všetky"
  • ⏸️ Link na /notifications (full page view)
  • ⏸️ Real-time updates (WebSocket alebo polling)

Nastavenia notifikácií

  • ⏸️ Stránka /profile/notifications
  • ⏸️ Toggle: email notifikácie on/off
  • ⏸️ Toggle: push notifikácie on/off
  • ⏸️ Frekvencia: instant, denný digest, týždenný digest
  • ⏸️ Filter: len obľúbené športy, len v okolí X km
  • ⏸️ Quiet hours (nočný režim)

Výsledné funkcie:

  • ⏸️ In-app notifikácie
  • ⏸️ Push notifikácie (optional)
  • ⏸️ Email notifikácie
  • ⏸️ Notifikačné centrum
  • ⏸️ Konfigurovateľné nastavenia

US-015: Hodnotenie a recenzie

Status: 📋 PLANNED

Ako používateľ chcem hodnotiť účastníkov po aktivite aby ostatný vedeli, s kým hrajú

Vývojár: -

Tasky:

Backend

⏸️ Prisma schema: Review model (rating 1-5, comment, reviewer, reviewed user) ⏸️ API: POST /api/users/[id]/reviews ⏸️ API: GET /api/users/[id]/reviews (zoznam recenzií) ⏸️ Validácia: len pre účastníkov aktivity ⏸️ Validácia: len po dátume aktivity ⏸️ Validácia: jeden review na používateľa na aktivitu ⏸️ Validácia: no spam, min 10 znakov pre comment ⏸️ Výpočet priemerného ratingu (agregácia) ⏸️ API: POST /api/reviews/[id]/report (report inappropriate review)

###Frontend - Review komponenty ⏸️ Review modal po skončení aktivity ⏸️ Star rating komponenta (1-5 hviezd, interactive) ⏸️ Text area pre komentár (optional, max 500 znakov) ⏸️ Character counter (500/500) ⏸️ Anonymous option checkbox (meno skryté) ⏸️ Submit a Cancel tlačidlá ⏸️ Loading state pri odosielaní

Frontend - Zobrazenie recenzií

⏸️ Zobrazenie priemerného ratingu na profile (stars + číslo) ⏸️ Zoznam recenzií na profile stránke ⏸️ Review card komponenta (avatar, meno/anonymous, rating, komentár, dátum) ⏸️ Pagination pre recenzie (10 per page) ⏸️ Report inappropriate review button ⏸️ "Žiadne recenzie" empty state ⏸️ Responzívny dizajn

Notifikácie

⏸️ Notifikácia pre používateľa pri novej recenzii ⏸️ Email notifikácia o novom hodnotení (optional)

Výsledné funkcie:

⏸️ Rating systém funguje ⏸️ Reviews na profile ⏸️ Priemerný rating sa zobrazuje ⏸️ Report function


US-016: Chat pre aktivitu

Status: 📋 PLANNED

Ako používateľ chcem komunikovať s účastníkmi aktivity aby sme mohli medzi sebou komunikovať

Vývojár: -

Tasky:

Backend

⏸️ Prisma schema: Message model (activity_id, user_id, content, timestamp) ⏸️ API: GET /api/activities/[id]/messages (s pagination) ⏸️ API: POST /api/activities/[id]/messages ⏸️ API: DELETE /api/messages/[id] (delete vlastnej správy) ⏸️ Validácia: len pre prihlásených účastníkov ⏸️ Validácia: max 500 znakov na správu ⏸️ Real-time setup (Pusher/Ably konfigurácia alebo polling endpoint) ⏸️ Unread message tracking (Message.read field) ⏸️ API: PUT /api/messages/mark-read

Frontend - Chat UI

⏸️ Chat UI komponenta (sidebar/panel na detaile aktivity) ⏸️ Toggle button na otvorenie/zatvorenie chatu ⏸️ Message list (scrollable container) ⏸️ Message bubble komponenta (left/right podľa odosielateľa) ⏸️ Zobrazenie mena a fotky odosielateľa ⏸️ Timestamp pre každú správu (relatívny čas: "5 min ago") ⏸️ Message input field (textarea s auto-resize) ⏸️ Send button (disabled ak prázdne) ⏸️ Character counter (500/500)

Real-time funkcie

⏸️ Real-time message receiving (Pusher/Ably integration) ⏸️ Auto-scroll na novú správu (smooth scroll) ⏸️ Unread message badge (počet neprečítaných) ⏸️ "Typing..." indikátor (optional) ⏸️ Message delivered/read status (optional)

UX vylepšenia

⏸️ Emoji picker (optional - React Emoji Picker) ⏸️ Message delete option (len vlastné správy) ⏸️ "Load more" pre staršie správy (pagination) ⏸️ Empty state ("Začnite konverzáciu...") ⏸️ Loading skeleton pre načítavanie správ ⏸️ Error handling (offline, failed send) ⏸️ Responzívny dizajn (mobile drawer)

Výsledné funkcie:

⏸️ Chat funguje ⏸️ Real-time updates ⏸️ Len pre účastníkov ⏸️ Message history


US-017: AI Chatbot pre support

Status: 📋 PLANNED

Ako používateľ chcem sa opýtať AI na otázky o platforme aby som rýchlo našiel odpovede na moje otázky o platforme

Vývojár: -

Tasky:

Backend - AI Infrastructure

⏸️ API: POST /api/ai/support-chat ⏸️ OpenAI Assistants API integration ⏸️ API rate limiting (10 requests/day pre free users) ⏸️ Token usage tracking a cost monitoring ⏸️ Error handling a fallback responses ⏸️ API: GET /api/ai/chat-history (pre daného používateľa) ⏸️ API: DELETE /api/ai/chat-history (vymazanie histórie)

RAG Setup (Retrieval Augmented Generation)

⏸️ Pinecone/Supabase Vector database setup ⏸️ Knowledge base creation (FAQ dokumenty) ⏸️ Platform guide embeddings (ako používať features) ⏸️ FAQ dokumenty embeddings ⏸️ Vector search implementation ⏸️ Context injection do AI promptu ⏸️ Relevance scoring a filtering

Context-Aware Features

⏸️ Current page detection (URL tracking) ⏸️ User profile info injection (ak prihlásený) ⏸️ Recent user actions tracking (last 5 actions) ⏸️ Dynamic prompt construction based on context ⏸️ Session-based conversation memory

Frontend - Chat Widget

⏸️ Floating chat button (bottom right, sticky) ⏸️ Badge notification (nová odpoveď) ⏸️ Chat window komponenta (minimize/maximize/close) ⏸️ Chat header s titulom a actions ⏸️ Message list (user + AI bubbles) ⏸️ Message input field ⏸️ Send button ⏸️ Loading indicator (typing dots) ⏸️ Scroll to bottom button

Quick Actions

⏸️ Quick action buttons: "Ako vytvoriť aktivitu?" ⏸️ Quick action buttons: "Ako sa prihlásiť?" ⏸️ Quick action buttons: "Ako nájsť aktivity?" ⏸️ Quick action buttons: "Ako upraviť profil?" ⏸️ Dynamic suggestions based on page

Advanced Features

⏸️ Chat history persistence (conversation_id v localStorage) ⏸️ "Nová konverzácia" button (reset context) ⏸️ Escalation to human support button ⏸️ Human support form (meno, email, správa) ⏸️ Multilingual support (SK/EN auto-detection) ⏸️ Copy response button ⏸️ Thumbs up/down feedback ⏸️ "Bolo to užitočné?" feedback

Analytics

⏸️ Common questions tracking (analytics dashboard) ⏸️ User satisfaction metrics (feedback aggregation) ⏸️ Response time monitoring ⏸️ Escalation rate tracking ⏸️ Most helpful answers identification

UX Polish

⏸️ Smooth animations (open/close, messages) ⏸️ Typing indicator when AI is responding ⏸️ Error states ("Niečo sa pokazilo, skúste znova") ⏸️ Offline detection a warning ⏸️ Mobile responsive design ⏸️ Keyboard shortcuts (ESC to close) ⏸️ Welcome message on first open

Výsledné funkcie:

⏸️ AI chatbot funguje ⏸️ RAG s knowledge base ⏸️ Context-aware answers ⏸️ Chat history

US-018: AI Matchmaking pre hráčov

Status: 📋 PLANNED

Ako používateľ chcem aby AI našlo kompatibilných spoluhráčov aby som hral s ľuďmi na mojej úrovni

Vývojár: -

Tasky:

Backend - Database & Models

⏸️ Prisma schema: MatchScore model (user1_id, user2_id, score, factors) ⏸️ Prisma schema: rozšírenie User (playStyle, preferredTimes, skillLevels) ⏸️ Database indexes pre rýchle vyhľadávanie ⏸️ Cache layer pre match scores (Redis - optional)

Compatibility Algorithm

⏸️ Skill level matching algorithm (weight: 25%) ⏸️ Play style preferences matching (competitive/casual) (weight: 20%) ⏸️ Age group similarity calculation (weight: 15%) ⏸️ Location proximity (Haversine distance) (weight: 20%) ⏸️ Schedule compatibility analysis (weight: 10%) ⏸️ Past activity ratings correlation (weight: 10%) ⏸️ Sport preferences overlap ⏸️ Final score calculation (weighted sum 0-100%)

AI Integration

⏸️ OpenAI embeddings generation pre user profiles ⏸️ Vector similarity search (cosine similarity) ⏸️ Embedding storage (Pinecone/Supabase Vector) ⏸️ Batch embedding generation (pre existing users) ⏸️ Incremental embedding updates (pri zmene profilu) ⏸️ API: POST /api/ai/match-users

Backend APIs

⏸️ API: GET /api/users/matches (top matches pre používateľa) ⏸️ API: GET /api/activities/[id]/suggested-users (pre danú aktivitu) ⏸️ API: POST /api/matches/[userId]/invite (pozvať matched usera) ⏸️ Match score caching (24h refresh) ⏸️ Pagination pre match results ⏸️ Filtering options (min score, max distance)

Frontend - Match Discovery

⏸️ "Nájdi mi spoluhráča" feature page (/find-partners) ⏸️ Match score zobrazenie (1-100% progress bar + badge) ⏸️ Match card komponenta (avatar, meno, score, factors) ⏸️ Match explanation tooltip: "Podobná úroveň, blízka lokalita..." ⏸️ "Perfect match" badge (90%+ score) - special styling ⏸️ "Good match" badge (70-89%) ⏸️ Skill level indicators (beginner/intermediate/advanced)

Frontend - Activity Integration

⏸️ Suggested users section na activity detail ⏸️ "Odporúčaní spoluhráči" widget (top 3) ⏸️ Invite matched user button ⏸️ Invite modal (personalizovaná správa) ⏸️ Toast notifikácia po odoslaní pozvánky

Match Breakdown UI

⏸️ Expandable match details (klik na match card) ⏸️ Factor breakdown visualization:

  • ⏸️ Skill level match (progress bar)
  • ⏸️ Location proximity (distance in km)
  • ⏸️ Schedule compatibility (calendar icon)
  • ⏸️ Play style match (competitive/casual)
  • ⏸️ Common sports (badge list) ⏸️ "Prečo sme kompatibilní" text explanation (AI-generated)

Email Digest

⏸️ Weekly "Best matches" email template ⏸️ Email service integration (SendGrid/Resend) ⏸️ Cron job: weekly match calculation a email send ⏸️ Top 5 matches v emaili ⏸️ CTA button: "Pozri všetky matched" ⏸️ Unsubscribe option

User Preferences

⏸️ Match preferences page (/profile/match-preferences) ⏸️ Toggle: enable/disable matchmaking ⏸️ Max distance slider (5-50 km) ⏸️ Preferred age range ⏸️ Play style preference (competitive/casual/both) ⏸️ Notification frequency (instant/weekly/never)

Analytics & Optimization

⏸️ Match success tracking (koľko invites accepted) ⏸️ Algorithm performance monitoring ⏸️ A/B testing framework (different weight combinations) ⏸️ User feedback collection ("Bol toto dobrý match?")

Výsledné funkcie:

⏸️ Matchmaking algorithm ⏸️ Compatibility scores ⏸️ User suggestions ⏸️ Weekly digest


Legenda

  • Hotové (Completed)
  • 🔄 WIP (Work In Progress - rozrobené)
  • ⏸️ Nerealizované (Planned but not started)
  • 📋 PLANNED (Celá user story je len naplánovaná)