Smart Planner
Cross-platform aplikacja mobilna do planowania nauki, zadań i podróży z wbudowanym asystentem AI (LLaMA 3.1 via GROQ API). Real-time sync przez Firebase, animowane wykresy statystyk i pełny dark mode.
Aplikacja w akcji
Jeden hub do
wszystkiego co ważne
Smart Planner łączy w jednej aplikacji mobilnej trzy obszary organizacji życia — naukę, zadania i podróże — z wbudowanym asystentem AI, który generuje gotowe harmonogramy i plany wycieczek na życzenie.
Backend oparty w całości na Firebase (Authentication + Cloud Firestore) zapewnia real-time sync między urządzeniami, pełny cykl uwierzytelniania i działanie na iOS oraz Androidzie bez osobnego serwera.
Szczegóły funkcjonalności
Centrum dowodzenia — statystyki zadań, kursów i wypraw, lista zadań na dziś, postęp planów nauki, najbliższa podróż z odliczaniem dni. TopBar z powiadomieniami i przełącznikiem dark mode.
calcDaysLeft(startDate) avgStudyProgress(plans) overallScore(tasks, plans)
Lista to-do z filtrami (Wszystkie / Do zrobienia / Zrobione), wyszukiwarką live, statystykami aktywne/ukończone/postęp % i szybkim dodawaniem z pola na dole ekranu.
subscribeToTasks(uid, cb) toggleTask(uid, taskId) deleteTask(uid, taskId)
Karty kursów z AnimatedProgressBar, widok szczegółowy z harmonogramem tematów w akordeonach (DZIEŃ 1, DZIEŃ 2...), licznik godzin nauki, odhaczanie tematów z auto-przeliczeniem postępu.
users/{uid}/studyPlans
topicsList: [{name, completed,
isHeader?}]
Karty wyjazdów z deterministycznym doborem zdjęć Unsplash (resolveTripImageUri na podstawie trip.id), odliczanie dni, lista pakowania z checkboxami i checkpointy generowane przez AI.
users/{uid}/trips
packingList: [{name, packed}]
checkpoints: [{name, completed}]
Chat z LLaMA 3.1 via GROQ API — tryb study generuje harmonogram DZIEŃ X + lista tematów, tryb travel generuje DZIEŃ X + atrakcje. Odpowiedź parsowana i zapisywana do Firestore przez modal.
api.groq.com/openai/v1/ chat/completions model: llama-3.1-8b-instant temperature: 0.6
Koło postępu z ogólnym wynikiem %, wskaźnik trendu (+X% vs poprzedni okres), animowany wykres liniowy, wykresy słupkowe planów i priorytetów, filtr Dzień / Tydzień / Miesiąc.
buildSmoothPath(dataPoints) filterPlansByRange(plans, range) useMemo(() => rangeInsights)