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ę.
| Trening | Serie | Powt. | Obciążenia (kg) | Szczyt |
|---|---|---|---|---|
| 1 | 4 | 6 | 70 · 100 · 120 · 125 | 125 |
| 2 | 4 | 5 | 70 · 110 · 125 · 130 | 130 |
| 3 | 4 | 3 | 70 · 115 · 130 · 135 | 135 |
| 4 | 1 + 3 | 5, potem 1 | 70 · 120 · 135 · 140 | 140 |
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