Smart Calendar

Inteligentny asystent dnia codziennego - łączy plan zajęć USOS, pogodę, rozkłady PKP i ZTM oraz notatki w jednym dashboardzie. Sterowany językiem naturalnym dzięki integracji z Claude AI.

Projekt w trakcie realizacji
2026
Python, Flask, Claude AI, REST APIs
Projekt osobisty

Problem

Rozproszenie informacji

Jako student dojeżdżający codziennie z Tarnowskich Gór do Katowic musiałem żonglować wieloma źródłami informacji jednocześnie: plan zajęć w USOS, aktualna pogoda, rozkład PKP, autobusy ZTM, notatki z uczelni i czas przejazdu samochodem. Każdego ranka traciłem czas na sprawdzanie kilku różnych aplikacji i stron - zamiast skupić się na planowaniu dnia.

Brak jednego miejsca do zarządzania harmonogramem

USOS nie pozwala na dodawanie własnych zadań, aplikacje kalendarza nie znają rozkładów PKP, a żadne z dostępnych narzędzi nie pokazywało wszystkiego naraz - zajęć, pogody i transportu - w kontekście konkretnego dnia. Potrzebowałem czegoś własnego.

Rozwiązanie

Automatyczne pobieranie danych

Napisałem skrypt update_data.py z wykorzystaniem Claude Code, który równolegle pobiera dane z 6 zewnętrznych źródeł: pogodę (OpenWeatherMap), czasy przejazdu samochodem (TomTom), pociągi PKP, rozkłady autobusów ZTM (dane GTFS), prognozę 5-dniową oraz plan zajęć z USOS w formacie iCal. Wszystko trafia do lokalnych plików JSON.

Dashboard w czasie rzeczywistym

Serwer Flask (server.py) serwuje dashboard z kartami: harmonogram dnia, pogoda z jakością powietrza, mini-kalendarz, notatki, połączenia kolejowe, autobusy ZTM i czas przejazdu samochodem. Ciepły, minimalistyczny design inspirowany Google Calendar.

Asystent AI z narzędziami

Zintegrowałem Claude Haiku (Anthropic) z mechanizmem tool use - AI może nie tylko odpowiadać na pytania, ale też faktycznie dodawać zadania, edytować notatki, ukrywać zajęcia USOS, importować plan czy pokazać rozkład. Do 4 rund narzędziowych w jednej rozmowie.

Multimodalne połączenia

Parser GTFS (ZTM Metropolia) + API PKP PLK tworzą połączenia multimodalne: pociąg z Tarnowskich Gór do Katowic Głównych, a następnie tramwaj lub autobus ZTM do konkretnego przystanku (np. Zawodzie UE). Wszystko z czasami odjazdu i całkowitym czasem podróży.

Architektura

Projekt składa się z backendu Flask, skryptów aktualizacji danych i frontendu. Dane przechowywane są lokalnie jako pliki JSON.

Backend - Flask

server.py obsługuje routing HTTP, API oraz logikę rozmów z Claude AI. Zawiera 14 funkcji narzędziowych wywoływanych przez AI.

Aktualizacja danych

update_data.py pobiera dane ze wszystkich 6 źródeł i zapisuje je lokalnie jako JSON. Moduły działają równolegle, można uruchomić wybrany lub wszystkie naraz.

Frontend - Dashboard

Siatka kart 2×2 bez frameworków JS. Oddzielny widok czatu z asystentem AI. Responsywny design inspirowany Google Calendar.

Planowane - Raspberry Pi

W kolejnym etapie dashboard ma być uruchomiony na Raspberry Pi i wyświetlany na dedykowanym ekranie. Całość działałaby jako autonomiczne urządzenie domowe, startujące automatycznie przy włączeniu.

Funkcje narzędziowe Claude AI

dodaj_zadanie Dodaje zadanie do harmonogramu z datą, godziną, kategorią i lokalizacją
edytuj_zadanie Zmienia datę, godzinę, tytuł lub czas trwania istniejącego zadania
usun_zadanie Usuwa zadanie po dacie i godzinie
dodaj / edytuj / usun_notatke Pełne CRUD na notatkach z priorytetami i godziną powiązaną
pokaz_harmonogram Zwraca połączony plan dnia z USOS i zadań użytkownika z filtrem godzinowym
pokaz_pogode Odczytuje aktualną pogodę, jakość powietrza i wschód/zachód słońca
pokaz_polaczenia Rozkład PKP + ZTM + multimodalne TG↔KT z filtrem kierunku i godziny
ukryj_zajecia_usos Chowa wybrane zajęcia USOS z widoku bez ich usuwania
importuj_z_usos Kopiuje zajęcia USOS do harmonogramu użytkownika jako edytowalny szablon
pokaz_czas_przejazdu Czasy przejazdu samochodem dla 5 tras TG↔KT z live traffic TomTom

Efekt

Projekt łączy 6 zewnętrznych API, lokalny magazyn danych i model językowy w jedno spójne narzędzie do planowania dnia.

Dashboard Smart Calendar

Dashboard - widok główny

Siatka z kartami: harmonogram dnia (USOS + własne zadania), pogoda z jakością powietrza, mini-kalendarz i notatki. Ciepła kolorystyka zainspirowana Google Calendar.

Karty transportu

Karty transportu

Dolny rząd dashboardu pokazuje najbliższe pociągi PKP, autobusy ZTM oraz aktualny czas przejazdu samochodem dla 5 tras - z zaznaczeniem najszybszej.

Interfejs czatu AI

Chat AI z Claude Haiku

Oddzielny widok czatu z asystentem. Można powiedzieć „dodaj jutro laboratorium o 10:00" albo „kiedy mam jutro zajęcia?" - AI wywoła właściwe narzędzia i zmodyfikuje harmonogram.

Kluczowe osiągnięcia

6 źródeł danych w jednym miejscu

OpenWeatherMap, TomTom, PKP PLK API, USOS (iCal), GTFS ZTM Metropolia i lokalny harmonogram - wszystko synchronizowane jednym poleceniem.

AI z tool use - nie tylko chat

Claude Haiku nie tylko odpowiada na pytania, ale wykonuje realne akcje: dodaje zadania, edytuje notatki, ukrywa zajęcia USOS - do 4 wywołań narzędzi w jednej wiadomości.

Połączenia multimodalne

Automatyczne łączenie rozkładu PKP z danymi GTFS buduje trasy PKP+ZTM z całkowitym czasem podróży - funkcja niedostępna w standardowych aplikacjach transportowych dla tego odcinka.

Modularny skrypt aktualizacji

update_data.py obsługuje argumenty CLI - można zaktualizować tylko pogodę, tylko PKP lub wszystko naraz. Moduły działają równolegle dzięki ThreadPoolExecutor.

Wykorzystane Technologie

Python 3
Flask
Claude Haiku (Anthropic)
OpenWeatherMap API
TomTom Routing API
PKP PLK API
GTFS (ZTM Metropolia)
iCalendar (USOS)
HTML / CSS
Raspberry Pi