Skip to content
Worldmade Studio
ro / en
Proiect livePlatformă de coaching fitness · 2026
Pagina principală Voinic în tema luminoasă: sigla aurie Voinic, titlul „Your coaching, finally in one app.”, doi sportivi cu gantere și kettlebell-uri și patru carduri pentru Train, Plan, Eat și Progress.

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.

  • Panoul antrenorului pe telefon: „Who needs you today”, cu numărul de clienți activi, check-in-uri de revizuit, mesaje necitite și clienți care au nevoie de repornire, și Radu Pop marcat „Needs a Restart”, cu motivul.

    Antrenor · cine are nevoie de tine azi

  • Pagina unui client, văzută de antrenor: Maria Ionescu, „On Track”, cu un scor de fitness de 60 împărțit în încărcare, consecvență, frecvență și volum, și un rezumat săptămânal.

    Antrenor · un client, în context

  • Constructorul de programe: Hypertrophy Upper/Lower, publicat pentru Maria Ionescu, cu ziua Upper A și un rând de exercițiu cu seturi, repetări, RIR, greutate și pauză.

    Antrenor · construirea unui program

  • Ecranul „Today” al clientului: un scor săptămânal de 85%, „On Track”, cu progresul la antrenamente, nutriție, obiceiuri și check-in, o bandă cu zilele săptămânii și scorul de fitness.

    Client · azi

  • Notarea seturilor la îndreptări cu bara: indicația antrenorului, seturile din sesiunea anterioară, o greutate sugerată și câmpuri pentru kilograme, repetări, RIR și pauză.

    Client · notarea unui set

  • Ecranul „Progress” al clientului pe 30 de zile: greutatea curentă, sesiunile notate, volumul total și recordurile personale, cu observații scrise dedesubt.

    Client · progres

Site-ul public, așa cum e construit

Secțiunea cu două părți din pagina principală Voinic: „For you” enumeră notarea unui set din trei atingeri, nutriția fără tabele, progresul, seriile și rețetele; „For coaches” enumeră statusul clienților, construirea o singură dată pentru orice dispozitiv și feedbackul în context.

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
Vezi proiectul live →