Viaja en tu propia sintonía. Una plataforma de reservas moderna que combina búsqueda por voz con IA, pagos sociales y recomendaciones basadas en el "vibe" musical.
(Nota: Reemplazar con una captura real de la Home)
StayFlow no es solo otra app de reservas; es una reingeniería de la experiencia de usuario en el turismo. Nace de la necesidad de simplificar la planificación de viajes grupales y personalizar el descubrimiento de alojamientos.
El objetivo técnico fue construir una aplicación Full Stack robusta y escalable, utilizando una arquitectura moderna que separa claramente las responsabilidades, asegurando Type Safety de extremo a extremo y una UX fluida.
- 🎙️ Búsqueda por Voz con IA: Los usuarios pueden describir su viaje ideal (ej: "Cabaña en Bariloche para 4 personas") y el sistema procesa el lenguaje natural para aplicar filtros complejos automáticamente.
- 🎵 Spotify Vibe Match: Integración única que analiza las playlists del usuario para recomendar alojamientos que coincidan con su estilo musical y ambiente deseado.
- 💸 Split Pay: Sistema nativo para dividir gastos entre amigos antes de reservar, eliminando la fricción financiera en viajes grupales.
- 🎮 Gamificación (FlowPoints): Sistema de lealtad con niveles (Ripple, Wave, Surfer) que premia a los usuarios por reseñas de calidad, fomentando una comunidad activa.
- 🛠️ Panel de Anfitrión Completo: CRUD completo para gestión de propiedades, subida de imágenes optimizada (Cloudinary) y métricas de rendimiento.
Este proyecto utiliza un stack moderno enfocado en performance, escalabilidad y experiencia de desarrollo.
- Framework: Next.js 14 (App Router)
- Lenguaje: TypeScript
- Estilos: Tailwind CSS & Shadcn/UI
- Estado & Data Fetching: Apollo Client (GraphQL)
- Formularios: React Hook Form + Zod
- Framework: NestJS
- Lenguaje: TypeScript
- API: GraphQL (Code-First approach)
- ORM: Prisma
- Base de Datos: PostgreSQL (via Supabase)
- Almacenamiento: Cloudinary (Gestión de imágenes)
- Linting: ESLint & Prettier
- Control de Versiones: Git & GitHub
Se optó por GraphQL para evitar el over-fetching de datos, especialmente crítico en dispositivos móviles. Esto permite que el frontend solicite exactamente los campos necesarios para componentes complejos como las tarjetas de propiedad (PropertyCard), mejorando los tiempos de carga.
La combinación de Prisma con TypeScript en el backend y la generación de tipos para el frontend asegura que si cambia un modelo en la base de datos, el error se detecta en tiempo de compilación, no en producción.
El backend está estructurado en módulos (Listings, Auth, Reviews), siguiendo los principios SOLID y permitiendo una fácil escalabilidad y mantenimiento del código.
| Búsqueda por Voz | Panel de Anfitrión | Detalle de Propiedad |
|---|---|---|
(Nota para reclutadores: El proyecto está en constante evolución. Las capturas pueden variar ligeramente de la versión desplegada).
Sigue estos pasos para correr el proyecto localmente:
- Node.js (v18+)
- PostgreSQL (o conexión a Supabase)
-
Clonar el repositorio:
git clone https://github.com/MateoDumas2/StayFlow.git cd StayFlow -
Instalar dependencias:
# En la carpeta root (o frontend/backend según estructura) npm install -
Configurar variables de entorno: Renombra
.env.examplea.envy completa tus credenciales (Database URL, Cloudinary, etc.). -
Correr migraciones de Prisma:
npx prisma migrate dev
-
Iniciar el servidor de desarrollo:
npm run dev
Mateo Dumas - Full Stack Developer
Hecho con 💙 y mucho código.