Salpicón!
Salpicón! — record a run, a ride or a walk and watch it played back across real terrain, at the pace you actually went.
Translation pending
Plataforma de gestão desportiva do ACD Vila Franca das Naves - relatórios de jogo, estatísticas, plantel, dashboard para equipa técnica e área dos atletas.
Translation pending
Sports & fitnessGitHub @TonyBalde18OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Aplicação web estática (GitHub Pages + Supabase) do ACD Vila Franca das Naves, 2ª Distrital da Guarda: relatórios táticos, gestão do plantel, dashboard da equipa técnica e página pública para os atletas.
| Página | Quem usa | Acesso |
|---|---|---|
index.html | Tony (admin) | Login. Relatório de jogo e gestão (multas, presenças, calendário, classificação, adversários) |
dashboard.html | Treinador e dirigentes | Login. Hub, plantel, estatísticas e calendário (só leitura) |
equipa.html | Jogadores (e equipa técnica) | Login. Calendário, convocatória, multas, presenças, estatísticas, disponibilidade e relatórios publicados (só leitura) |
public.html | Público | Sem login. Próximo jogo, forma, plantel, classificação da 2ª Liga, jornadas, calendário e marcadores (liga e taças) |
/ páginas (ficam na raiz: links partilhados, convites e PWA apontam para aqui)
├── index.html admin: relatório de jogo e gestão
├── dashboard.html equipa técnica (só leitura)
├── equipa.html Área do Jogador
├── public.html página pública
├── entrada.html arranque da app instalada: encaminha pelo papel da sessão
├── manifest.json · sw.js PWA (o service worker tem de estar na raiz)
├── css/
│ ├── styles.css base, admin e componentes (+ bloco do tema escuro gerado)
│ └── hub.css extra das páginas do hub (dashboard, equipa, pública)
├── js/
│ ├── config.js URL e chave anon do Supabase
│ ├── core/ partilhados por várias páginas, cada um num namespace global
│ │ ├── shared.js VFN: utilitários base (datas, competições, posições, multas, avatares, tema, Supabase)
│ │ ├── hub.js VFNHub: componentes de leitura (resultados, classificação, 11, calendário, H2H…)
│ │ ├── components.js VFNComp: componentes interativos (cards, comparador, mapa, kits, PDF…)
│ │ └── relatorio.js VFNRelatorio: relatório de jogo (HTML, Word, situações)
│ ├── admin/ index.html (scripts clássicos que partilham globais; app.js tem de vir primeiro)
│ │ ├── app.js estado do relatório, camada de dados, plantel, pré-jogo, jogo, análise, Word, login
│ │ ├── admin.js separadores de gestão (multas, presenças, convocatória, calendário…)
│ │ └── modo-jogo.js Modo Jogo (cronómetro e eventos ao vivo)
│ └── pages/ dashboard.js · equipa.js · public.js (um por página)
├── sql/ ver sql/README.md (schema base, migrações e seeds, pela ordem de execução)
├── tools/ tema-escuro.js (gera o bloco escuro: node tools/tema-escuro.js css/styles.css css/hub.css)
│ auditoria/ (verificação das páginas e do código antes de cada versão; ver o README lá dentro)
└── assets/ logo, players/, opponents/ (+ kits/), stadiums/, icons/, sponsors/, kits/, staff/, external/
Os caminhos para assets/ no JS são relativos à página (na raiz). Ao mudar um JS/CSS, sobe o ?v= nas páginas e o VERSAO no sw.js.
sql/schema.sql e depois o resto pela ordem do sql/README.md. É idempotente: completa as tabelas existentes, cria profiles, opponents, sessions e a view players_public, e substitui as políticas RLS destas tabelas.index.html deixa de conseguir gravar.sql/schema.sql.js/config.js tem o Project URL e a anon key (Settings > API):const SUPABASE_URL = 'https://o-teu-projeto.supabase.co';
const SUPABASE_ANON_KEY = 'a-tua-chave-anon';
sql/schema.sql (depois da v5). Cria as colunas novas (convocatória em dois momentos, coordenadas dos estádios, situações dos relatórios), o bucket privado report-images e as políticas de Storage.insert into storage.buckets der erro de permissões, cria o bucket à mão: Storage → New bucket → report-images, sem "Public bucket"; depois corre só as políticas.https://tonybalde18.github.io/vfn-relatorios/ e, em Redirect URLs, acrescentar https://tonybalde18.github.io/vfn-relatorios/equipa.html. O convite chega ao Site URL e o index.html reencaminha-o para equipa.html, onde o jogador define a password.equipa.html; a conta liga-se sozinha ao jogador (players.auth_user_id). Sem email na ficha, vê um ecrã de boas-vindas até o admin o indicar.| Anónimo (public) | Treinador / Dirigente | Admin | |
|---|---|---|---|
| Jogos, classificação, equipas | lê | lê | lê e escreve |
| Plantel | só players_public (sem atributos nem notas) | lê | lê e escreve |
| Multas, presenças, sessões, observação de adversários | — | lê | lê e escreve |
| Relatórios e rascunhos | — | lê relatórios | os seus |
As estatísticas vivem em players.stats (jsonb). No separador Jogo, golos, assistências e cartões atualizam o plantel automaticamente; jogos e minutos são somados ao gerar o relatório Word, que também grava o resultado no jogo do calendário associado ("Usar dados deste jogo" no Pré-Jogo).
No Supabase Dashboard, abre Storage > New bucket, cria o bucket player-photos e marca-o como público. A aplicação usa o bucket para os uploads do admin (fotos e emblemas) e guarda o URL público em players.photo_url.
As políticas do bucket estão em sql/migrations/v23_player_photos_admin.sql: só o admin carrega e substitui ficheiros; a leitura é pelo URL público (sem listagem, ver v22_security_advisor.sql).
A app usa fetch para o logo e CDNs para Supabase/docx. Usa um servidor HTTP:
npx http-server -p 8000
Sem credenciais reais em js/config.js, o botão Entrar em modo local permite testar a interface com localStorage. Com credenciais configuradas, o login é obrigatório e os dados ficam isolados por utilizador através de RLS.
2ª LIGA FUTEBOL ZERO GRAUS PRODUÇÕES, TAÇA 2ª LIGA - FDM, TAÇA DE HONRA COMUNILOG e Amigável.Sai/Entra, tempo acrescentado e scoreboard calculado automaticamente.localStorage.assets/.main em Settings > Pages > Deploy from branch.js/config.js contém apenas a chave anon. Nunca publiques a service role key.Abre o URL do GitHub Pages no browser do dispositivo e adiciona-o ao ecrã inicial. É necessária ligação à internet para login, Supabase e CDNs. O modo local funciona sem conta, mas não sincroniza entre dispositivos.
No Supabase Dashboard, usa Table Editor > Export ou pg_dump para exportar as tabelas (players, teams, matches, standings, opponents, attendance, sessions, fines, match_reports, draft). Mantém também o botão de exportação JSON da equipa (admin → Equipa) como cópia rápida.