Tourify
Aplicación móvil multiplataforma para explorar ciudades, puntos de interés y eventos turísticos. Los usuarios pueden descubrir destinos, guardar favoritos, reseñar lugares, registrarse en eventos y recibir notificaciones push.
Tourify
Tourify · React Native · Expo · Laravel · MySQL
Tourify es una aplicación móvil diseñada para centralizar la experiencia turística: agrupa en un solo lugar la información dispersa sobre ciudades, lugares, categorías y eventos, permitiendo al usuario descubrir destinos, organizar sus favoritos e interactuar con la comunidad mediante reseñas y registros a eventos.
Arquitectura y Stack Tecnológico
Arquitectura Central
- Frontend: Expo + React Native 0.81 con React 19 y React Navigation 7
- Backend: Laravel 13 como API REST (PHP 8.3)
- Autenticación: Laravel Sanctum (tokens de acceso personales)
- Base de datos: MySQL con migraciones versionadas
- Notificaciones: Expo Push Service
Arquitectura por Capas
El proyecto separa claramente cliente y servidor en un monorepo:
frontend/— Aplicación cliente (Expo / React Native) para iOS, Android y Webbackend/— API REST (Laravel 13)
La comunicación se realiza vía HTTP/JSON, con tokens Bearer gestionados por Sanctum y almacenados de forma segura en el dispositivo mediante Expo Secure Store.
Características Clave
Sistema de Exploración Turística
La aplicación organiza el contenido en una jerarquía navegable:
- Ciudades: Destinos principales con sus lugares y eventos asociados
- Categorías: Clasificación temática de lugares (gastronomía, cultura, naturaleza, etc.)
- Lugares (Places): Puntos de interés con detalle, imágenes y reseñas
- Eventos: Actividades con fecha en las que el usuario puede registrarse
Interacción del Usuario
Tourify implementa funciones sociales y de personalización:
- Favoritos: Relación polimórfica que permite guardar tanto lugares como eventos
- Reseñas: Sistema de valoraciones polimórfico para lugares y eventos
- Registro a eventos: Inscripción y cancelación con listado de "mis registros"
- Notificaciones: Bandeja de notificaciones con marcado de leídas y push en tiempo real
Sistema de Autenticación
- Registro, inicio de sesión y recuperación de contraseña basados en tokens
- Sesión persistente mediante Expo Secure Store
- Rutas protegidas con middleware
auth:sanctum - Endpoint
/auth/mepara hidratar el perfil del usuario
Aspectos Técnicos Destacados
Arquitectura API-First
- Recursos públicos (ciudades, categorías, lugares, eventos) accesibles sin autenticación
- Recursos protegidos (favoritos, reseñas, registros, notificaciones) tras Sanctum
- Controladores RESTful organizados por recurso
Sistema de Administración
Existe un módulo administrativo completo separado de la API pública:
- Middleware
is_adminpara control de acceso por rol - Panel con controladores de Dashboard, Usuarios, Ciudades, Categorías, Lugares, Eventos, Reseñas y Notificaciones
- Modelo
Rolepara la gestión de permisos
Relaciones Polimórficas
El modelo de datos aprovecha el polimorfismo de Eloquent para que Favoritos, Reseñas e Imágenes se asocien indistintamente a lugares o eventos, evitando duplicación de tablas y simplificando la lógica.
Notificaciones Push
- Registro del token de dispositivo (
/push-token) - Envío de notificaciones a través del servicio de Expo
- Sincronización con la bandeja interna de notificaciones
Estructura del Proyecto
Modelo de Datos
Entidades principales: Users, Cities, Categories, Places, Events, Favorites, Reviews, Notifications, Images, Event Registrations, Roles.
- Una ciudad agrupa lugares y eventos
- Una categoría clasifica lugares
- Favoritos, reseñas e imágenes son polimórficos (lugares/eventos)
- Los usuarios se registran a eventos (relación N:M con datos extra)
Impacto y Escalabilidad
- Multiplataforma: Una sola base de código para iOS, Android y Web gracias a Expo
- Modular: La separación frontend/backend permite escalar e iterar de forma independiente
- Extensible: El panel administrativo facilita la gestión de contenido sin tocar código
- Tiempo real: Las notificaciones push mantienen al usuario informado de eventos
Notas
Este resumen se basa en la arquitectura actual del proyecto con Laravel 13 (PHP 8.3) y React Native 0.81 / React 19. El enfoque API-first con Sanctum garantiza un modelo de seguridad robusto basado en tokens, mientras que el uso de relaciones polimórficas mantiene el esquema de datos limpio y escalable.