>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
Python

Jak przestałem płacić za subskrypcje aplikacji fitness i wdrożyłem wger na własnym serwerze

wger logo

Mam stary nawyk: gdy tylko zaczynam chodzić na siłownię, mój telefon zapełnia się tuzinem aplikacji fitness. Na początku wszystko idzie gładko, ale tydzień później wita cię paywall. Chcesz stworzyć złożony program z progresją obciążenia? Płać miesięcznie. Chcesz śledzić kalorie bez nachalnych reklam wątpliwych suplementów? Płać ponownie. Dodaj do tego zamknięte formaty własnościowe, które uniemożliwiają prawidłowy eksport danych, a chęć prowadzenia dziennika szybko znika.

Pewnego czasu natknąłem się na projekt open-source o nazwie wger (wymawiany mniej więcej jako „wi-dżer”). To w pełni funkcjonalny menedżer treningów i odżywiania hostowany na własnym serwerze, napisany w Pythonie i Django. Projekt istnieje na GitHubie od 2013 roku, zgromadził ponad 6,6 tysiąca gwiazdek i przekształcił się w dojrzałą platformę z aplikacjami mobilnymi i otwartym REST API.

Pobierz w Google Play Pobierz w App Store Pobierz w F-Droid Pobierz w Flathub

Co potrafi system

Jeśli chodzi o funkcjonalność, wger pokrywa praktycznie wszystkie potrzeby osoby regularnie ćwiczącej i śledzącej swoją sprawność fizyczną.

Konstruktor treningów i progresja obciążenia

Tutaj możesz tworzyć programy o dowolnej złożoności: od prostych podziałów treningowych po periodyzację z precyzyjnymi zasadami progresji obciążenia. Baza ćwiczeń jest dostępna od razu, z obrazkami, opisami techniki i podziałem na grupy mięśniowe. Jeśli brakuje konkretnej maszyny, możesz łatwo dodać ją samodzielnie lub przesłać do społeczności.

Śledzenie odżywiania i integracja z Open Food Facts

Zamiast ręcznie wprowadzać informacje o wartościach odżywczych każdego jabłka czy piersi z kurczaka, wger pobiera bazę produktów z Open Food Facts. To ogromna otwarta baza danych produktów spożywczych z całego świata. Możesz budować własne plany posiłków, śledzić makroskładniki (białka, tłuszcze, węglowodany) i dzienne spożycie kalorii.

Pomiary i galeria postępów

Oprócz podstawowej masy ciała, system przechowuje historię obwodów talii, bicepsa, procentowej zawartości tłuszczu w organizmie oraz dowolnych niestandardowych metryk. Możesz również przesyłać zdjęcia postępów według daty. Ponieważ serwer znajduje się pod twoją kontrolą, prywatne zdjęcia nie wyciekną do zewnętrznych chmur.

Klienci mobilni i desktopowi

Zwykle projekty open-source takie jak ten mają tylko interfejs webowy, co jest niewygodne podczas otwierania na smartfonie przy siedzeniu na ławce do przysiadów. wger posiada oficjalną aplikację Flutter. Jest zbudowana dla Androida (w tym Google Play i F-Droid), iOS oraz Flathub dla desktopowego Linuksa. Klient łączy się bezpośrednio z twoją instancją przez API.

Pod maską

Architektura projektu wygląda klasycznie dla niezawodnych usług internetowych:

  • Backend napisany w Django (Python).
  • Baza danych: PostgreSQL lub SQLite (do szybkich testów).
  • Frontend wykorzystuje standardowe szablony Django plus REST API zbudowane na Django REST Framework.
  • Aplikacje mobilne napisane w Flutterze, kod źródłowy znajduje się w oddzielnych repozytoriach w ramach organizacji.
  • Licencja: AGPL-3.0.

Posiadanie pełnego REST API oznacza, że możesz automatyzować logowanie treningów przez webhooki, podłączać inteligentne wagi lub pisać własne skrypty Python kompilujące roczne statystyki i wysyłające ładny raport do twojego komunikatora.

Szybki start

Wdrożenie własnej instancji jest najłatwiejsze przez Docker Compose. Zespół projektu prowadzi oddzielne repozytorium ze wszystkimi gotowymi konfiguracjami.

Krok pierwszy. Sklonuj repozytorium z plikami Docker:

git clone https://github.com/wger-project/docker.git wger-docker
cd wger-docker

Krok drugi. Uruchom stos kontenerów:

docker compose up -d

Po uruchomieniu interfejs webowy będzie dostępny na lokalnym porcie (domyślnie http://localhost:80). Przy pierwszym logowaniu system poprosi o utworzenie konta administratora i załadowanie podstawowych zestawów ćwiczeń i składników.

Jeśli konfigurowanie własnego serwera wydaje się zbyt kłopotliwe, autorzy mają publiczny darmowy serwer pod adresem wger.de. Możesz się tam zarejestrować, przetestować interfejs i dopiero wtedy zdecydować, czy potrzebujesz własnego hostingu.

Dla kogo to jest

Projekt jest idealny dla każdego, kto:

  • Chce przechowywać dane o zdrowiu i treningach na własnym sprzęcie.
  • Jest zmęczony niekończącymi się subskrypcjami w komercyjnych aplikacjach takich jak MyFitnessPal czy Hevy.
  • Szuka gotowego backendu dla projektu fitness lub siłowni (wger ma podstawowy tryb wielu użytkowników z kontrolą dostępu opartą na rolach dla trenerów i klientów).

Wadą jest to, że interfejs webowy wygląda w niektórych miejscach trochę przestarzale, a aplikacja mobilna czasami ustępuje płynności płatnym alternatywom. Ale niezależność od zewnętrznych chmur i otwarte API rekompensują to z nawiązką. Jeśli szukasz czegoś na domowy serwer lub Raspberry Pi, wger zdecydowanie zasługuje na miejsce w twoim docker-compose.yml.

Powiązane projekty