Uppycare

Project

Uppycare

Uppycare: Cyfrowa książeczka zdrowia zwierzaka

React Native + Expo + Offline Support

Aplikacja powstała z potrzeby ogarnięcia terminów szczepień i odrobaczeń mojego psa. Zamiast szukać kartek po szufladach, wszystko trzymam w telefonie.

UppyCare home
UppyCare pet profile
UppyCare health event

Geneza projektu

Każdy właściciel zwierzaka zna ten moment: weterynarz pyta "kiedy było ostatnie odrobaczenie?" i zaczyna się nerwowe przekopywanie papierów. Albo nagle zdajesz sobie sprawę, że szczepienie było tydzień temu. Uppycare rozwiązuje dokładnie ten problem: wszystkie dane w telefonie, z automatycznymi przypomnieniami.

Kluczowe funkcjonalności

Profile zwierząt

Możliwość dodania wielu pupili z podstawowymi danymi: imię, gatunek, rasa, data urodzenia, waga.

Historia zdrowia

Chronologiczna lista wydarzeń: szczepienia, odrobaczenia, wizyty, zabiegi, podane leki.

System przypomnień

Lokalne powiadomienia push o zbliżających się terminach. Konfigurowalny czas wyprzedzenia.

Offline Support

Dane keszowane lokalnie. Aplikacja działa offline, bez konieczności połączenia z internetem.

Decyzje techniczne

React Native + Expo

Wybór podyktowany szybkością developmentu i możliwością wydania na iOS i Android z jednego codebase'u. Expo Go znacznie przyspiesza iteracje.

Backend + lokalne keszowanie

Backend obsługuje dane użytkowników i synchronizację między urządzeniami. Lokalne keszowanie zapewnia działanie offline.

TypeScript

Typy dla eventów zdrowotnych (Vaccination, Deworming, VetVisit, Medication) zapewniają spójność danych i łatwiejsze refaktorowanie.

Wyzwania

Problem

Expo Notifications wymagają specjalnej konfiguracji dla powiadomień lokalnych. Na iOS trzeba obsłużyć permissions i badge count.

Rozwiązanie

Wrapper hook useNotifications() który centralizuje logikę schedulowania, anulowania i obsługi uprawnień. Przypomnienia tworzone są przy dodawaniu eventu i aktualizowane przy edycji.

Stack technologiczny

FrameworkReact Native + Expo
LanguageTypeScript
StorageAsyncStorage + Firebase
Notificationsexpo-notifications
NavigationExpo Router