El contexto
emple.app es una plataforma laboral pensada para el mercado paraguayo. Su propósito es conectar a profesionales, empresas y reclutadores en un solo marketplace donde se pueden publicar vacantes, construir perfiles, gestionar postulaciones, mantener conversaciones, generar contratos y administrar CVs.
El proyecto nace de la observación de que muchos procesos de selección en la región todavía corren por WhatsApp, correos sueltos y planillas. Eso genera fricción para el candidato, poca trazabilidad para el reclutador y una mala experiencia de marca para la empresa contratante.
El desafío
Construir un marketplace laboral usable implica resolver varios flujos distintos que conviven en la misma plataforma:
- Tres actores con necesidades distintas: el profesional quiere visibilidad y un CV fácil de mantener; el reclutador quiere filtrar y gestionar pipelines; la empresa quiere control de sucursales y vacantes.
- Autenticación y roles robustos: Better Auth sobre el modelo propio
Usuario, con flujos de sesión seguros y multiempresa por cookies activas. - Datos que no se pueden perder: postulaciones, mensajes, contratos y estados de vacantes deben ser trazables y auditables.
- Operación en español: el modelo de dominio mantiene nombres en español (
Usuario,Empresa,Vacante,Postulacion) para que el código refleje el negocio real. - Testing real: la lógica de negocio amerita unitarios, integración y e2e para evitar que un cambio en el pipeline rompa una postulación.
La solución
emple.app está construido con Next.js 15 App Router, React 19 y TypeScript estricto. La base de datos es PostgreSQL 16 con Prisma 5.22 como ORM, y la autenticación corre sobre Better Auth adaptado al modelo propio de usuarios.
La interfaz usa Tailwind CSS 4 y componentes estilo shadcn/ui, con el diseño y el copy en español rioplatense de Paraguay. El almacenamiento de archivos va a DigitalOcean Spaces compatible con S3.
El modelo de dominio cubre:
Usuario,PerfilProfesional,EmpresaySucursalpara modelar identidad y organización.VacanteyPostulacionpara el flujo de oferta y aplicación.Contrato,Mensaje,NotificacionyReporteUsuariopara operación y comunicación.
El testing corre con Vitest, Testing Library y Playwright, con bases .env.local y .env.test separadas para evitar tocar producción por accidente. La regla de oro del proyecto es: si el comando toca Prisma, se usa un script con sufijo :local, :test o :prod.
Las rutas destacadas incluyen /explorar para vacantes, /talento para el directorio de profesionales, /perfil/cv para el CV, /empresa para el área de reclutador y /panel/vacantes/nueva para publicar oportunidades.
Resultado
emple.app vive en emple.app y funciona como el punto de encuentro entre talento y empresas en Paraguay. La arquitectura permite escalar perfiles, vacantes y mensajes sin perder la trazabilidad de cada postulación.
Para Owncoding, el proyecto demuestra cómo se puede levantar un marketplace completo —con múltiples roles, flujos de mensajería y contratos— sobre una base moderna de Next.js, Prisma y PostgreSQL, manteniendo el modelo de negocio expresado en español desde la base de datos hasta la UI.