MyCdA
자전거용 무료 CdA 계산기, 파워미터 현장 테스트와 Chung 가상 고도법으로 항력 면적·구름 저항을 측정
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.