Todos los proyectos
Listo2026

Iter AI Parking

Gestión de estacionamientos asequible para dueños de lotes en América Latina que no pueden justificar infraestructura de centro comercial

Rol
Desarrollador único
Stack
TanStack StartReactTypeScriptSupabaseCloudflare WorkersGeminiCreemPWA
Pantalla de inicio de sesión de Iter AI con selector de inglés y español y pestañas acotadas por rol
Abrir app en vivo

Las credenciales de cuentas de prueba para los cuatro perfiles (conductor, dueño, personal, iter_ops) están disponibles a solicitud. Se rotan cuando termines de explorar o al cabo de una hora, lo que ocurra primero. Solicitar acceso

El problema

En toda América Latina, miles de estacionamientos independientes —a nivel de calle, en edificios comerciales, garajes de barrio— nunca acceden a los sistemas de gestión que los centros comerciales dan por sentados. La infraestructura empresarial de estacionamientos está costeada y dimensionada para operadores con capital e incentivos de volumen. Los dueños más pequeños funcionan con bitácoras de entrada, cajas de efectivo e hilos de WhatsApp porque nada asequible les da reservas, visibilidad de la ocupación, coordinación del personal y pagos digitales en un solo lugar.

La brecha está del lado del dueño: operadores que pagarían una mensualidad pequeña por infraestructura digital de verdad si el producto correspondiera a su presupuesto y a su complejidad — no un despliegue de plataforma de seis cifras.

Los conductores sufren el dolor río abajo (no hay forma confiable de encontrar o reservar un puesto), pero el producto está construido para servir primero al dueño que necesita herramientas de gestión, y en segundo lugar como canal de cara al conductor.

La solución

Iter AI Parking es gestión de estacionamientos asequible para esos dueños — una plataforma multi-perfil sobre TanStack Start + Supabase, desplegada en Cloudflare Workers y costeada para un ARPU mensual bajo (Pro a USD 6 al mes). Los dueños reciben un portal de operaciones completo: puestos, reservas, verificación en la entrada, ingresos sin reserva, delegación al personal, billing y flujos de entrada offline. Los conductores obtienen búsqueda de estacionamientos cercanos y reserva a nivel de puesto sobre esa red de dueños.

Todo el producto que puedes probar hoy es el resultado de un ejercicio de MVP cronometrado: menos de 40 horas de trabajo en solitario — prueba de que una infraestructura digital significativa para este segmento no exige presupuestos ni plazos empresariales.

Pruébalo en vivo — navega como invitado, o solicita cuentas de prueba para cualquier perfil.

Los perfiles a fondo

Conductor

App de consumidor mobile-first en /home: alterna entre On the road (ancla de GPS en vivo, radio de 50 km) y Home local (ancla de casa guardada, radio de 15 km). Los estacionamientos cercanos vienen de un RPC de Postgres — ordenados por distancia, filtrados por disponibilidad. Toca un estacionamiento → /lots/:id para ver precios y comodidades → /lots/:id/reserve para elegir puesto y franja horaria → confirmación con QR de checkout, enlace de pago externo y deep links de entrada. Gestiona las reservas próximas y pasadas en /bookings. Sin mapa embebido — el descubrimiento por lista mantiene los costos en cero.

Dueño del estacionamiento

