El contexto
Concierge CR es una plataforma dirigida a clientes internacionales de alto poder adquisitivo que visitan Jacó, Santa Teresa y Tamarindo en Costa Rica. No es una landing informativa — es una plataforma operativa completa: sitio público premium más un panel de administración con roles, pensada para que un equipo real gestione solicitudes, pagos y reservas todos los días.
El reto
Un servicio de concierge de lujo vende experiencias distintas (villas, transporte privado, actividades) cada una con su propia lógica de precio y disponibilidad, y necesita procesar depósitos y pagos reales sin fricción, mientras un equipo interno (no solo el dueño) da seguimiento a cada solicitud desde un panel con permisos diferenciados.
La solución
Una plataforma full-stack sobre Next.js 14 y TypeScript, con Prisma y PostgreSQL como capa de datos, autenticación con NextAuth, pagos con Stripe en USD, y un panel administrativo con roles de Admin y Staff — cada uno con distinto nivel de acceso — más un dashboard de analíticas para dar seguimiento a las solicitudes en tiempo real.
Funcionalidades clave
- Alquiler de villas: galería, amenidades, precios y disponibilidad por propiedad
- Transporte premium: transfers en helicóptero, alquiler de yates y más
- Experiencias: surf coaching, retiros de bienestar, eventos exclusivos
- Sistema de solicitudes multi-paso con validación en tiempo real (Zod)
- Emails automatizados de confirmación y seguimiento vía Resend
- Pagos en línea (depósitos y pagos completos) integrados con Stripe
- Panel administrativo con roles Admin / Staff y control de acceso diferenciado
- Dashboard de analíticas y gestión de solicitudes
- Widget de WhatsApp con mensajes predefinidos para contacto directo
El desafío técnico más interesante
Más allá del catálogo de servicios, el punto crítico fue la capa de seguridad: rate limiting en los endpoints públicos, protección CSRF en formularios, sanitización de inputs contra XSS, cabeceras de seguridad (CSP, HSTS, X-Frame-Options), validación server-side con Zod en cada ruta de API, prevención de inyección SQL vía Prisma ORM (queries parametrizadas), y un log de auditoría que registra cada acción realizada dentro del panel administrativo. Para una plataforma que maneja pagos reales y datos de huéspedes, esa capa no es opcional — es tan parte del producto como el catálogo de villas.
Stack técnico
Next.js 14 · TypeScript · Tailwind CSS · Prisma · PostgreSQL · NextAuth · Stripe · Resend · Framer Motion · Zod