aplikacja treningowa projekt własny od 2026

GymFlow

Plan treningowy układa się przy biurku, a wykonuje pod sztangą. GymFlow to dwie strony tej samej aplikacji: panel, w którym plan powstaje, i telefon, który przez niego prowadzi.

martwy ciąg · trening 1 z bloku

4 × 6  ·  70  /  100  /  120  /  125 kg

Tak wygląda seria w rzeczywistości: pierwsza rozgrzewkowa, kolejne narastają. Każda ma własne obciążenie i własne powtórzenia — i to jest norma, nie wyjątek. Sporo aplikacji trzyma jedno obciążenie na ćwiczenie; tutaj ten zapis wymusił przebudowę modelu danych.

zapis

Zapis, który rozumie sztangę

Plan to nie lista ćwiczeń, tylko przebieg w czasie. GymFlow trzyma go jako kroki: praca, przerwa, praca — dzięki temu mieści zarówno zwykłe cztery serie, jak i protokół „minuta pracy, dwie minuty przerwy" albo piętnaście powtórzeń na każdą rękę osobno.

Na wierzchu tego siedzi tabela serii, bo tak się trening zapisuje w zeszycie. Gdy przebieg da się opisać tabelą — edytor pokazuje tabelę. Gdy się nie da, pokazuje pełną listę kroków i niczego nie przybliża: przybliżenie wyglądałoby poprawnie, a pierwszy zapis po cichu skasowałby różnicę.

Blok martwego ciągu — cztery treningi, progresja każdego parametru
TreningSeriePowt.Obciążenia (kg)Szczyt
14670 · 100 · 120 · 125125
24570 · 110 · 125 · 130130
34370 · 115 · 130 · 135135
41 + 35, potem 170 · 120 · 135 · 140140

Obciążenie liczy się jako rzeczywiste kilogramy w ruchu. Przy podciąganiu z dodatkowym obciążeniem to ułamek masy ciała plus to, co wisi na pasie — inaczej objętość treningowa, czyli obciążenie razy powtórzenia, byłaby fikcją.

przerwa

Przerwa jest częścią treningu

Na siłowni telefon nie wraca do kieszeni — leży na ławce i musi być czytelny z odległości. Dlatego przerwa to duże koło, które ubywa, a nie liczba w narożniku.

Kolor zmienia się z zielonego na pomarańczowy przy dwudziestu sekundach i na czerwony przy pięciu. Koniec potwierdza haptyka i dźwięk, a trzy ostatnie sekundy są odliczane stuknięciem, żeby nie zaskakiwał. Ekran nie gaśnie przez cały czas odliczania.

To jest tarcza z aplikacji, a nie obrazek — kliknij ją, żeby ruszyła.

dwie strony

Panel układa, telefon prowadzi

Ta sama aplikacja w dwóch postaciach, bo to dwie różne sytuacje: plan powstaje na spokojnie przy klawiaturze, a wykonanie odbywa się w ruchu, jedną ręką, między seriami.

Telefon · trenujący

Prowadzenie treningu

  • Trening krok po kroku według wybranego planu, ze stoperem przerw
  • Korekta powtórzeń i obciążenia przed zapisem — plan jest propozycją, nie wyrokiem
  • Dodatkowa seria, gdy zostały siły; pominięcie serii albo całego ćwiczenia
  • Karnety: kilka równolegle, przycisk „Byłem", stan wejść i historia wizyt
  • Pomiary sylwetki i historia treningów z podpisem, kto ją ewidencjonował

Panel · trener

Układanie planu

  • Słownik ćwiczeń z wariantami — martwy ciąg ma RDL i sumo, każdy z własnymi mięśniami
  • Edytor planu: tabela serii albo własny przebieg, kolejność ćwiczeń przeciąganiem
  • Plany wzorcowe do skopiowania konkretnej osobie
  • Podopieczni — plany, pomiary, karnet i historia każdej osoby w jednym widoku
  • Prowadzenie treningu podopiecznego z własnego urządzenia

Dostęp do czyichkolwiek danych wynika wyłącznie z zaakceptowanej współpracy, nigdy z roli konta — ta sama osoba bywa trenerem w jednym powiązaniu i podopiecznym w drugim. Ludzi szuka się po nicku, nie po adresie e-mail, żeby nie dało się sprawdzać, kto jest zarejestrowany.

metoda

Decyzje biorą się z siłowni, nie z przeglądu kodu

Każda poprawka w tym projekcie ma źródło w konkretnym treningu. Obciążenie na serię weszło, bo nie dało się zapisać rozgrzewki przed ciężką serią. Tarcza przerwy — bo liczba w narożniku była nieczytelna z ławki. Dodatkowa seria pojawia się po ostatniej, bo wtedy właśnie podejmuje się decyzję.

„Uwaga do dodatkowej serii: w praktyce decyzję podejmuje się po wykonaniu ostatniej, gdy zawodnik ma jeszcze moc."

uwaga z testu na siłowni

Trzy dokumenty prowadzą projekt i są aktualizowane razem z kodem: co i dlaczego budujemy, jak to jest zbudowane oraz rozbicie na zadania. Odrzucone warianty zapisuje się z powodem odrzucenia — inaczej wracają na następnej sesji. Wszystko, także kod i komentarze, jest po polsku.

budowa

Jak to jest zbudowane

  • KlientFlutter — jedna baza kodu na iOS, Androida i przeglądarkę
  • BackendServerpod 3.4 w Darcie, czyli ten sam język po obu stronach; modele i klient generowane z definicji
  • BazaPostgreSQL z migracjami wersjonowanymi w repozytorium
  • HostingVPS z Debianem, kontenery Docker, Caddy z certyfikatem Let's Encrypt odnawianym samoczynnie
  • WdrożenieGitHub Actions — analiza i testy przy każdym pushu, obraz publikowany do rejestru
  • LogowanieKonto na e-mail z kodem weryfikacyjnym; poczta przez Resend, dane w UE

stan

Gdzie to jest dzisiaj

Projekt jednoosobowy, w budowie i używany na bieżąco — poniżej uczciwie, co działa, a co nie.

  • działaKarnety, wizyty i domyślne terminy — na produkcji, w codziennym użyciu
  • działaSłownik ćwiczeń, edytor planów i wykonanie treningu ze stoperem przerw
  • działaWspółpraca trener–podopieczny, pomiary, historia treningów
  • w robocieSuperserie oraz praca na czas odmierzana zegarem zamiast wpisywana z ręki
  • przed namiTryb offline — sama obecność telefonu ma wystarczać do treningu, bez zasięgu w piwnicy
  • przed namiStatystyki i objętość treningowa w czasie; dystrybucja na iOS przez TestFlight