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.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
An operations, scheduling, and communication hub for a gym's trainers and clients.
Built with Next.js (App Router), Supabase (Postgres + Auth + Row-Level Security), Tailwind CSS, and deployed on Vercel.README 전문 보기 ↗An operations, scheduling, and communication hub for a gym's trainers and clients.
Built with Next.js (App Router), Supabase (Postgres + Auth + Row-Level Security), Tailwind CSS, and deployed on Vercel.
| Table | Purpose |
|---|---|
profiles | One row per auth user (role, name, contact, bio, goals). |
trainer_clients | Links clients to trainers. |
availability | Recurring weekly availability windows for trainers. |
sessions | Calendar bookings between a trainer and a client. |
messages | 1:1 direct messages. |
announcements | Gym-wide posts (trainer-authored). |
client_progress | Measurement / progress log per client. |
Every table is protected by Row-Level Security — users only ever see and modify their own data. See supabase/migrations/0001_init.sql.
npm install
cp .env.example .env.local # fill in your Supabase URL + anon key
npm run dev
Environment variables:
| Variable | Where to find it |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | Supabase project → Settings → API |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Supabase project → Settings → API (publishable/anon key) |
Apply the migration in supabase/migrations/0001_init.sql to a Supabase project
(via the Supabase SQL editor, the CLI, or the dashboard). It creates all tables,
the handle_new_user trigger that provisions a profile on signup, and the
row-level-security policies.
The recommended, reliable path is to import this GitHub repo into Vercel:
Vercel → Add New… → Project → import the idealfitness repo.
Select the branch claude/gym-operations-hub-yvlsdx (or merge it to main first).
Framework preset: Next.js (auto-detected).
Add the two Environment Variables (Production + Preview):
| Key | Value |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | https://oknfnlucnnnzgxahtkrp.supabase.co |
NEXT_PUBLIC_SUPABASE_ANON_KEY | sb_publishable_nbyLuTf1yM5AEp1_TRi9LA_CHsFKqm8 |
Deploy. Every future push auto-deploys.
The anon/publishable key is safe to expose in the browser — access is enforced by the row-level-security policies in the migration.
The database is seeded with three confirmed accounts (password Fitness123!):
| Role | |
|---|---|
[email protected] | Trainer (has 2 clients, sessions, announcements) |
[email protected] | Client |
[email protected] | Client |
New sign-ups: Supabase email confirmation is on by default. For open self-serve signup, turn off Authentication → Providers → Email → "Confirm email" in the Supabase dashboard so new users can log in immediately.