2026 · Service Site · Healthcare
Fizjomobil kalendarz to życie.
Mobilny fizjoterapeuta to biznes oparty na slotach — nie wystarczy formularz skontaktujemy się. Trzeba booking system z prawdziwą synchronizacją kalendarza.

- Domena
- fizjomobil.pl
- Rok
- 2026
- Rola
- Product · Design · Full-stack
- Status
- Live
Brief
Co było do zrobienia i dlaczego.
Mobilny fizjoterapeuta z dojazdem do 43 miast nie sprzeda się stroną-wizytówką. Pacjent — często starszy, po udarze, z bólem — nie chce wypełniać Imię, Nazwisko, Treść wiadomości. Chce zobaczyć dostępne sloty i kliknąć.
A trener nie chce mieć 8 emaili dziennie i ręcznie wpisywać do kalendarza. Trzeba booking system z CalDAV sync, conflict detection i email confirmation z plikiem .ics.
Decyzje
Jak rozwiązaliśmy problem.
Booking wizard 3-krokowy (usługa → data/godzina → kontakt). Pierwsza wersja miała 5 kroków — każdy klik dalej kosztował ~15% konwersji. Po tygodniu testów zostały 3.
CalDAV sync (tsdav) pull dostępności z prywatnego kalendarza Jana, conflict detection przed zapisem, post-confirm email przez Resend (HTML via @react-email/components) z .ics jako załącznik. 320+ programmatic URL (6 usług x 43 miasta + core) dla local SEO. Three.js glass blobs jako tło hero — medycznie spokojny vibe, nie agresywny.
Tech
Architektura w skrócie.
Decyzje techniczne, które miały wpływ. Bez frazesu „nowoczesny stack”.
- Next.js 16
- React 19
- Tailwind v4
- Three.js + R3F 9
- tsdav (CalDAV)
- ical-generator
- react-day-picker 9
- Supabase SSR
- Resend
- next-themes
- Sonner
- Space Grotesk + DM Sans + Syne
Booking + CalDAV sync
tsdav jako klient CalDAV — pull dostępności z prywatnego kalendarza Jana (iCloud / Google przez CalDAV bridge), conflict detection przed zapisem, ical-generator dla .ics w mailu, admin panel /admin/wizyty dla zarządzania. Po stronie pacjenta: react-day-picker z polskim locale.
Programmatic SEO at scale
app/sitemap.ts generuje 320+ URL: 15 core (priority 1.0–0.7), 7 service detail (0.85), 43 city landing (0.9), 258 cross-ref usługa x miasto (0.7). Każda strona ma unikalne JSON-LD MedicalBusiness/FAQPage i lokalne meta.
Three.js R3F dla hero
GlassBlobs.tsx z parallax na pointer + scroll, dynamic import (SSR-safe), respektuje prefers-reduced-motion. R3F 9 + drei. Wellness OKLCH paleta — light cream + mint accent, nie pure white.
Co dostarczamy
Funkcje w produkcji.
Booking wizard 3-krokowy (usługa → slot → kontakt)
CalDAV sync z prywatnym kalendarzem (tsdav)
Conflict detection + email confirmation (Resend + .ics)
Admin panel /admin/dostepnosc + /admin/wizyty
320+ URL w sitemapie (programmatic)
258 cross-ref landing pages (usługa x miasto)
Three.js glass blobs (R3F) z parallax + reduced-motion
JSON-LD MedicalBusiness + FAQPage + Person
Coverage map 43 miast z highlight darmowego dojazdu
Showcase
Galeria live.
Zrzuty z produkcji w pełnej rozdzielczości. Kliknij kafelek, żeby otworzyć w fullscreen — keyboard nav (← → ESC), zoom (Z lub podwójne kliknięcie).
Liczby
Skala projektu bez koloru.
Liczby z kodu i analytics. Bez wysiłku, żeby coś z nich wyciągnąć.
- URL w sitemapie
0+
programmatic SEO
- cross-ref stron
0
6 usług x 43 miasta
- miasta w obszarze działania
0
- sekcji na home
0
- kroki w booking wizardzie
0
było 5, każdy klik = -15% konwersji
- prawdziwy sync
CalDAV
nie mock, nie webhook
Refleksja
Co się okazało po fakcie.
Bookingu nie da się zaprojektować raz. Pierwsza wersja miała 5 kroków — wybór usługi, data, godzina, dane, potwierdzenie. Po tygodniu testów zostały 3. Każdy klik dalej kosztował ~15% konwersji. Najwartościowsza praca nie była w 3D ani w sitemap — była w 12 kolejnych iteracjach formularza. Dla starszego pacjenta z bólem każdy zbędny ekran to może zadzwonię później — czyli wcale.
06 / Kontakt
Powiedz, na co robisz stronę.
Napisz kilka zdań o projekcie — wracam z konkretami i wyceną w ciągu 24h. Spotkanie online za darmo, bez zobowiązań.
- Emailhej@twojdesigner.pl
- Telefon+48 727 219 717
- LokalizacjaToruń, cała Polska
- Odpowiadampon–pt, do 24h
- Wolisz pominąć formularz?
Status
Przyjmuję projekty — kwiecień i maj 2026
