BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2,或任何藍牙控制器搭配 MyWhoosh、Rouvy、Zwift 等。可於 iOS、Android、Windows 與 macOS 免費試用。
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Racha — PWA para organização de peladas Criar → Convidar → Organizar → Sortear → Jogar → Registrar → Finalizar. Conta de demonstração (dados simulados): [email protected] / racha123 Os dados simulados ficam no localStorage do navegador (chave racha:mockdb). Para restaurar o estado inicial: Configurações → Restaurar dados de demonstração, ou limpe o armazenamento do site.檢視完整 README ↗
Criar → Convidar → Organizar → Sortear → Jogar → Registrar → Finalizar.
npm install
cp .env.example .env
npm run dev # desenvolvimento
npm run build # build de produção (gera o service worker)
npm run preview # testar o build, inclusive a instalação do PWA
Conta de demonstração (dados simulados): [email protected] / racha123
Os dados simulados ficam no localStorage do navegador (chave racha:mockdb).
Para restaurar o estado inicial: Configurações → Restaurar dados de demonstração, ou limpe o armazenamento do site.
src/
types/ Entidades (User, PeladaEvent, Participant, Team, Game, Invitation, Notification)
domain/ Regras puras: permissões, sorteio, rodízio, cronômetro, mapas
services/
contracts.ts Interfaces que a interface consome (Auth, User, Event, Game, Notification, Storage)
mock/ Implementação simulada (localStorage)
http/ Cliente HTTP para o backend real
index.ts Seleciona a implementação conforme VITE_DATA_SOURCE
stores/ Estado global (sessão, toasts, invalidação)
hooks/ useAsync, useTimer, useInstallPrompt, useDebounced
components/ ui/ (primitivos) e app/ (componentes do produto)
layouts/ AppLayout (barra inferior no celular, lateral no desktop)
features/ Módulos compostos (pelada)
pages/ auth/ e app/ — as 15 telas
app/router.tsx
A interface depende exclusivamente de src/services/contracts.ts. Para conectar um backend
(PostgreSQL, Supabase, Neon ou API própria), implemente esses contratos e defina
VITE_DATA_SOURCE=api. Nenhuma tela precisa ser alterada.
.env.example em Project Settings → Environment Variables.vercel.json já redireciona as rotas para o SPA.VITE_GOOGLE_MAPS_API_KEY: usa a Maps Embed API oficial.