Surmai: Organizador de viajes personal y familiar
Aplicación web progresiva para planificación colaborativa de viajes con acceso offline y privacidad de datos
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar Surmai: Organizador de viajes personal y familiar en el canal GENBYTE:
¿Qué es Surmai: Organizador de viajes personal y familiar?
Surmai es un organizador de viajes personal y familiar diseñado para resolver tres desafíos principales en la planificación de viajes: permitir la planificación colaborativa entre varias personas, facilitar el acceso a todos los artefactos necesarios durante el viaje (confirmaciones, reservas, itinerarios) y mantener los datos privados. La aplicación está en una fase alpha muy temprana y en desarrollo activo.
Características principales
Organización centralizada
Reúne en un solo lugar toda la información del viaje: itinerarios, reservas, confirmaciones y notas.
Colaboración multiusuario
Permite que varias personas planifiquen juntas el viaje, dividiendo tareas como compra de vuelos o reservas de restaurantes.
Acceso offline
Funciona como Progressive Web App (PWA), instalable en móviles y accesible sin conexión a internet.
Privacidad de datos
Los datos permanecen en tu infraestructura; no hay servicios de terceros que accedan a la información del viaje.
Interfaz móvil adaptable
Diseño responsive y optimizado para uso en dispositivos móviles durante el viaje.
Internacionalización
Soporte multiidioma mediante react-i18next y Weblate para contribuciones de traducción.
Requisitos del sistema
- Docker y Docker Compose
- Arquitectura compatible: linux/amd64, linux/arm64 (multi-platform build)
- Puerto 8080 disponible para la aplicación
- Volumen persistente para datos de PocketBase y replicación Litestream
Instalación con Docker Compose
Clonar el repositorio
Descarga el código fuente desde GitHub.
cd surmai
Configurar variables de entorno
Copia el archivo de ejemplo y ajusta según tu entorno (dominio, claves, configuración de correo, etc.).
Levantar con Docker Compose
Usa el archivo docker-compose.yaml del proyecto para construir y arrancar los servicios (frontend, backend PocketBase, Litestream).
Verificar despliegue
La aplicación quedará accesible en el puerto 8080 del host.
Acceder al proyecto
Acceso local
Una vez levantado el stack, abre http://localhost:8080 en el navegador.
Demo oficial
Disponible en https://demo.surmai.app/ con credenciales de prueba: email [email protected], contraseña vi#c8Euuf16idhbG (el sitio se limpia cada hora).
Instalación como PWA
Desde el navegador móvil (Chrome/Edge) usa la opción 'Instalar aplicación' para añadir Surmai a la pantalla de inicio y usarlo offline.
Casos de uso
- Planificación de viajes familiares con reparto de tareas entre los miembros.
- Gestión de itinerarios complejos con múltiples destinos, vuelos, alojamientos y actividades.
- Acceso a confirmaciones y documentos del viaje en zonas sin cobertura de datos.
- Colaboración remota entre compañeros de viaje que residen en distintas ubicaciones.
- Autohospedaje para mantener control total sobre los datos personales de viaje.
Configuración avanzada
Panel de administración PocketBase
Accede a la interfaz de administración de PocketBase (normalmente en /_/) para gestionar colecciones, usuarios, reglas de acceso y configuración avanzada no expuesta en la UI de Surmai.
Replicación y backups con Litestream
Litestream replica la base de datos SQLite de PocketBase a almacenamiento remoto (S3, GCS, Azure, SFTP, etc.). Configura el destino en litestream.yaml.
dbs:
– path: /pb/pb_data/data.db
replicas:
– type: s3
bucket: mi-bucket
path: surmai-backups
region: us-east-1
Traducciones y localización
Contribuye o gestiona traducciones a través de Weblate. El proyecto usa i18next-scanner para extraer cadenas.
pnpm run sync-translations
# Contribuir en https://hosted.weblate.org/projects/surmai/frontend/
Desarrollo local con hot-reload
Usa docker-compose.dev.yaml para montar código fuente y habilitar recarga en caliente tanto en frontend (Vite) como en backend (Go).
Gestión y mantenimiento
Actualizar imagen
Descarga los últimos cambios y reconstruye los contenedores.
docker compose up -d –build
Backup manual de la base de datos
Copia el archivo SQLite desde el volumen persistente o usa la réplica Litestream.
Logs de la aplicación
Consulta los logs del contenedor principal para diagnosticar problemas.
Migraciones de PocketBase
PocketBase aplica migraciones automáticamente al iniciar. Revisa la carpeta backend/pb_migrations para cambios de esquema.
Stack técnico
- TypeScript
- React 19
- Vite
- Mantine UI
- PocketBase (Go)
- SQLite
- Litestream
- Docker multi-stage build
- PWA (Workbox)
- react-i18next
- TanStack Query
- Leaflet / React-Leaflet
- TipTap editor
- pnpm
- Vitest / Playwright
Referencias oficiales
- Repositorio oficial: https://github.com/rohitkumbhar/surmai
- Sitio web y documentación: https://surmai.app/
- Demo en vivo: https://demo.surmai.app/
- Guía de instalación: http://surmai.app/documentation/installation
- Capturas de pantalla: http://surmai.app/documentation/screenshots
- PocketBase: https://pocketbase.io/
- Mantine: https://mantine.dev/
- Weblate (traducciones): https://hosted.weblate.org/projects/surmai/frontend/
- Litestream: https://litestream.io/
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
