BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证HUB Esportivo
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Hub esportivo para cadastro e busca de unidades (quadras, clubes, escolas) organizadas por modalidade — Futebol, Tênis, Beach Tênis e Paraquedismo. O admin cadastra as unidades pelo painel (/admin); o site público lista e filtra as unidades por modalidade, cidade e busca livre.查看完整 README ↗
Hub esportivo para cadastro e busca de unidades (quadras, clubes, escolas) organizadas por modalidade — Futebol, Tênis, Beach Tênis e Paraquedismo.
backend/ API REST em Fastify + TypeScript + Prisma + PostgreSQL (Neon)
frontend/ Site estático em HTML + CSS + JavaScript puro (sem framework)
O admin cadastra as unidades pelo painel (/admin); o site público lista e filtra as
unidades por modalidade, cidade e busca livre.
frontend/css/style.css).textContent/createElement (não innerHTML com
dados externos), para evitar XSS.cd backend
cp .env.example .env # edite com sua DATABASE_URL do Neon e demais variáveis
npm install
npx prisma migrate dev # cria as tabelas
npm run seed # cria as 4 modalidades e o usuário admin
npm run dev # inicia em http://localhost:3333
Gere um JWT_SECRET forte com:
node -e "console.log(require('crypto').randomBytes(48).toString('hex'))"
O frontend é estático — basta servir a pasta frontend/:
cd frontend
python3 -m http.server 5173
# ou: npx serve .
Acesse http://localhost:5173/index.html. O arquivo frontend/js/config.js já aponta para
http://localhost:3333/api quando rodando em localhost.
Login padrão do admin (definido no .env do backend): o e-mail/senha configurados em
ADMIN_EMAIL / ADMIN_PASSWORD antes de rodar npm run seed.
DATABASE_URL (com sslmode=require) para o .env de produção.backend/ como serviço Node. Configure as
variáveis de ambiente (baseadas no .env.example), rode npx prisma migrate deploy no
deploy e npm run seed uma única vez para criar o admin.frontend/ como site estático.frontend/js/config.js com a URL pública do backend no Railway.CORS_ORIGIN no backend com o domínio final do frontend (produção usa cookies
SameSite=None; Secure, exigindo HTTPS em ambos os lados).argon2id — nunca em texto plano.httpOnly + secure (produção) — não fica acessível
via JavaScript, reduzindo o risco de roubo de sessão por XSS.POST/PUT/DELETE) exigem autenticação; leitura pública só
expõe unidades marcadas como ativo.ADMIN_PASSWORD e JWT_SECRET do .env.example antes de qualquer deploy real.wa.me a partir do número cadastrado; uma API
(oficial ou não-oficial) pode ser adicionada depois para automações de mensagens./api/uploads/sign para
upload assinado; falta o widget de upload no formulário (hoje o admin cola a URL da foto).