Рефакторизация структуры кода для улучшения читаемости и удобства сопровождения.

This commit is contained in:
2026-04-30 07:41:41 +03:00
parent eec534760e
commit 89b17ea2b2
1406 changed files with 38483 additions and 3 deletions
+27
View File
@@ -0,0 +1,27 @@
upstream wger {
server wger_web_1:8000;
}
server {
listen 80;
location / {
proxy_pass http://wger;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host:$server_port;
proxy_redirect off;
}
location /static/ {
alias /wger/static/;
}
location /media/ {
alias /wger/media/;
}
client_max_body_size 100M;
}
+97
View File
@@ -0,0 +1,97 @@
# Часовой пояс сервера, список возможных имен:
# https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TIME_ZONE=Europe/Berlin
TZ=Europe/Berlin
#
# Приложение
WGER_INSTANCE=https://wger.de
ALLOW_REGISTRATION=True
ALLOW_GUEST_USERS=True
ALLOW_UPLOAD_VIDEOS=True
MIN_ACCOUNT_AGE_TO_TRUST=21
SYNC_EXERCISES_CELERY=True
SYNC_EXERCISE_IMAGES_CELERY=True
SYNC_EXERCISE_VIDEOS_CELERY=True
SYNC_INGREDIENTS_CELERY=True
DOWNLOAD_INGREDIENTS_FROM=WGER
USE_CELERY=True
#
# Сельдерей
CELERY_BROKER=redis://wger_cache_1:6379/2
CELERY_BACKEND=redis://wger_cache_1:6379/2
CELERY_FLOWER_PASSWORD=adminadmin
#
# База данных
DJANGO_DB_ENGINE=django.db.backends.postgresql
DJANGO_DB_DATABASE=wger
DJANGO_DB_USER=wger
DJANGO_DB_PASSWORD=wger
DJANGO_DB_HOST=wger_db_1
DJANGO_DB_PORT=5432
DJANGO_PERFORM_MIGRATIONS=True
#
# Кэш
DJANGO_CACHE_BACKEND=django_redis.cache.RedisCache
DJANGO_CACHE_LOCATION=redis://wger_cache_1:6379/1
DJANGO_CACHE_TIMEOUT=1296000
DJANGO_CACHE_CLIENT_CLASS=django_redis.client.DefaultClient
#
# Атаки грубой силы при входе в систему
AXES_ENABLED=True
AXES_FAILURE_LIMIT=10
AXES_COOLOFF_TIME=30
AXES_HANDLER=axes.handlers.cache.AxesCacheHandler
AXES_LOCKOUT_PARAMETERS=ip_address
AXES_IPWARE_PROXY_COUNT=1
AXES_IPWARE_META_PRECEDENCE_ORDER=HTTP_X_FORWARDED_FOR,REMOTE_ADDR
#
# Другие
DJANGO_DEBUG=False
WGER_USE_GUNICORN=True
EXERCISE_CACHE_TTL=18000
#
# JWT авторизация
ACCESS_TOKEN_LIFETIME=10
REFRESH_TOKEN_LIFETIME=24
#
# Аутентификация прокси-сервера — оставьте пустым, если вы не используете это.
AUTH_PROXY_HEADER=''
AUTH_PROXY_TRUSTED_IPS=''
AUTH_PROXY_CREATE_UNKNOWN_USER=False
AUTH_PROXY_USER_EMAIL_HEADER=''
AUTH_PROXY_USER_NAME_HEADER=''
#
# Уровень журнала
LOG_LEVEL_PYTHON=INFO
#
# Рекапча (отключена)
USE_RECAPTCHA=False
#
# Очистить флаг статических файлов
DJANGO_CLEAR_STATIC_FIRST=False
#
# Электронная почта
FROM_EMAIL='wger Workout Manager <wger@example.com>'
#
# Платформа отдыха Джанго
NUMBER_OF_PROXIES=1
#
# Единорог
GUNICORN_CMD_ARGS="--workers 3 --threads 2 --worker-class gthread --proxy-protocol True --timeout 240"
+1
View File
@@ -0,0 +1 @@
+1
View File
@@ -0,0 +1 @@
+1
View File
@@ -0,0 +1 @@
+1
View File
@@ -0,0 +1 @@
+1
View File
@@ -0,0 +1 @@
+57
View File
@@ -0,0 +1,57 @@
manifestVersion: 1
id: wger
name: wger
tagline: Фитнес-трекер для тренировок и питания.
category: files
version: "2.5"
port: 8450
description: >-
📈 wger ​​— это мощное и гибкое программное обеспечение для управления фитнесом с открытым исходным кодом, предназначенное для помощи пользователям в планировании, отслеживании и оптимизации тренировок, питания и общего прогресса в фитнесе. Независимо от того, являетесь ли вы частным лицом, стремящимся повысить эффективность тренировок, личным тренером, обслуживающим нескольких клиентов, или владельцем тренажерного зала, ищущим цифровое решение для оптимизации программирования тренировок, wger ​​предоставляет многофункциональную платформу, адаптированную к различным потребностям фитнеса.
По своей сути wger ​​предлагает обширную базу данных упражнений, которая включает подробные инструкции, изображения и классификации групп мышц. Пользователи могут создавать полностью индивидуальные программы тренировок, выбирая из уже существующих упражнений или добавляя свои собственные. Каждый план тренировки может быть структурирован с использованием подходов, повторений, времени отдыха и стратегий прогресса, что позволяет точно корректировать тренировки с течением времени. Кроме того, программное обеспечение включает в себя систему отслеживания тренировок, которая регистрирует выполненные упражнения и предоставляет историческую информацию о тенденциях производительности.
Помимо обучения, wger ​​включает в себя комплексный модуль планирования питания. Пользователи могут регистрировать приемы пищи, рассчитывать потребление калорий и отслеживать распределение макронутриентов, чтобы убедиться, что их диета соответствует их целям в фитнесе. Интегрированная база данных продуктов питания упрощает регистрацию приемов пищи, предоставляя информацию о питательной ценности широкого спектра ингредиентов, а пользователи также могут добавлять собственные записи о продуктах питания.
Для поддержки долгосрочного мониторинга прогресса wger ​​включает в себя инструменты визуализации, такие как диаграммы отслеживания веса, графики эффективности тренировок и статистические сводки. Эти функции помогают пользователям определять тенденции, ставить реалистичные цели и сохранять мотивацию на протяжении всего пути к фитнесу.
Одним из выдающихся аспектов wger ​​является его многопользовательская функциональность, что делает его идеальным инструментом для тренеров, тренеров и спортивных залов. Платформа позволяет использовать различные роли пользователей, что позволяет тренерам назначать планы тренировок и эффективно отслеживать прогресс клиентов.
Будучи проектом с открытым исходным кодом, wger ​​постоянно развивается, и активное сообщество вносит новые функции и улучшения. Его гибкость, обширный набор функций и упор на настройку делают его ценным инструментом для всех, кто серьезно занимается фитнесом, будь то новички, опытные спортсмены или профессионалы в области фитнеса.
developer: wger Project
website: https://wger.de/
submitter: dennysubke
submission: https://github.com/getumbrel/dfwebos-apps/pull/3247
repo: https://github.com/wger-project/wger
support: https://github.com/wger-project/wger/issues
gallery:
- 1.jpg
- 2.jpg
- 3.jpg
- 4.jpg
- 5.jpg
- 6.jpg
releaseNotes: >-
Ключевые моменты этого выпуска включают в себя:
- Улучшена синхронизация ингредиентов с использованием предварительно созданного дампа базы данных для более быстрой и эффективной обработки.
- Поддержка размера порции ингредиентов, позволяющая регистрировать еду в таких единицах, как «1 чашка» или «1 порция».
- Размеры порций автоматически импортируются из Open Food Facts.
- В ингредиенты добавлены поля для веганов, вегетарианцев и нутрикоров.
- Добавлен «разминка» как новый тип сета.
- Автоматическое считывание даты из загруженных изображений галереи.
- Варианты упражнений перемещены в поле непосредственно на модели упражнения.
- Установите языковые предпочтения интерфейс.
- Поддержка таймера для упражнений на время
- Несколько записей измерений в день
- Возможность установить язык интерфейс для каждого пользователя.
Полные примечания к выпуску доступны по адресу https://github.com/wger-project/wger/releases.
dependencies: []
path: ""
defaultUsername: ""
defaultPassword: ""
+113
View File
@@ -0,0 +1,113 @@
version: '3.7'
services:
app_proxy:
environment:
APP_HOST: wger_nginx_1
APP_PORT: 80
web:
image: wger/server:2.5@sha256:1cac2c62b8d85b54dab16291df802a1cdbf66828201b8df6104db0400320f0df
user: "1000:1000"
depends_on:
db:
condition: service_healthy
cache:
condition: service_healthy
environment:
SECRET_KEY: ${APP_SEED}
SIGNING_KEY: ${APP_SEED}
CSRF_TRUSTED_ORIGINS: http://${DEVICE_DOMAIN_NAME}:${APP_WGER_PORT},http://${DEVICE_HOSTNAME}:${APP_WGER_PORT},${APP_WGER_LOCAL_URLS}
SITE_URL: http://${DEVICE_DOMAIN_NAME}:8450
MEDIA_URL: http://${DEVICE_DOMAIN_NAME}:8450/media/
env_file:
- ${APP_DATA_DIR}/config/prod.env
volumes:
- ${APP_DATA_DIR}/data/static:/home/wger/static
- ${APP_DATA_DIR}/data/media:/home/wger/media
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:8000
interval: 10s
timeout: 5s
start_period: 300s
retries: 5
restart: on-failure
nginx:
image: nginx:alpine3.22@sha256:d67ea0d64d518b1bb04acde3b00f722ac3e9764b3209a9b0a98924ba35e4b779
depends_on:
- web
volumes:
- ${APP_DATA_DIR}/config/nginx.conf:/etc/nginx/conf.d/default.conf:ro
- ${APP_DATA_DIR}/data/static:/wger/static:ro
- ${APP_DATA_DIR}/data/media:/wger/media:ro
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://127.0.0.1:80/"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: on-failure
db:
image: postgres:17.5-alpine@sha256:6567bca8d7bc8c82c5922425a0baee57be8402df92bae5eacad5f01ae9544daa
user: "1000:1000"
environment:
POSTGRES_USER: wger
POSTGRES_PASSWORD: wger
POSTGRES_DB: wger
TZ: Europe/Berlin
volumes:
- ${APP_DATA_DIR}/data/postgres-data:/var/lib/postgresql/data/
healthcheck:
test: pg_isready -U wger
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: on-failure
cache:
image: redis:8.0.3-alpine@sha256:25c0ae32c6c2301798579f5944af53729766a18eff5660bbef196fc2e6214a9c
user: "1000:1000"
volumes:
- ${APP_DATA_DIR}/data/redis-data:/data
healthcheck:
test: redis-cli ping
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: on-failure
celery_worker:
image: wger/server:2.5@sha256:1cac2c62b8d85b54dab16291df802a1cdbf66828201b8df6104db0400320f0df
user: "1000:1000"
command: /start-worker
env_file:
- ${APP_DATA_DIR}/config/prod.env
volumes:
- ${APP_DATA_DIR}/data/media:/home/wger/media
depends_on:
web:
condition: service_healthy
healthcheck:
test: celery -A wger inspect ping
interval: 10s
timeout: 5s
retries: 5
start_period: 30s
restart: on-failure
celery_beat:
image: wger/server:2.5@sha256:1cac2c62b8d85b54dab16291df802a1cdbf66828201b8df6104db0400320f0df
user: "1000:1000"
command: /start-beat
volumes:
- ${APP_DATA_DIR}/data/celery-beat:${APP_DATA_DIR}/beat/
env_file:
- ${APP_DATA_DIR}/config/prod.env
depends_on:
celery_worker:
condition: service_healthy
restart: on-failure
+16
View File
@@ -0,0 +1,16 @@
export APP_WGER_PORT="8450"
local_ips=$(hostname --all-ip-addresses 2> /dev/null) || local_ips=""
export APP_WGER_LOCAL_IPS="${local_ips}"
# Создайте URLs с http:// и портом, разделенными запятыми.
ips_with_port=$(for ip in $local_ips; do
# Оберните адреса IPv6 в []
if [[ "$ip" == *:* ]]; then
echo -n "http://[$ip]:$APP_WGER_PORT,"
else
echo -n "http://$ip:$APP_WGER_PORT,"
fi
done | sed 's/,$//')
export APP_WGER_LOCAL_URLS="${ips_with_port}"