Directorio colaborativo y abierto de iniciativas, capas, catastros y herramientas de información geográfica pública de Chile.
Construido con Astro y publicado en GitHub Pages. Sin servidor, sin costos, todo open source.
- Astro 4 — generador de sitio estático con componentes
.astro. - Content Collections + zod — cada iniciativa/fuente es un archivo Markdown validado en build.
- JS vanilla para filtros, búsqueda y modal (sin React/Vue).
- GitHub Pages + GitHub Actions para deploy automático.
npm install
npm run dev # http://localhost:4321/geohub-chile
npm run build # genera dist/ + valida tipos y schema
npm run preview # sirve el build con el base /geohub-chileRequiere Node 18+.
src/
├── components/ # Header, Hero, FiltrosBar, IniciativaCard, ...
├── content/
│ ├── config.ts # schemas zod
│ ├── iniciativas/ # un .md por iniciativa
│ └── fuentes/ # un .json por fuente institucional
├── layouts/Base.astro
├── pages/index.astro
└── styles/global.css
public/
└── visor_riesgos_chile.html # visor standalone existente
- Fork del repo.
- Crea
src/content/iniciativas/<slug>.mdsiguiendo el frontmatter de los archivos existentes (miracatastro-minero.mdcomo ejemplo). npm run build— el schema zod valida los metadatos.- Abre un PR.
Frontmatter mínimo:
---
nombre: "Mi catastro"
categoria: ambiental # mineria | ambiental | riesgo | hidrico | social | admin | energia
estado: activo # activo | beta | wip
estadoTexto: "Activo — Mes Año"
descripcion: "Qué contiene, cobertura, fuente."
capas:
- "Capa A"
- "Capa B"
tags: "palabras clave para buscador"
stats:
- { label: "registros", valor: "1.000" }
acciones:
- { tipo: github, texto: "GitHub", url: "https://github.com/..." }
---Campos opcionales: capasExtra, archivos (grupos de descargas).
Crea src/content/fuentes/<slug>.json:
{
"logo": "SERNAGEOMIN",
"nombre": "Geología y Minería",
"descripcion": "Catastro minero, geología, volcanes.",
"url": "https://www.sernageomin.cl"
}- ✅ Fuente oficial o citable.
- ✅ Formato abierto (GeoJSON, Shapefile, CSV, WMS/WFS).
- ✅ Licencia libre.
- ✅ Metadatos completos (incluido sistema de referencia).
Push a main → la GitHub Action en .github/workflows/deploy.yml construye y publica en https://<user>.github.io/geohub-chile/.
En el repo: Settings → Pages → Source: GitHub Actions (una sola vez).
Para usar un dominio propio, vacía base en astro.config.mjs y agrega public/CNAME.
Las cards se ordenan por score (cantidad de 👍). El score viene de GitHub Reactions sobre un issue dedicado por iniciativa.
- Crear el hilo de valoración:
gh issue create \ --title "[Valoración] Catastro Minero Chile" \ --label valoracion \ --body "Hilo de valoración. Reacciona con 👍 si te resultó útil." # → te devuelve: https://github.com/.../issues/42
- Anotar el número en el frontmatter de la iniciativa:
--- nombre: "Catastro Minero Chile" valoracionIssue: 42 # ← agregar ---
.github/workflows/sync-scores.yml corre cada día a las 06:00 UTC y:
- Lee todos los
.mdque tienenvaloracionIssue. - Llama a GitHub API → cuenta los 👍 del issue.
- Reemplaza
score: Nen el.mdcon el conteo real. - Si hubo cambios → commit + push + redeploy automático.
También se puede correr manualmente: Actions → Sync valoraciones → Run workflow.
GITHUB_TOKEN=ghp_xxx node scripts/sync-scores.mjs(Sin token funciona pero con rate limit de 60 req/hora.)
/herramientas/monitor-geoservicios muestra un semáforo del estado de los
geoservicios públicos chilenos (WMS, WFS, ArcGIS REST, GeoJSON).
- Catálogo:
src/data/geoservicios.json— cada endpoint fue verificado manualmente antes de agregarse. Para proponer uno nuevo: issue con el título[Monitor] Agregar geoservicio(o PR directo al JSON). - Checker:
scripts/check-geoservicios.mjsverifica en 3 niveles (¿responde? · ¿habla el protocolo? · ¿entrega datos?) con reintentos, y escribesrc/data/geoservicios-estado.json(semáforo, latencia, conteo de registros,lastEditDatede capas ArcGIS e historial de hasta 30 corridas). - Automatización:
.github/workflows/check-geoservicios.ymlcorre a diario (09:00 UTC). Solo commitea (y redeploya) si algún semáforo cambió o si el estado guardado tiene más de 3 días. - La página además incluye un tester client-side para probar cualquier endpoint que no esté en el listado, con manejo de CORS.
Test local:
node scripts/check-geoservicios.mjsMIT — el código. Los datos enlazados pertenecen a sus instituciones publicadoras (dominio público / licencias abiertas).