BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
초보·전문가용 웹 기반 복싱 트레이닝, AI 플랜·진행 순위·영양·기술 제공, 무료 시작
Web-first boxing training for beginners and pros. AI-built plans, progress ranks, nutrition and technique. Start free — no card, no app, no gear.
스포츠·피트니스TypeScript · JavaScriptGitHub @muratov-rb온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Free, web-first boxing training that serves total beginners and experienced boxers / pros in one place. No app download, no proprietary hardware — just step in and train.
Train like a fighter. Look like an athlete.
Landing page, a game-like onboarding flow, real accounts (Supabase), an AI coach that rates your chances and builds a roadmap (Claude), and English/Russian localization. It runs with zero keys — auth shows a "not connected" notice and the AI uses a built-in engine until you add credentials. See SETUP.md to switch on Supabase + Claude.README 전문 보기 ↗Free, web-first boxing training that serves total beginners and experienced boxers / pros in one place. No app download, no proprietary hardware — just step in and train.
Train like a fighter. Look like an athlete.
Landing page, a game-like onboarding flow, real accounts (Supabase), an AI coach that rates your chances and builds a roadmap (Claude), and English/Russian localization. It runs with zero keys — auth shows a "not connected" notice and the AI uses a built-in engine until you add credentials. See SETUP.md to switch on Supabase + Claude.
app/globals.css via @theme)next/font: Anton (display), Oswald (condensed), Inter (body)npm install
npm run dev # http://localhost:3000
cp .env.example .env.local # then follow SETUP.md to fill in keys
/) — EN/RUSiteNav · Hero · AudienceSplit · FeaturePreview · FinalCTA · SiteFooter, with a LocaleSwitcher.
/onboarding)Client-side stepper (OnboardingFlow) with a "round" progress rail:
PathSelector — Beginner vs. Experienced / ProProfileForm — stats + sex, multi-select & custom goals, flexible timeframe (6w / 3m / 6m / custom), conditional target weightSetupStep — training environment + equipment inventory + free-text notesFuelStep — nutrition access tier, supplements, diet notesAnalysisReveal — AI feasibility %, verdict, phased roadmap, fuel plan, belt unlock (Novice)DashboardPreview — teaser: session, rank ladder, goal/streak, nutrition (marked Preview)Shared state is a useReducer over the Profile in lib/onboarding.ts.
/login, /register, /verify-email, /dashboard (guarded), plus /auth/callback & /auth/signout. Session refresh + route protection in proxy.ts.
app/api/analyze/route.ts — Claude (claude-opus-4-8, override via ANTHROPIC_MODEL) returns the Analysis shape and answers in the active locale; falls back to lib/analysis.ts's local engine on any error or missing key.
app/
layout.tsx # fonts, i18n provider, grain overlay
globals.css # design tokens (@theme), base, animations
page.tsx # landing
onboarding/page.tsx # <OnboardingFlow />
(auth)/ # login, register, verify-email (+ layout)
auth/ # callback + signout route handlers
dashboard/page.tsx # guarded dashboard shell
api/analyze/route.ts # Claude analysis (local fallback)
components/
ui/ landing/ onboarding/ auth/
lib/
onboarding.ts # types, constants (paths/goals/timeframes/equipment/nutrition/ranks), reducer
analysis.ts # feasibility+roadmap engine + requestAnalysis()
supabase/ # client, server, middleware(proxy), user, config
i18n/request.ts # cookie-based locale
messages/{en,ru}.json # translations
proxy.ts # Supabase session + route guard (Next 16 "proxy")
Dark, gritty boxing-gym aesthetic, tokens in app/globals.css: surfaces void→charcoal→surface→surface-2, accents blood/ember, text bone/ash/ash-dim, font-display/font-condensed/font-body. Reusable: .kicker, .badge, .btn*, .panel, .shine, animate-rise/pop/glow.
useTranslations)/dashboard