Portal B2B en /owner/*: panel con KPIs, grilla de ocupación e ingresos; operaciones para el CRUD de estacionamientos y puestos, contratos, reservas de ingreso sin reserva previa y subida de imágenes; pestaña de acceso para búsqueda en la entrada y verificación del checkout; billing de Creem Pro (USD 6 al mes) con cupos adicionales de estacionamientos; y ajustes para el perfil del negocio y los métodos de pago. El tier Pro desbloquea las operaciones offline (cache en IndexedDB para los flujos de entrada cuando se cae la conectividad). Previsualiza los estacionamientos como los vería un conductor en /discover.

Personal

Workspace delegado en /staff/work/:ownerId: acepta invitaciones del empleador desde /staff/dashboard y luego trabaja dentro del portal del dueño con permisos a nivel de pestaña (panel, operaciones, acceso, vista del cliente). Reporta horas y gestiona el horario por cada vínculo de empleador. Los permisos son una capa de delegación en la UI sobre una RLS acotada al empleador.

Iter ops (interno)

Consola en /internal/* detrás de MFA y allowlist de IP opcional: triage de bugs, eventos de confianza, vista de solo lectura de estacionamientos y reservas entre tenants, búsqueda de personas para GDPR, cola de reembolsos de Creem (rango admin) e impersonación auditada de comerciantes. Los ítems de navegación se filtran por rango de ops — support, commercial, admin.

Cómo funciona la búsqueda de estacionamientos cercanos

El reto de geolocalización marcó la arquitectura:

  1. Solo el navegador — navigator.geolocation.getCurrentPosition; sin API de geocoding, sin tiles de mapa.
  2. RPC de Postgres — nearby_parking_lots aplica un prefiltro por bounding box sobre coordenadas indexadas, y luego distancia haversine en SQL, filtros de comodidades y un tope duro de 50 filas.
  3. Eficiencia en el cliente — cache en memoria de 3 minutos en Home, deduplicación de peticiones en vuelo para pedidos idénticos, listas de columnas mínimas en las vistas de listado (los campos pesados solo en el detalle del estacionamiento) y cache por ETag en las peticiones de detalle.
  4. Fallback elegante — si se niega el GPS o no hay ancla configurada, se devuelve una lista global de estacionamientos con tope, ordenada por nombre.

Documentado en la lista de control de gobernanza de costos del repositorio, para que el egress y los MAU se mantengan dentro del margen del tier gratuito de Supabase.

Capa de IA (alcance honesto)

Backend entregado: copiloto de instrucciones del dueño con Gemini (Edge Function owner-copilot), con guardrails de NVIDIA NeMo, historial de conversación y débitos medidos por tokens. La UI está apagada detrás de un feature flag antes del lanzamiento.

Roadmap (no entregado): recomendaciones de cara al conductor, pronóstico de disponibilidad y reservas por concierge de WhatsApp.

El MVP de 40 horas

Esto no es una diapositiva de roadmap — es la restricción de entrega bajo la que se construyó todo el producto. La pregunta era: ¿cómo se ve una plataforma de estacionamientos de grado producción cuando un desarrollador en solitario tiene menos de 40 horas en total?

La respuesta es lo que ves en la app en vivo: cuatro perfiles con guardas de ruta y RLS, reservas a nivel de puesto, operaciones y billing del dueño, delegación al personal, una consola interna de ops, suscripciones de Creem, enlaces de pago externos, flujos de entrada offline del tier Pro y un backend de copiloto con Gemini — todo sobre un solo stack de TanStack Start + Supabase, desplegado en Cloudflare Workers. Sin reescritura por fases; el estado actual es el MVP.

Escala de ingeniería

SSR de TanStack Start sobre Cloudflare Workers, 11 Edge Functions de Supabase (webhooks de billing, runtime de pagos, copiloto del dueño, impersonación de ops, eliminación de cuentas), endurecimiento de RLS con guardas de rol sobre el perfil, hCaptcha en la autenticación, i18n EN/ES y un manual de QA manual con una matriz de abuso para los cuatro perfiles.

Puntos clave

  • Hecho para dueños de estacionamientos independientes en América Latina que necesitan gestión digital por una mensualidad pequeña — no infraestructura empresarial de centro comercial
  • Producto completo — cuatro portales, billing, pagos, modo offline — construido en menos de 40 horas de trabajo en solitario, como ejercicio de MVP cronometrado
  • Cuatro portales — conductor, dueño, personal y ops interno — cada uno con guardas de ruta y RLS acotada por rol sobre tablas compartidas
  • Flujo de punta a punta del conductor: búsqueda de estacionamientos cercanos con GPS → reserva de puesto y horario → QR de checkout + pago externo → gestión de reservas
  • Portal B2B del dueño: CRUD de estacionamientos y puestos, ocupación en vivo, verificación en la entrada, ingresos sin reserva, billing de Creem Pro y operaciones offline del tier Pro
  • Cero gasto en APIs de mapas — Geolocation del navegador + RPC de Postgres con bounding box y haversine (tope de 50 filas, cache en el cliente)
  • Backend del copiloto del dueño con Gemini, guardrails de NeMo y billing medido por tokens (la UI está detrás de un feature flag antes del lanzamiento)

Retos

Resultados

  • MVP multi-perfil completo en vivo sobre Cloudflare Workers — conductor, dueño, personal y ops — a partir de menos de 40 horas de construcción en total
  • Estacionamientos con seed data en Manila y flujos de punta a punta de reserva, pago y verificación en la entrada para todos los perfiles
  • Revisión de authz previa al lanzamiento completa — sin P0/P1 explotables en la pasada por perfiles
  • Cobertura de Vitest para la matemática geoespacial, los webhooks de billing, los errores de tope, las redirecciones de auth y las compuertas de ops interno

Demo

Abrir app en vivo

Flujo del conductor

  1. Abrir /home → estacionamientos cercanos ordenados por distancia (GPS «On the road» o el ancla local «Home» guardada)
  2. Elegir un estacionamiento → ver precios, amenidades y disponibilidad de espacios
  3. Reservar → elegir espacio + franja horaria → confirmar la reserva
  4. Pagar con el enlace de billetera externa del dueño o el QR de salida → seguimiento en /bookings

Trabajemos juntos

manuel@manuelvargas.dev

Abierto a roles de tiempo completo y a contratos freelance. Respondo en menos de 48 horas.