
Platforma mea de coaching: programe, nutriție și check-in-uri pentru antrenorii online și clienții lor, într-o singură aplicație.
Prezentare
Voinic este produsul meu: o platformă de coaching care înlocuiește conversațiile de pe WhatsApp, tabelele și aplicațiile separate de urmărire dintre un antrenor online și clienții lui. Antrenorii construiesc programe și planuri alimentare; clienții își notează antrenamentele, mesele, obiceiurile și check-in-urile săptămânale; amândoi citesc aceeași cronologie. În română și engleză din prima zi.
Două roluri cu nevoi opuse împart același produs. Un antrenor cu mulți clienți trebuie să vadă dintr-o privire cine alunecă și de ce, iar un client aflat în mijlocul unui set are nevoie ca notarea să dureze câteva secunde. Și pentru că aplicația ține datele de antrenament, de corp și de nutriție ale oamenilor, fiecare citire și scriere trebuia limitată, demonstrabil, la cei care au voie să le vadă.
Provocare
Abordare
Un backend Supabase în care securitatea la nivel de rând este singura sursă de adevăr, o aplicație web Next.js care este produsul și o aplicație Expo pentru Android și iPhone, în dezvoltare, care refolosește citirile aplicației web printr-un API versionat în loc să le reimplementeze. Fiecare ecran este exersat pe fiecare rol, pe desktop și pe telefon, de o rulare automată în care un antrenor, clientul lui și un sportiv pe cont propriu folosesc aplicația unul împotriva celuilalt, rundă după rundă.
Aplicația, pe telefon
Ecrane reale din aplicația în funcțiune, cu conturi demo — un antrenor și clienții lui.

Antrenor · cine are nevoie de tine azi

Antrenor · un client, în context

Antrenor · construirea unui program

Client · azi

Client · notarea unui set

Client · progres
Site-ul public, așa cum e construit

Design și dezvoltare
- Un status pentru fiecare client, cu motivul scris clar
- Panoul antrenorului se deschide pe cine are nevoie de el azi: fiecare client are În grafic, Necesită atenție sau Necesită repornire, cu motivul scris dedesubt — un check-in ratat, nicio notare de opt zile — nu un scor de interpretat.
- Un set notat din trei atingeri
- Țintele sunt completate din programul antrenorului, cronometrul de pauză pornește singur, sesiunea anterioară stă lângă câmpuri, iar un record personal e semnalat în clipa în care e bătut.
- Ani de istoric importați, nu abandonați
- Un export CSV din Hevy, Strong, Fitbod, FitNotes sau dintr-un tabel se mută în Voinic: exercițiile sunt potrivite cu biblioteca, recordurile personale sunt recalculate, iar importul aceluiași fișier de două ori nu adaugă nimic.
Decizii tehnice
- Reguli de acces impuse și testate în baza de date
- Cine ce poate vedea e definit o singură dată, în securitatea la nivel de rând din Postgres, și verificat de suite pgTAP pe care CI le rulează pe o bază de date temporară, construită din fiecare migrare — nu lăsat pe seama fiecărui ecran care trebuie să-și scrie corect interogarea.
- Un singur backend pentru web și telefon
- Aplicația de telefon apelează un /api/v1 versionat din aplicația web, cu un token bearer, iar fiecare handler rulează citirile aplicației web sub aceleași reguli de securitate. API-ul doar crește: versiunile vechi ale aplicației rămân instalate luni întregi, așa că se adaugă câmpuri, dar nu se redenumesc și nu se șterg.
- Un mod demo eliminat pentru a păstra o singură cale de cod
- Un mod demo timpuriu ajunsese la 168 de ramificații în 37 de fișiere. A fost eliminat complet, astfel încât fiecare citire și scriere trece pe singura cale reală către baza de date reală, cu conturi de test în locul lui.
Rezultate
Performanță Lighthouse, desktop
95
Pagina principală voinic.fit, Lighthouse 12.8.2, presetarea desktop, 9 noiembrie 2026. Presetarea mobil a obținut 76 în aceeași zi, cu un Largest Contentful Paint de 6,1 s sub încetinire simulată — raportat aici, nu lăsat pe dinafară.
Accesibilitate · Bune practici · SEO
96 · 100 · 100
Aceleași rulări Lighthouse; toate cele trei scoruri au fost identice pe presetările desktop și mobil.
Cumulative Layout Shift
0
Măsurat pe ambele presetări: nimic de pe pagină nu se mișcă după ce a fost desenată.
Fișiere de teste automate
295
Numărate în repository pe 9 noiembrie 2026: 149 de fișiere de teste unitare și de componente, 111 fișiere de teste de bază de date (pgTAP) și 35 de scenarii end-to-end.
- Rol
- Produs, Design, Dezvoltare full-stack
- Stack
- Next.js, React, TypeScript, Supabase, Expo, Tailwind CSS
- An
- 2026
- Domeniu
- Platformă de coaching fitness