MyCdA
Free CdA calculator for cyclists: measure your drag area (CdA) and rolling resistance (Crr) from power meter field tests with Chung's virtual elevation method.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗PWA pessoal que lê os treinos de corrida do Strava e mostra recordes, metas, provas e medalhas do mês. Cada pessoa entra com a própria conta do Strava e vê só os próprios dados.
| Parte | Onde |
|---|---|
| App (HTML único + manifest + service worker) | Vercel: https://recordes-pi.vercel.app (publica sozinho a cada push na main) |
| Backend | Supabase, projeto Recordes de Corrida (npekkekabsoyoagnelsp), Edge Function api |
| Dados | Strava API (app 285788), só leitura (read,activity:read_all,profile:read_all) |
STRAVA_CLIENT_SECRET), e nunca no código do app.athletes, sessions, docs) com RLS ligado e sem políticas: só a função acessa.docs guarda por atleta: efforts/<atividade> (melhores esforços e splits já calculados), config/metas, config/races (provas, editáveis na tela Provas) e config/settings (range_start, walk_until).apiPOST /auth · GET /me · GET /activities · GET /streams?id= · GET /docs · PUT /docs · GET /weight · GET /partner · GET /push/key · POST /push/subscribe · POST /push/unsubscribe · POST /logout · POST /cron/weights · POST /cron/push · POST /cron/nudge · POST /cron/webhook-setup · GET|POST /webhook
profile:read_all), um ponto por dia em config/weights. Só registra quando o valor muda e mantém a primeira pesagem do dia. Uma rotina do pg_cron (rc-weights, 9h e 21h de Brasília) chama /cron/weights com um token guardado no Vault (rc_cron_token); a função só compara o hash dele.config/partner (só o dono altera, via banco) aceita athlete_id ou athlete_ids. Com 1 pessoa em comum aparece a Dupla; com 2 ou mais, a aba vira Grupo. Placar com pesos (SCORE_LINES): Melhora recente 4, Nota por idade e sexo 3, Correndo sem parar em 90 dias 3, Metas 2, Constância em 12 semanas 1, Medalhas 1, Dias com recorde 1; em cada linha, os pontos dela por pessoa superada. Cada app publica config/summary (v3, com a lista de horários dos treinos dos últimos 120 dias para "treinos juntos"); /partner só devolve o resumo do outro quando os dois config/partner apontam um pro outro.docs (0, system, vapid). Os aparelhos inscritos ficam em config/push. As rotinas rc-push-semana (qui e sex, 18h) e rc-push-sabado (sáb, 8h) chamam /cron/push, que só avisa quem ainda não tem 2 corridas na semana (domingo a sábado).379199 criada por /cron/webhook-setup (token de verificação e id em docs (0, system, webhook)). Cada atividade nova chama /webhook, que recalcula só treinos juntos, semana/constância e medalhas a partir do último config/summary (v7 traz week, kmT, dT e actDays) e grava em config/live (protegido). /partner junta os dois enquanto o resumo for o mesmo e devolve live_at. A rotina rc-nudge (20h) avisa quem tem treino que o app ainda não viu há mais de 20 h, uma vez por treino.config/pauses ({weeks: {"<domingo>": "motivo"}}). Semana pausada com menos de 2 corridas não conta nem quebra a sequência, no app, na Dupla e no /cron/push (que também não avisa nela).chip (segundos) em cada prova de config/races. Vale no lugar do tempo do Strava na distância oficial; se a meta daquela distância tinha a prova como base, ela é recalculada a partir dele.O código da função está em supabase/functions/api/index.ts (cópia de referência; o deploy é feito no Supabase).
recordes na organização batinga. Erros do app no celular chegam lá (só no endereço publicado), com a etiqueta atleta (primeiro nome).200 leituras a cada 15 min e 2.000 por dia para o app inteiro, até 10 atletas. O primeiro acesso de alguém novo calcula os esforços treino a treino; se bater no limite, o app pausa e continua sozinho.