
JWeb es una agencia de soluciones digitales en la que soy el único programador. El trabajo tiene tres partes: el sitio web institucional, la app iOS y un portal donde los clientes siguen todo lo que tienen con la agencia.
El portal de clientes corre sobre PostgreSQL con Drizzle ORM y está sincronizado con Odoo: los tickets del helpdesk, las facturas, las suscripciones, el área comercial y los proyectos de cada cliente vienen directamente del ERP de la agencia. Los clientes no se registran por su cuenta. Reciben una invitación por email y, en el primer acceso, configuran la cuenta y la autenticación de dos factores con una app autenticadora en el móvil, todo sobre Better Auth. A partir de ahí, las novedades llegan por notificación push y por email.
El sitio web está hecho con Next.js 16, React 19 y TypeScript, totalmente localizado en portugués, inglés y español, con una puntuación de 90+ en Lighthouse. El contenido se gestiona con un CMS headless Keystatic con blog en Markdoc, los formularios se validan con React Hook Form, Zod y reCAPTCHA v3, y los correos transaccionales se envían con Resend. La analítica corre sobre Google Tag Manager bajo el GDPR Consent Mode v2.
La app iOS, construida con Capacitor, registra los tokens push en el backend y admite universal links y App Tracking Transparency. Los envíos pasan por una plataforma de notificaciones propia: los tokens de los dispositivos se guardan en PostgreSQL, una consola de administración compone y envía campañas, y un emisor APNs entrega por lotes con rate limiting vía Redis y limpieza automática de tokens inválidos. Todo está diseñado con Tailwind CSS 4 y componentes accesibles de shadcn/ui.