El Umbral — Hub de proyectos de ayuda
Un hub bilingüe de "busca antes de construir" para la ayuda tras el terremoto en Venezuela — encuentra un esfuerzo existente y únete, o publica el tuyo con el stack y la ayuda que necesita.
Resumen
El Umbral es el hub de descubrimiento de proyectos Build4Venezuela para ayuda post-terremoto: una plataforma de "busca antes de construir" para que los voluntarios dejen de duplicar esfuerzos. Busca una idea — si ya existe un esfuerzo similar, únete a ese repo y contribuye; si no, publica el tuyo con su stack tecnológico y la ayuda que necesita (contribuidores, créditos de API, patrocinadores). Un directorio de Builders importado del roster del hackathon muestra quién está disponible para ayudar. Se lanza bilingüe (español por defecto /es con /en), funciona sin base de datos para el MVP, y expone una API pública de solo lectura para que otras herramientas de ayuda construyan sobre el mismo catálogo.
El problema
Tras el terremoto, los voluntarios de ayuda seguían reconstruyendo las mismas herramientas en paralelo — quemando el recurso más escaso en una crisis: el tiempo. No había un solo lugar para verificar si una idea ya tenía equipo antes de empezar desde cero, ni un catálogo compartido y legible por máquina de quién construía qué. El Umbral hace que "¿esto ya existe?" sea el primer paso en lugar de una ocurrencia tardía.
Preguntas abordadas
- 01
¿Cómo evitas que los voluntarios dupliquen herramientas de ayuda sin añadir fricción a publicar una nueva?
- 02
¿Cómo puede una verificación difusa de "¿ya existe?" advertir fuerte sobre casi-duplicados mientras deja pasar ideas genuinamente nuevas?
- 03
¿Cómo lanzas un MVP bilingüe sin base de datos hoy que pueda cambiar a una base de datos real después sin reescribir cada caller?
Metodología
Datos local-first detrás de un seam de repositorio
Todos los datos viven en archivos JSON versionados detrás de un repositorio tipado único en src/lib/repository — componentes y rutas nunca leen JSON directamente. Ese seam es el punto de intercambio: P1 migra a Supabase (Postgres) sin tocar ningún caller. Los schemas Zod en src/lib/schemas.ts son la única fuente de verdad (los tipos se infieren de ellos) y validan toda entrada externa — formulario, sheet, scrape, API — en el límite.
Búsqueda difusa + i18n bilingüe
Un motor Fuse.js impulsa el flujo central de "busca antes de construir": coincidencias fuertes advierten fuerte en la página de búsqueda, y el mismo motor impulsa un empujón pre-publicación para que casi-duplicados aparezcan antes de crear un proyecto nuevo. Toda la app es bilingüe mediante diccionarios hechos a mano en src/lib/i18n (sin librería i18n de terceros) — español por defecto con paridad en inglés, cada string en ambos idiomas.
Board, publicar y Builders — Server Actions
El board filtra proyectos por categoría, stack, idioma, estado y necesidad, todo impulsado por URL searchParams para que cualquier vista sea compartible. Publicar es una Server Action validada con Zod que añade al seed set. Un directorio de Builders importado del Google Sheet del hackathon lista talento disponible. El estado es un ciclo de vida (planning a wip a testing a mvp a live) y los conteos de votos son autoritativos del servidor para evitar doble conteo.
API pública de solo lectura + despliegue Vercel
Una superficie REST versionada y solo GET en /api/v1 expone todo el catálogo como JSON para otras herramientas de ayuda — un envelope ({ success, data, error, meta }), CORS abierto, catálogo cacheado en CDN con /stats y /votes en vivo. Diez endpoints en total. Cada color y radio es un token de diseño CSS, así toda la app se re-tematica editando solo valores de tokens. Se auto-despliega desde main a elumbralvzla.org en Vercel.
Resultados clave
Hallazgos clave
Un solo seam de repositorio (src/lib/repository) permite que el MVP corra en JSON local hoy y cambie a Postgres en P1 sin cambiar un solo componente o ruta — la fuente de datos es un detalle de implementación, no un compromiso arquitectónico.
Definir schemas Zod una vez e inferir tipos TypeScript de ellos mantiene validación y tipos siempre alineados, y hace que "validar en el límite" sea el default para toda entrada externa.
Reutilizar un motor Fuse.js para la página de búsqueda y el empujón pre-publicación mantiene la verificación de duplicados consistente en todas partes — la misma coincidencia que advierte a un buscador también advierte a un publicador.
Impulsar el board enteramente desde URL searchParams hace que cada vista filtrada sea compartible y guardable, y mantiene la lógica de filtrado en el servidor con cero estado cliente.
Poner todo color y radio en tokens de diseño CSS convierte un re-skin completo en una edición solo de valores — ningún componente hardcodea un color, así re-tematizar nunca toca código de componentes.
Conclusión
El Umbral muestra que el software de respuesta a crisis puede ser tanto rápido de lanzar como construido para durar: un MVP sin base de datos que está en vivo y bilingüe hoy, arquitectado para que la migración a base de datos real, búsqueda semántica y auth (P1 a P2) nunca fuerce un rewrite. La disciplina que lo hace durable — un seam de repositorio, Zod como única fuente de verdad, tokens para theming, una API pública sobre la que otros construyen — es la misma que permitió lanzarlo. Es código abierto (MIT) y está en vivo en elumbralvzla.org.
Galería
