Pampero backend — FastAPI + PostGIS live tracking, /api/fleet, GPX, Leaflet map
  • Python 52.2%
  • HTML 34.6%
  • Shell 13.2%
Find a file
Marcos 19fa41b0a9 docs: switch README license note from AGPL to CHARRUA v1.2
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 01:28:49 -03:00
backend chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:59 -03:00
deploy chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:59 -03:00
.gitignore Initial import: Pampero ABCL Lightning regatta MVP (race day 2026-04-20) 2026-04-20 01:09:26 -03:00
LICENSE chore(license): relicense under CHARRUA v1.2 + add SPDX headers 2026-04-20 01:26:59 -03:00
README.md docs: switch README license note from AGPL to CHARRUA v1.2 2026-04-20 01:28:49 -03:00

ILCA_SERVER — Pampero backend

FastAPI + PostgreSQL/PostGIS + Caddy. Recebe pontos de cada barco em tempo real, serve mapa público Leaflet e export GPX.

Em produção: https://pampero.pop.coop/ (mapa) · /api/fleet · /api/track/{sail}.gpx

Stack

  • Python 3.12 · FastAPI · Uvicorn · psycopg3 (SQL direto, sem ORM)
  • PostgreSQL 16/17 + PostGIS 3.4/3.5
  • Caddy para TLS (ACME LE, TLS-ALPN-01)
  • systemd unit

Endpoints

Método Rota Propósito
POST /api/track batch de pontos de um barco
GET /api/fleet snapshot ao vivo (último ponto + trilha 5 min de cada barco)
GET /api/track/{sail_number} track completo JSON
GET /api/track/{sail_number}.gpx GPX com extensões pampero:
GET / ou /map mapa Leaflet público

Dev local

docker run -d --name pg -p 127.0.0.1:55432:5432 \
  -e POSTGRES_USER=pampero -e POSTGRES_PASSWORD=pampero -e POSTGRES_DB=pampero \
  postgis/postgis:16-3.4
cd backend
python3.12 -m venv .venv && .venv/bin/pip install -r requirements.txt
PAMPERO_DSN='postgresql://pampero:pampero@127.0.0.1:55432/pampero' \
  .venv/bin/uvicorn main:app --host 127.0.0.1 --port 8000

Deploy

deploy/provision.sh foi pensado pra uma LXC Debian fresca; a prod atual roda co-hospedado na ha1 (HAProxy edge) — veja o Caddyfile em deploy/Caddyfile (SNI-routed pela HAProxy do cluster pop-edge-v3).

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.