Stridetober 🍂 Walk it
Oct 4 – Oct 31. Most total steps is crowned THE OCTOBER STEP CHAMPION on November 1 — top three split the pot 50/30/20.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Апгрейд — программа тренировок: PWA, офлайн, журнал, база упражнений
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Личное веб-приложение с программой силовых тренировок v3: 2–3 тренировки в неделю, режимы на 60, 90 и 120 минут, три блока по 5 недель, журнал подходов и замеров, база из 1324 упражнений. Работает офлайн, ставится на телефон как приложение и синхронизирует данные через Neon (Postgres + Neon Auth + Neon Function).
Дни тренировок выбираешь сам, неделя программы закрывается по выполнению, циклом нагрузки можно управлять вручную. В журнале — графики прогресса, объёма и замеров. Данные выгружаются для анализа агентом, а его корректировки программы импортируются обратно с предпросмотром. Что дальше — в ROADMAP.md.
docs/ готовое приложение — его раздаёт GitHub Pages
index.html оболочка
css/app.css стили (светлая и тёмная темы)
js/store.js хранение на устройстве (localStorage) + хуки для синхронизации
js/config.js адрес API (сгенерировано из src/app-config.json)
js/program.js программа + шаги из базы упражнений (сгенерировано)
js/sync.js вход по коду из письма и синхронизация с базой
js/charts.js графики (SVG без библиотек)
js/plan.js правки программы: замены, порядок, добавленные упражнения (без DOM)
js/app.js интерфейс
data/program.json программа в JSON — для будущего бэкенда
data/exercises-ru.json база упражнений (выжимка exercises-dataset)
sw.js service worker: офлайн и обновления
manifest.webmanifest манифест PWA
src/ исходники
data.js публичная программа: упражнения, блоки, тренировки, тексты, источники
ds-map.json связь упражнений программы с базой exercises-dataset
ds-names-ru.json русские названия всех 1324 упражнений базы (id → название; сборка проверяет полноту)
app-config.json адрес Neon Function
app.js, plan.js, store.js, sync.js, charts.js, style.css, index.tpl.html, sw.tpl.js, manifest.webmanifest, icons/
backend/ Neon Function (TypeScript) и neon.ts
build.py сборка src/ → docs/
ROADMAP.md план развития и форматы данных
private/ личная версия программы — в git не попадает (см. ниже)
git clone --depth 1 https://github.com/hasaneyldrm/exercises-dataset vendor/exercises-dataset
python3 build.py # нужны Python 3 и Node.js
Каждая сборка получает новую версию: установленное приложение покажет «Доступна новая версия» и обновится одной кнопкой.
localStorage (префикс upg3:), поэтому приложение работает офлайн и без входа.localStorage (префикс upg3~) и ходят к функции в заголовках — сторонние cookie не нужны, поэтому вход держится и в PWA на iPhone.plan) — целиком. Конфликты решает время изменения записи.app.members; почты из MEMBER_EMAILS добавляются туда при первом входе.plan.s), упражнения из базы — в plan.x; неизменённые тренировки берутся из src/data.js. Подробнее — в ROADMAP.md.backend/src/index.ts — одна Neon Function:
| Путь | Что делает |
|---|---|
/auth/* | прокси к Neon Auth: cookie ↔ заголовки X-Auth-Cookies / X-Auth-Set-Cookies |
POST /sync | отправка изменений и получение новых (по курсору rev), JWT Neon Auth проверяется по JWKS |
GET /me | кто вошёл и есть ли доступ |
GET /health | проверка без обращения к базе |
Таблицы создаются функцией сама при первом запросе: app.kv (данные по пользователю и ключу) и app.members.
cd backend && npm install
neon link --project-id <id> # один раз
neon deploy --env deploy.env # в файле: ALLOWED_ORIGINS, MEMBER_EMAILS (не в git)
neon functions get api # invocation_url → src/app-config.json
Публичная программа (src/data.js) не содержит медицинских подробностей. Личная версия лежит в private/data.private.js (в .gitignore). python3 build.py сравнивает их и пишет private/overlay.json — эти поля загружаются в базу как запись srv:overlay владельца и после входа накладываются на программу только на его устройствах.
THIRD_PARTY_NOTICES.md. Русские названия упражнений переведены для этого проекта (src/ds-names-ru.json).