Ile razy zapomniałeś o voucherze zanim wygasł? Zwrotka pilnuje Twoich kodów — skanuj, śledź, używaj w odpowiednim momencie.
Jeden klik aparatem — kod dodany. Obsługa barcode i QR, automatyczne rozpoznawanie formatu. Zero ręcznego wpisywania.
Expo CameraStatus "Wygasa jutro" wyraźnie oznaczony kolorami i ikoną. Żaden kod nie przepadnie przez nieuwagę.
SQLite · ZustandIle zaoszczędziłeś łącznie? W którym sklepie najczęściej? Ranking sieci, historia, kwoty per sklep.
Reanimated · ZustandTryb pełnoekranowy z maksymalną jasnością — kod gotowy do zeskanowania przez kasę bez żadnych przeszkód.
Fullscreen · Brightness APIWszystkie dane lokalne. Zero serwera, zero chmury, zero rejestracji. Twoje kody zostają na Twoim telefonie.
Local-first · No BackendVouchery użyte i wygasłe trafiają do archiwum z pełnym filtrowaniem — porządek w portfelu, historia nie ginie.
Expo Router · Zustand
APK dostępne za darmo z GitHub Releases. Android 8.0+. Bez konta, bez subskrypcji, bez danych w chmurze.
Zbudowana na React Native + Expo,
zarządzanie stanem w Zustand,
dane lokalne w SQLite (Expo SQLite).
Zero backendu. Offline-first. Open source.
Deklaratywny UI w TypeScript. Każdy ekran to komponent funkcyjny reagujący na stan ze store'a Zustand.
Centralne zarządzanie stanem. Logika biznesowa i operacje na danych wyseparowane do store'ów. Reaktywność out-of-the-box.
Relacyjna baza danych SQLite na urządzeniu. Dane nie opuszczają telefonu. Repository pattern dla czystego API.
Obsługa aparatu i skanowania kodów bezpośrednio przez moduł Expo. Natywna wydajność i szybkość detekcji.
File-based routing — struktura folderów definiuje nawigację aplikacji. Type-safe links i obsługa deep-linków.
Zautomatyzowany proces budowania (EAS Build) i pełne typowanie kodu. Szybka iteracja dzięki Expo Go.
Nowoczesny UI oparty o komponenty funkcyjne i hooki. Stan zarządzany przez Zustand z automatyczną persystencją i selektorami dla optymalnej wydajności.
Lokalna baza danych SQLite (przez Expo SQLite). Warstwa repository abstrahuje operacje na bazie, udostępniając czyste async API dla store'ów.
Integracja z aparatem urządzenia. Szybka detekcja kodów kreskowych (CODE128, EAN) oraz kodów QR bezpośrednio w klatkach obrazu.
Wykorzystanie ekosystemu Expo do szybkiego rozwoju i stabilnych buildów. EAS Build pozwala na generowanie plików APK bezpośrednio w chmurze.
CameraX przekazuje klatki do ImageAnalysis pipeline
→Natywny moduł rozpoznaje kod kreskowy / QR
→Akcja addVoucher() aktualizuje stan w pamięci
→Repository zapisuje voucher w lokalnej bazie danych
→Komponenty rerenderują się automatycznie (Zustand hook)
Kod podzielony feature-by-feature. Każdy feature ma własne UI, ViewModel i Domain. Łatwe dodawanie nowych funkcji bez ruszania reszty kodu.
zwrotka-v2/ ├── src/ │ ├── app/ ← routing (expo-router) │ │ ├── (tabs)/ ← główne ekrany │ │ │ ├── index.tsx │ │ │ └── historia.tsx │ │ ├── scan.tsx ← skaner kamery │ │ └── _layout.tsx │ ├── db/ ← sqlite & repository │ │ ├── database.ts │ │ └── voucherRepository.ts │ ├── store/ ← zustand state │ │ └── voucherStore.ts │ ├── theme/ ← design tokens │ └── utils/ ├── app.json ← konfiguracja expo ├── package.json └── tsconfig.json
React Native · Expo · TypeScript · Zustand · SQLite