Workout Logger
Veb aplikacija za zapisivanje treninga bazirana na tekstu, sa pristupačnim GUI-jem. Workout logovi mogu biti ili backup-ovani od strane korisnika (u Excel tablici), ili kao tekst. Dodatno, sistem može pružiti cloud backup.
(Ovaj sadržaj preveden na Srpski korištenjem vještačke inteligencije)
Sveska i olovka bi pružila bolje UX, ali nisu lako da se nose u teretani, tako da ova webapp omogućava skladištenje logova na telefonu, i export treninga drugde, kao tekst.
- Vaši podaci su lokalni - sa periodičnim sinhronizacijom ka vašem ličnom logu, ili cloud-u.
- Instalirano jednom, nikada ne treba internet ponovo.
- VI definišete vežbanja, i imate moć da kontrolišete svoje podatke, da ponovo koristite podatke kao šablone, itd.
Kome je ovo namenjeno?
- Pravi jedan trening, exportuje ga u CSV, pa Google Sheets. Mislim da bi neki korisnici to voleli. Ni ne moraju da gledaju log unutar aplikacije.
- Pravi jedan trening, exportuje kao tekst, i snima u fajl. Ovo sam bio ja, neko vreme.
- Korisnici kojima nije bitno, koji žele MENI da čuvam, za njih. Na bilo koji način koji ja nađem najjeftiniji i siguran.
- Korisnici 1 i 2, koji mogu imati veliki log, i odluče da ga uvozu, i onda koriste feature kao:
- pamteći uobičajena vežbanja
- uzmu prethodni trening kao šablon
- Snimaju šablone? Gde? Kao šta podatke? Samo prazan trening?
Tieri
Demo dozvoljava:
- Pravi trening
- Vidi log
- Klikni export, ali razume da nije dostupno! Puni korisnici dozvoljavaju:
- Čuvanje loga u DB.
- Export celog loga, ili treninga, kao tekst (u različitim formatima), CSV (za excel, google sheets).
- Pamćenje uobičajenih vežbanja iz našeg loga, i slanje u dropdown-u.
- Uzima prethodni trening kao šablon, prazni ga, i koristi.
- Snima šablone. -> "Snimljeni treningi". Mogu biti imenovani.
- Exportuje nedelju kao nedeljni program.
Aplikacioni tieri
- Demo -> Samo dummy ponašanje.
- Lični Backup - Jednoplaćanje, jer je 100% upotrebljivo offline. Instaliraj PWA sa magic linkom. (Pratim ga u bazi podataka)
- Cloud Backup. Zahteva trajni JWT na strani klijenta, pošto korisnik može želeti da backupuje u bilo koje vreme. Takođe praćen u bazi podataka.
Arhitektura
- Klijent = Vanilla JS. Progressive Web Application. Single Page Application, čuvajući podatke u IndexedDB-a i periodično sinhronizujući ka spolja - cloud ili ne.
- Host = Cloudflare pages ili VPS
- Server = Fastify
- Persistentnost = PostgresSQL
- Jedan server ili više?
Lični backup
- Offline prvi PWA
- Autentifikacioni server. Ili možda, potreban samo za instalaciju?
- Import/Export CSV ili txt.
Cloud Backup
- Zahteva konstantnu autentifikaciju?
Napomena
- Tekstualni importovi bi mogli koristiti regex, i možemo koristiti taj regex za brzu validaciju.
Persistentnost
- Browser indexedDB dozvoljava 100e Megabajta importa
- Workout log u indexedDB-u radi default. Ali je fundamentalno transient. Korisnici treba da to razumeju.
- Opcija se nudi korisnicima koji žele backup-ove.
- Svaki drugi "pametni" feature, radi sa podacima u IndexedDB.
- DexieCloud dozvoljava da se IndexedDB isprazni.
- Supabase je veći.
- IndexedDB ima "synced" zastavicu, na svakom "workout" objektu, koja se ignoriše pri exportu u txt, ili csv, ali je važna za čuvanje u cloudu.
Tieri
| Status Icon | Label | What it means |
|---|---|---|
| 🟢 | Storage: Protected | persist() was granted. The OS won't touch it. |
| 🟡 | Storage: Standard | Data is safe, but the OS might clear it if the phone gets full. |
| 🔴 | Storage: Low Space | The device is almost full. Data is at risk. |
NAJPRVI NAPRAVI APLIKACIJU OFFLINE
- Mislim, ovo je korisno čak i za aplikacije za terenski rad + enterprise podatke.