Tema
/
Mobiliosios programėlės KOTLIN
Pamoka 14 / 14 Baigiamasis: Pica ~60 min
📖 Teorija

Ką pastatei — Pica architektūros stuburas

Sveikinu — pastatei pilną, į gamybą panašią programėlę. Prieš sujungdami viską, pažiūrėk į tai, ką sukūrei. Pica nėra atsitiktinis ekranų rinkinys — tai sluoksniuota architektūra, kur kiekviena pamoka pridėjo vieną sluoksnį:

┌─────────────────────────────────────────────┐
│  UI (Compose)        MenuScreen, CartScreen, │  ← 2, 3, 4
│                      LoginScreen, ScanScreen │
├─────────────────────────────────────────────┤
│  Presentation        ViewModel + Event +     │  ← 3 (MVI)
│  (MVI)               UiState (StateFlow)      │
├─────────────────────────────────────────────┤
│  Domain              MenuItem, CartItem,      │
│                      Order                    │
├─────────────────────────────────────────────┤
│  Data (repository)   MenuRepository,          │  ← 5, 7, 8a, 9
│                      AuthRepository, Order... │
├──────────────┬──────────────┬────────────────┤
│  Network      │  Cache        │  Auth          │
│  Retrofit(5)  │  Room(7)      │  Token(8a)     │
│  Interceptor  │               │  Stripe(11)    │
│  (9)          │               │  QR(10)        │
└──────────────┴──────────────┴────────────────┘
        Viską sujungia: Koin DI (6)

Kiekviena pamoka → vienas sluoksnis ar galimybė:

Pamoka Ką pridėjo
1–2 Compose UI, statinis meniu
3 MVI būsena (krepšelis)
4 Navigacija (Nav3)
5 Retrofit — meniu iš serverio
6 Koin DI — sutvarko jungimą
7 Room talpykla — meniu offline
8a Autentifikacija — sesijos raktas
9 Autentifikuotos užklausos — užsakymai
10 QR — staliuko kontekstas
11 Stripe — apmokėjimas
12 Išleidimas — pasirašymas, R8

Svarbiausia — kryptys: UI priklauso nuo presentation, presentation nuo data, data nuo tinklo/talpyklos. Niekada atvirkščiai. Todėl gali pakeisti Retrofit kitu klientu ar Room kita talpykla, ir UI net nesužinos. Būtent tai ir yra „gera architektūra" — ne dėl grožio, o dėl atsparumo pokyčiams.