Brújula electoral de código abierto para Latinoamérica. Compara tus posiciones con las de los candidatos presidenciales en 20 temas, con cada codificación respaldada por fuentes verificables.
pre.voto | Metodología | Datos abiertos | FAQ
pre.voto es una VAA (Voting Advice Application) pan-LATAM. No es una encuesta, no recomienda voto, no tiene afiliación partidaria. Tu resultado es para tu uso personal.
| Capa | Tecnología |
|---|---|
| Frontend | Astro 4 + Svelte 5 + Tailwind 4 |
| Backend | FastAPI (Python 3.12) + SQLAlchemy 2.0 (async) |
| Base de datos | PostgreSQL 16 + pgvector |
| Cache/Cola | Redis 7 |
| Worker | APScheduler + asyncio |
| Reverse proxy | Caddy 2 |
| Contenedores | Docker Compose |
| Package managers | uv (backend), npm (frontend) |
git clone https://github.com/AliasParker/pre-voto.git
cd pre-voto
cp .env.example .env
docker compose up -d
docker compose exec api alembic upgrade head
docker compose exec api python -m app.scripts.seed_colombia_2026
Abre http://localhost para ver el frontend. API health check en http://localhost/api/health.
| Servicio | Puerto | Descripción |
|---|---|---|
| Caddy | 80, 443 | Reverse proxy |
| Frontend | 3000 (interno) | Astro SSG dev server |
| API | 8000 (interno) | FastAPI |
| Worker | — | Background jobs (RSS, fotos, encuestas, newsletter) |
| PostgreSQL | 5432 (interno) | Base de datos con pgvector |
| Redis | 6379 (interno) | Cache + cola |
| Mailpit | 8025 | UI de email para dev |
# Logs
docker compose logs -f api
# Tests
docker compose run --rm api-test
# psql
docker compose exec postgres psql -U prevoto
# Frontend build
docker compose build frontend && docker compose up -d frontend
# Trigger jobs manualmente
curl -X POST http://localhost/admin/jobs/pull-rss -H "X-Admin-Key: $ADMIN_KEY"
.
├── frontend/ # Astro 4 + Svelte 5 + Tailwind 4
│ └── src/
│ ├── pages/ # Rutas estáticas (SSG)
│ ├── components/# Astro components + Svelte islands
│ ├── lib/ # API client, i18n, quiz logic, types
│ └── styles/ # Global CSS + Tailwind theme
├── backend/
│ └── app/
│ ├── routers/ # API endpoints (13 routers)
│ ├── models/ # SQLAlchemy models (13 tablas)
│ ├── schemas/ # Pydantic schemas
│ ├── services/ # Business logic
│ ├── jobs/ # Scheduled jobs
│ └── scripts/ # Seed scripts
├── infra/ # VPS bootstrap, deploy, backup
├── LICENSES/ # Full license texts (REUSE spec)
├── DATA.md # Documentación del dataset abierto
└── CONTRIBUTING.md # Guía de contribución
Los datos editoriales están disponibles via API pública bajo CC-BY 4.0:
curl https://pre.voto/api/opendata/co/statements
curl https://pre.voto/api/opendata/co/candidates
curl https://pre.voto/api/opendata/co/positions
Documentación completa en DATA.md y pre.voto/datos.
Ver CONTRIBUTING.md. En resumen: