OldNews architektūra — kodėl offline-first
Techninis paaiškinimas: kodėl visa svarbi vartotojo informacija saugoma tavo telefone, kada backend reikalingas ir kur ribos.
OldNews architektūra remiasi vienu principu: tavo treniruotės — tavo duomenys. Kai atsisiunčiama iOS aplikacija, joje jau yra viskas, ko reikia treniruotis be interneto: programos, pratimai, kalendorius, progresas.
Techniškai tai reiškia, kad naudojame SwiftData (naują Apple duomenų bazių framework, gimusią ant SQLite) tavo iPhone. Kiekvienas įrašas apie treniruotę, kiekviena programa, kiekvienas pratimas gyvena lokaliai — šifruoti hardware, backup per iCloud (jei įjungei), niekada nesiunčiami mums.
Kada backend reikalingas? Trijose situacijose: (1) autentifikacija (magic link, Google Sign-In) — tik email saugomas serveryje; (2) programų dalinimasis marketplace — trenerio publikuota programa gyvena backend, kad kiti galėtų atsisiųsti; (3) email invitation per Resend.
Serveris — Node.js su Fastify framework ir PostgreSQL. Deploy ant Hostinger VPS Vokietijoje (ES teritorija — GDPR compliance). Visas kodas atviras architektūra apžvelgti — komandai, kuri kruopščiai peržiūri saugumą.
Kur ribos? Šiuo metu nesinchronizuojam duomenų tarp tavo iOS device (jei turi 2 iPhone — treniruotės liks pirmame). Tai spręsime ateityje per iCloud CoreData sync. Taip pat — dar nėra Android versijos (planuojame 2027 sezonui).
Kodėl ne visą duomenų bazę pakelti į cloud? Trys priežastys: greitis (treniruojiesi salėje be interneto — app turi veikti), privatumas (svoris, kūno mato duomenys nesiunčiami niekur), kaina (offline-first architektūra nekainuoja masiškai serverio; su realtime sync būtų dvigubai brangiau).
Ateityje architektūra plėsis: web dashboard treneriams (pilnas versijos praktikoje), Apple Watch companion app, ir — kai bus 1000+ MAU — Android versija. Bet pagrindinis principas nesikeis: tavo iOS aplikacija veiks offline.