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.
Hub esportivo com unidades de futebol, tênis, beach tênis e paraquedismo perto de você.
Translation pending
Sports & fitnessJavaScript · TypeScriptGitHub @rctechitOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
HUB Esportivo
Translation pending
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
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.Read the full 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).