Mapa interactivo de transporte público de El Salvador
Explora más de 3,000 rutas de buses, busca paradas cercanas y planifica viajes en transporte público a lo largo de todo El Salvador.
Mapa
- Visualización de rutas de buses con colores por tipo (urbano, interurbano, interdepartamental)
- Niveles de detalle adaptativos (LOD) según el zoom
- Temas claro/oscuro con mapas CartoDB
- Persistencia de viewport entre sesiones
Búsqueda
- Búsqueda unificada de rutas, lugares y regiones geográficas
- Fuzzy matching local para rutas (Fuse.js)
- Búsqueda de lugares vía API con distancia desde tu ubicación
- Navegación jerárquica: Departamento → Municipio → Distrito
Transporte
- Rutas cercanas basadas en geolocalización o ubicación seleccionada
- Paradas de bus con información detallada
- Planificador de viajes multi-modal (bus + caminata)
- Opciones de ruta con estimación de tiempo, distancia y transbordos
Interacción
- Long-press en móvil para colocar pins (con vibración háptica)
- Click derecho para menú contextual en desktop
- Bottom sheet con 3 estados (peek/half/full) y drag inteligente
- Geocoding inverso automático al seleccionar ubicaciones
| Capa | Tecnología |
|---|---|
| Framework | React 18 + TypeScript |
| Mapa | MapLibre GL JS vía react-map-gl |
| Estado | Zustand (14 stores modulares) |
| Estilos | Tailwind CSS |
| Geo | Turf.js |
| Routing | Wouter |
| Build | Vite 5 |
| Paquetes | pnpm |
flowchart LR
U[Usuario] --> UI[UI React]
UI --> MAP[MapLibreMap]
UI --> SEARCH[Search]
UI --> SHEET[Bottom Sheet]
UI --> STORE[Zustand Stores]
STORE --> SVC[API Client]
SVC --> API[Go Fiber API]
API --> H[Handlers]
H --> C[Cache/Services]
C --> GEO[GeoJSON/TopoJSON]
C --> RUTAS[Rutas/Paradas]
H --> DB[Turso DB]
H --> PG[PostGIS Geocoding]
API --> RESP[JSON]
RESP --> STORE
src/
├── pages/ # Páginas (Home, About, Export, Account)
├── hooks/ # Hooks custom (useBottomSheet, useGeolocation, useMapFocus)
└── shared/
├── components/
│ ├── Map/ # MapLibreMap, controles, capas, bottom sheet
│ ├── rutas/ # Capas de rutas y rutas cercanas
│ ├── paradas/ # Capa de paradas
│ └── ui/ # Componentes reutilizables
├── store/ # 14 stores Zustand
├── api/ # Clientes HTTP
├── services/ # Servicios de datos
├── types/ # Definiciones TypeScript
├── config/ # Variables de entorno
└── data/ # Estilos de mapa
# Clonar
git clone https://github.com/chivomap/web.git
cd web
# Instalar dependencias
pnpm install
# Configurar variables de entorno
cp .env.example .env
# Desarrollo
pnpm dev
# Build
pnpm build| Variable | Descripción | Default |
|---|---|---|
VITE_API_URL |
URL del backend API | — |
VITE_MAP_DEFAULT_LAT |
Latitud inicial del mapa | 13.69 |
VITE_MAP_DEFAULT_LNG |
Longitud inicial del mapa | -89.19 |
VITE_MAP_DEFAULT_ZOOM |
Zoom inicial | 9 |
VITE_FEATURE_TRIP_PLANNER |
Habilitar planificador de viajes | false |
VITE_FEATURE_ROUTE_ARROWS |
Flechas de dirección en rutas | false |
Las contribuciones son bienvenidas. Este es un proyecto comunitario.
- Fork el proyecto
- Crea una rama (
git checkout -b feature/mi-feature) - Commit tus cambios (
git commit -m 'Agregar mi feature') - Push (
git push origin feature/mi-feature) - Abre un Pull Request
Ver CONTRIBUTING.md para guías detalladas.
AGPL-3.0 — ChivoMap es y siempre será software libre y de código abierto. Si modificas el código o lo usas como servicio web, debes compartir el código fuente bajo la misma licencia.
Eliseo Arévalo — @eliseo-arevalo
Parte de ChivoMap — Democratizando el acceso a datos de transporte en El Salvador.
