OpenAthlete
AGPLv3 기반 지구력 훈련 플랫폼—EU 호스팅, 투명한 로직, 자체 호스팅·전체 내보내기 지원
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Auto-book competitive fitness classes (Barry's, Aarmy, SLT, and more)
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Auto-book competitive fitness classes as soon as booking opens or a slot appears.
Fitness Sniper is a private TypeScript monorepo with a Next.js dashboard, a PostgreSQL-backed booking worker, and shared studio/API logic.
• Stores encrypted per-studio credentials.
• Lets users create recurring and one-time snipe targets.
• Browses live and cached class schedules.
• Creates booking jobs at each studio's booking-open time.
• Books through platform-specific adapters.
• Tracks worker health, booking history, and per-studio success rates.
• Sends success/failure email notifications through Resend.README 전문 보기 ↗Auto-book competitive fitness classes as soon as booking opens or a slot appears.
Fitness Sniper is a private TypeScript monorepo with a Next.js dashboard, a PostgreSQL-backed booking worker, and shared studio/API logic.
.
├── web/ # Next.js App Router dashboard and API routes
├── worker/ # Always-on booking daemon
├── packages/shared/ # Shared types, studio registry, and API clients
├── supabase/migrations/ # PostgreSQL schema migrations
├── archive/ # Legacy reference code only, not deployed
└── screenshots/ # UI verification screenshots
npm install
Create environment files from the examples:
cp web/.env.local.example web/.env.local
cp worker/.env.example worker/.env
Required web variables:
DATABASE_URL=
DATABASE_POOL_MAX=2
ENCRYPTION_KEY=
AWS_REGION=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
COGNITO_USER_POOL_ID=
COGNITO_CLIENT_ID=
COGNITO_CLIENT_SECRET=
AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY are required on Vercel because signup uses Cognito AdminConfirmSignUpCommand. DATABASE_POOL_MAX is optional; the web app defaults to 2 in production to avoid exhausting PostgreSQL connections from serverless instances.
Required worker variables:
DATABASE_URL=
ENCRYPTION_KEY=
RESEND_API_KEY=
WORKER_ID=
ENCRYPTION_KEY must be the same 64-character hex key for web and worker.
npm run web:dev
npm run worker
Build commands:
npm run web:build
npm run worker:build
npm run build
Lint:
npm run lint
There is currently no automated test framework configured.
Deploy from the repository root:
Install Command: npm ci --workspace=web --workspace=packages/shared --include-workspace-root
Build Command: npm run web:build
Output Directory: web/.next
Set the required web environment variables in the Vercel project. The booking worker is not a Vercel function; run npm run worker on the always-on worker host with the worker environment variables.
The active schema is PostgreSQL with Cognito user IDs:
supabase/migrations/001_rds_schema.sqlsupabase/migrations/002_one_time_targets.sqlsupabase/migrations/003_class_schedules.sqlsupabase/migrations/004_credential_separate_iv.sqlsupabase/migrations/005_booking_timing.sqlsupabase/migrations/006_optional_time_arketa.sqlsupabase/migrations/007_history_class_name.sqlSupabase Auth and Supabase client helpers are legacy and should not be reintroduced.
This repository root is the active Fitness Sniper app. The old class-sniper tree was an earlier name/copy and should stay deleted. Archive files are retained only for historical selector and flow reference.