Pampero PWA — brújula, heel, SOG, GPX for Lightning/ILCA regattas
  • JavaScript 72.6%
  • HTML 14%
  • CSS 13.4%
Find a file
Marcos cf04cb8404 docs: note CHARRUA v1.2 in README
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 01:28:48 -03:00
icons Initial import: Pampero ABCL Lightning regatta MVP (race day 2026-04-20) 2026-04-20 01:09:26 -03:00
vendor Initial import: Pampero ABCL Lightning regatta MVP (race day 2026-04-20) 2026-04-20 01:09:26 -03:00
.gitignore Initial import: Pampero ABCL Lightning regatta MVP (race day 2026-04-20) 2026-04-20 01:09:26 -03:00
app.js chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
gpx.js chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
index.html chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
LICENSE chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
manifest.webmanifest Initial import: Pampero ABCL Lightning regatta MVP (race day 2026-04-20) 2026-04-20 01:09:26 -03:00
README.md docs: note CHARRUA v1.2 in README 2026-04-20 01:28:48 -03:00
sensors.js chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
setup.html chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
storage.js chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
style.css chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
sw.js chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
ui.js chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00
uploader.js chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:49 -03:00

ILCA_web — Pampero PWA

Progressive Web App para tracking ao vivo de veleiros de classe one-design (ABCL Lightning, ILCA/Laser). Bússola + inclinômetro + velocidade, grava offline em IndexedDB, upload em batch de 5 s para o servidor, export GPX com extensões pampero: ao final.

Servida em produção: https://pampero.pop.coop/app/setup.html

Stack

Vanilla JS + HTML + CSS — sem framework, sem bundler, sem build. Dexie em vendor/ para IndexedDB. Service Worker à mão.

Layout

index.html     tela principal (compass + heel + SOG)
setup.html     primeira execução: pede número de vela
app.js         orquestração (init, 1 Hz tick, wake lock, menu)
sensors.js     bússola (iOS webkitCompassHeading, Android absolute, GPS fallback)
               + heel com EMA α=0.1 + GPS watchPosition
storage.js     Dexie — tabela points
uploader.js    batch POST com backoff exponencial 5→10→20→60s
gpx.js         export GPX com extensões pampero:
ui.js          canvas render (compass + heel) + DOM
style.css      dark, alto contraste, Wiphala accents
sw.js          Service Worker cache-first
manifest.webmanifest
vendor/dexie.min.js
icons/icon-{192,512}.png

Servir estático

python3 -m http.server 8000

HTTPS é obrigatório em celular real (sensores de orientação exigem).

Endpoint de backend esperado

POST /api/track com {sail_number, points:[{t,lat,lon,sog,cog,heading,heel,acc}]}. Veja ILCA_SERVER para a implementação.

Licença

CHARRUA v1.2 — Copyleft Humanitário para Autonomia, Resistência, Reciprocidade, Uso Aberto (https://gitlab.fing.edu.uy/charrua/licencia). Honra ao povo Charrúa. Este software não pode ser usado para vigilância massiva, armas autônomas, supressão de direitos humanos, discriminação algorítmica ou treinamento de IA proprietária (Seção 5). Ver LICENSE para o texto completo.