Remixando Cómo Donamos

Rate this content
Bookmark

Una revisión de cómo estamos utilizando Remix en Daffy.org para cambiar la forma en que las personas donan a organizaciones benéficas.


Hablaremos sobre por qué decidimos usar Remix, cómo lo hemos utilizado y migrado desde nuestra aplicación frontend anterior, y algunos patrones y bibliotecas que hemos desarrollado internamente.

This talk has been presented at Remix Conf Europe 2022, check out the latest edition of this React Conference.

FAQ

Daphne es una plataforma diseñada para ayudar a las personas a donar de manera automatizada a las organizaciones benéficas que les importan, mediante una aplicación iOS y una aplicación web.

Daphne utiliza Remix para desarrollar su aplicación web, facilitando la gestión del frontend y mejorando la resiliencia y simplicidad de las operaciones.

La migración a Remix fue decidida para mejorar la resiliencia de la aplicación, simplificar la validación y manejo de formularios, y resolver problemas de lentitud y errores en la carga de páginas.

Durante la migración, Remix y Next.js se conectaron a un servidor Express común, compartiendo el estado de autenticación y permitiendo una transición suave entre ambas tecnologías.

Remix facilita la refactorización y evita la duplicación de código gracias a su manejo de rutas anidadas y componentes que viven directamente en las rutas, simplificando la estructura del proyecto.

Remix utiliza límites de errores para capturar errores inesperados y mostrar mensajes informativos al usuario, contribuyendo a la resiliencia de la aplicación.

Daphne utilizó Express para ejecutar ambos frameworks en un único proceso, manejando las rutas específicas y compartiendo el estado de autenticación entre Remix y Next.js, manteniendo así la funcionalidad durante la transición.

Remix mejora la experiencia del usuario mediante el mejoramiento progresivo, permitiendo que la aplicación sea parcialmente utilizable incluso sin JavaScript, y optimiza la carga de recursos para una navegación más rápida.

Sergio Xalambri
Sergio Xalambri
32 min
18 Nov, 2022

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Daphne utiliza Remix para su aplicación web, beneficiándose de su resistencia, límites de errores, límites de caché y mejora progresiva. Remix simplifica el envío de formularios, la autorización y la validación, y permite una refactorización más fácil y evitar la duplicación de código. Next y Remix se utilizan juntos, con Remix sirviendo como el backend para el frontend y manejando la agregación de datos. Remix proporciona funciones de consulta para obtener datos, mutaciones para la validación de datos de formularios y llamadas a API, y convenciones personalizadas utilizando la exportación de manejo. La migración a Remix resultó en archivos JavaScript más pequeños, una navegación más rápida y la capacidad de precargar datos y activos. El proceso de migración tomó alrededor de nueve meses e involucró la mezcla de Next.js y Remix utilizando Express. Contratar a alguien para trabajar en Remix es más fácil que contratar para otros frameworks.
Available in English: Remixing How We Give

1. Introducción a Daphne y Remix

Short description:

Hola, bienvenidos a mi presentación. Soy Sergio Salambri, desarrollador web en Daphne, y voy a hablar sobre cómo usamos Daphne y Remix en Daphne. Daphne es una plataforma para ayudar a las personas a donar a las organizaciones benéficas en las que se preocupan de manera automatizada. Usamos Remix para nuestra aplicación web porque proporciona resiliencia, límites de errores, límites de caché y mejora progresiva. Con Remix, podemos capturar errores inesperados, mostrar errores conocidos y asegurarnos de que la aplicación siga siendo utilizable incluso si JavaScript no se carga. Además, elegimos RemixBoot por sus capacidades de mutación de formularios.

a hablar sobre cómo usamos Daphne, cómo usamos Remix en Daphne. Entonces, ¿qué es Daphne? Daphne es una plataforma para ayudar a las personas a donar a las organizaciones benéficas en las que se preocupan de manera automatizada. Para hacer eso, proporcionamos tanto una aplicación iOS como una aplicación web y usamos Remix para esa aplicación web. También usamos Remix para otras aplicaciones. Nos vamos a enfocar en cómo lo usamos para la aplicación web principal. Eso es lo que los usuarios utilizan. Así que primero empezamos a usar y construir el front-end. Daphne o MVP era una aplicación de enrutador que se servía desde una ruta de Rails y se compilaba con Rails webpacker. Funcionaba muy bien para las pruebas de concepto del MVP, pero luego lo cambiamos a Next.js para las páginas de aterrizaje y la web porque queríamos tener un servidor y otras características. Tuvimos algunos problemas con la configuración. Las páginas eran lentas en una conexión lenta al sitio web. Si había un error en una de nuestras llamadas a la API para obtener data para renderizar en la página, se bloquearían y mostrarían un error sospechado. Además, los forms eran demasiado complejos para validar y ejecutar errores. Teníamos duplicación innecesaria de código. También el código de fragmentación en la función get server-side props era demasiado complejo, porque necesitas obtenerlo en funciones de alto orden. Así que decidimos que necesitábamos usar algo diferente, y elegimos usar RemixBoot. Y la razón para eso es la primera, la resiliencia. La resiliencia es qué tan bien una aplicación puede seguir funcionando en caso de un error. Remix no hace que tu aplicación funcione todo el tiempo si hay un error, pero te ayuda mucho a llegar allí o cerca de allí. Con límites de errores, podemos capturar cualquier error inesperado y mostrar algo al usuario, como, oye, algo salió mal. Vamos a – ahora sabemos de esto, pero puedes contactar soporte si necesitas más ayuda. Con límites de caché, podemos mostrar cualquier error conocido. Si el usuario va a una organización benéfica y esa organización no existe, no es divertido. O si un proveedor de usuario no existe, no es divertido. Si quieren hacer algo que requiere más dinero en su cuenta, podemos mostrar un mensaje de pago faltante o una interfaz de usuario con límites de caché. También podemos usar Mejora Progresiva. Si JavaScript no se carga por alguna razón, la aplicación sigue siendo en su mayoría utilizable. Al menos pueden acceder al contenido.

2. Simplificando el Envío de Formularios y la Migración a Remix

Short description:

Con Remix, el proceso de envío de formularios, autorización y validación se vuelve mucho más sencillo. La llamada a la acción está en el mismo archivo que el formulario, lo que facilita entender el flujo de la aplicación. Remix también ofrece convenciones y separación de responsabilidades, lo que permite una refactorización más fácil y evitar la duplicación de código. Además, la migración a Remix se realizó ejecutando Remix y Next juntos, utilizando el servidor Express para ejecutar ambas aplicaciones en un solo proceso.

Otra razón fue la mutación de formularios. Con la pila anterior, teníamos que hacer muchas cosas para realizar una mutación, como crear un formulario, un estado para la entrada, serializarlo, enviarlo en un fetch a una API, crear la API en otro archivo, enviar autorización, validar los datos y enviarlos a nuestra API de Rails. Con Remix, esto se vuelve mucho más sencillo. Simplemente renderizamos el formulario, exportamos la acción en el mismo archivo donde vive el formulario. Podemos realizar el servicio y lanzar la autorización y validación de los datos antes de enviarlos a Rails y funciona. Es mucho más sencillo.

La llamada a la acción también está en el mismo archivo del formulario. Eso es un gran beneficio para poder saber qué está sucediendo en una ruta. Vamos a una ruta, entonces hay un formulario. Vamos a la acción. Sabemos qué está haciendo ese formulario. También podemos agregar validación con Solve. Los formularios de múltiples pasos pueden funcionar de manera mucho más sencilla con JavaScript y con el botón de retroceso, algo que no teníamos antes. Y podemos utilizar la transición del usuario para mejorar la experiencia de los usuarios. Y así, desde estados de carga hasta interfaces de usuario optimistas. Las convenciones y la separación de responsabilidades también es otra razón por la que elegimos Remix. Los archivos de rutas ayudan mucho con la refactorización. Podemos simplemente eliminar un archivo de ruta y con eso eliminar la acción, el cargador, el componente, los enlaces, todo. También las rutas anidadas ayudan a evitar la duplicación. No necesitamos mover código a otro archivo e importarlo en muchos archivos como encabezados, a través de las rutas. Simplemente creamos un patrón, una ruta de diseño, y colocamos dentro todo lo que necesita ese encabezado y listo. Y el componente luego vive en la ruta. Los cargadores y las acciones también utilizan estándares. Y pasamos menos tiempo en la documentación de Remix y más tiempo en la documentación de Mozilla Developer Network. También significa que contratar y enseñar la pila es más sencillo. Contratamos a alguien que no conocía Remix y ella aprendió Remix para la entrevista y pasó la entrevista y otros desarrolladores enfocados en el backend pudieron aprender Remix súper rápido, en un día o menos de un día, y comenzaron a usarlo. Ahora, cómo nos migramos a Remix. Sabíamos que queríamos usar Remix, pero aún teníamos esta gran aplicación de Next. Lo que hicimos, lo primero fue que no podíamos migrar todo de una vez, así que decidimos ejecutar Remix y Next juntos. Para hacer esto, aprovechamos que Remix se puede conectar a un servidor Express y Next también se puede conectar a un servidor Express.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Construyendo Mejores Sitios Web con Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Construyendo Mejores Sitios Web con Remix
Top Content
Remix is a web framework built on React Router that focuses on web fundamentals, accessibility, performance, and flexibility. It delivers real HTML and SEO benefits, and allows for automatic updating of meta tags and styles. It provides features like login functionality, session management, and error handling. Remix is a server-rendered framework that can enhance sites with JavaScript but doesn't require it for basic functionality. It aims to create quality HTML-driven documents and is flexible for use with different web technologies and stacks.
No resuelvas problemas, elimínalos
React Advanced 2021React Advanced 2021
39 min
No resuelvas problemas, elimínalos
Top Content
Kent C. Dodds discusses the concept of problem elimination rather than just problem-solving. He introduces the idea of a problem tree and the importance of avoiding creating solutions prematurely. Kent uses examples like Tesla's electric engine and Remix framework to illustrate the benefits of problem elimination. He emphasizes the value of trade-offs and taking the easier path, as well as the need to constantly re-evaluate and change approaches to eliminate problems.
Escalando con Remix y Micro Frontends
Remix Conf Europe 2022Remix Conf Europe 2022
23 min
Escalando con Remix y Micro Frontends
Top Content
This talk discusses the usage of Microfrontends in Remix and introduces the Tiny Frontend library. Kazoo, a used car buying platform, follows a domain-driven design approach and encountered issues with granular slicing. Tiny Frontend aims to solve the slicing problem and promotes type safety and compatibility of shared dependencies. The speaker demonstrates how Tiny Frontend works with server-side rendering and how Remix can consume and update components without redeploying the app. The talk also explores the usage of micro frontends and the future support for Webpack Module Federation in Remix.
Entendiendo la Arquitectura Fiber de React
React Advanced 2022React Advanced 2022
29 min
Entendiendo la Arquitectura Fiber de React
Top Content
This Talk explores React's internal jargon, specifically fiber, which is an internal unit of work for rendering and committing. Fibers facilitate efficient updates to elements and play a crucial role in the reconciliation process. The work loop, complete work, and commit phase are essential steps in the rendering process. Understanding React's internals can help with optimizing code and pull request reviews. React 18 introduces the work loop sync and async functions for concurrent features and prioritization. Fiber brings benefits like async rendering and the ability to discard work-in-progress trees, improving user experience.
Componentes de Full Stack
Remix Conf Europe 2022Remix Conf Europe 2022
37 min
Componentes de Full Stack
Top Content
RemixConf EU discussed full stack components and their benefits, such as marrying the backend and UI in the same file. The talk demonstrated the implementation of a combo box with search functionality using Remix and the Downshift library. It also highlighted the ease of creating resource routes in Remix and the importance of code organization and maintainability in full stack components. The speaker expressed gratitude towards the audience and discussed the future of Remix, including its acquisition by Shopify and the potential for collaboration with Hydrogen.
Depuración de JS
React Summit 2023React Summit 2023
24 min
Depuración de JS
Top Content
Debugging JavaScript is a crucial skill that is often overlooked in the industry. It is important to understand the problem, reproduce the issue, and identify the root cause. Having a variety of debugging tools and techniques, such as console methods and graphical debuggers, is beneficial. Replay is a time-traveling debugger for JavaScript that allows users to record and inspect bugs. It works with Redux, plain React, and even minified code with the help of source maps.

Workshops on related topic

Domina los Patrones de JavaScript
JSNation 2024JSNation 2024
145 min
Domina los Patrones de JavaScript
Top Content
Featured Workshop
Adrian Hajdin
Adrian Hajdin
Durante esta masterclass, los participantes revisarán los patrones esenciales de JavaScript que todo desarrollador debería conocer. A través de ejercicios prácticos, ejemplos del mundo real y discusiones interactivas, los asistentes profundizarán su comprensión de las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables. Al final de la masterclass, los participantes ganarán una nueva confianza en su capacidad para escribir código JavaScript de alta calidad que resista el paso del tiempo.
Puntos Cubiertos:
1. Introducción a los Patrones de JavaScript2. Patrones Fundamentales3. Patrones de Creación de Objetos4. Patrones de Comportamiento5. Patrones Arquitectónicos6. Ejercicios Prácticos y Estudios de Caso
Cómo Ayudará a los Desarrolladores:
- Obtener una comprensión profunda de los patrones de JavaScript y sus aplicaciones en escenarios del mundo real- Aprender las mejores prácticas para organizar el código, resolver desafíos comunes y diseñar arquitecturas escalables- Mejorar las habilidades de resolución de problemas y la legibilidad del código- Mejorar la colaboración y la comunicación dentro de los equipos de desarrollo- Acelerar el crecimiento de la carrera y las oportunidades de avance en la industria del software
IA a demanda: IA sin servidor
DevOps.js Conf 2024DevOps.js Conf 2024
163 min
IA a demanda: IA sin servidor
Top Content
Featured WorkshopFree
Nathan Disidore
Nathan Disidore
En esta masterclass, discutimos los méritos de la arquitectura sin servidor y cómo se puede aplicar al espacio de la IA. Exploraremos opciones para construir aplicaciones RAG sin servidor para un enfoque más lambda-esque a la IA. A continuación, nos pondremos manos a la obra y construiremos una aplicación CRUD de muestra que te permite almacenar información y consultarla utilizando un LLM con Workers AI, Vectorize, D1 y Cloudflare Workers.
Fundamentos de Remix
React Summit 2022React Summit 2022
136 min
Fundamentos de Remix
Top Content
Featured WorkshopFree
Kent C. Dodds
Kent C. Dodds
Construir aplicaciones web modernas está lleno de complejidad. Y eso solo si te molestas en lidiar con los problemas
¿Cansado de conectar onSubmit a las API del backend y asegurarte de que tu caché del lado del cliente se mantenga actualizada? ¿No sería genial poder utilizar la naturaleza global de CSS en tu beneficio, en lugar de buscar herramientas o convenciones para evitarla o trabajar alrededor de ella? ¿Y qué te parecería tener diseños anidados con una gestión de datos inteligente y optimizada para el rendimiento que simplemente funciona™?
Remix resuelve algunos de estos problemas y elimina completamente el resto. Ni siquiera tienes que pensar en la gestión de la caché del servidor o en los conflictos del espacio de nombres global de CSS. No es que Remix tenga APIs para evitar estos problemas, simplemente no existen cuando estás usando Remix. Ah, y no necesitas ese enorme y complejo cliente graphql cuando estás usando Remix. Ellos te tienen cubierto. ¿Listo para construir aplicaciones más rápidas de manera más rápida?
Al final de esta masterclass, sabrás cómo:- Crear Rutas de Remix- Estilizar aplicaciones de Remix- Cargar datos en los cargadores de Remix- Mutar datos con formularios y acciones
De vuelta a las raíces con Remix
React Summit 2023React Summit 2023
106 min
De vuelta a las raíces con Remix
Featured Workshop
Alex Korzhikov
Pavlik Kiselev
2 authors
La web moderna sería diferente sin aplicaciones ricas del lado del cliente respaldadas por potentes frameworks: React, Angular, Vue, Lit y muchos otros. Estos frameworks se basan en JavaScript del lado del cliente, que es su núcleo. Sin embargo, existen otros enfoques para el renderizado. Uno de ellos (bastante antiguo, por cierto) es el renderizado del lado del servidor completamente sin JavaScript. Descubramos si esta es una buena idea y cómo Remix puede ayudarnos con ello?
Prerrequisitos- Buen entendimiento de JavaScript o TypeScript- Sería útil tener experiencia con React, Redux, Node.js y escribir aplicaciones FrontEnd y BackEnd- Preinstalar Node.js, npm- Preferimos usar VSCode, pero también se pueden utilizar IDE en la nube como codesandbox (otros IDE también están bien)
Cómo Resolver Problemas del Mundo Real con Remix
Remix Conf Europe 2022Remix Conf Europe 2022
195 min
Cómo Resolver Problemas del Mundo Real con Remix
Featured Workshop
Michael Carter
Michael Carter
- ¿Errores? Cómo renderizar y registrar tus errores del servidor y del clientea - Cuándo devolver errores vs lanzar excepcionesb - Configurar servicios de registro como Sentry, LogRocket y Bugsnag- ¿Formularios? Cómo validar y manejar formularios de varias páginasa - Usar zod para validar los datos del formulario en tu acciónb - Pasar por formularios de varias páginas sin perder datos- ¿Atascado? Cómo solucionar errores o funciones faltantes en Remix para que puedas continuara - Usar patch-package para solucionar rápidamente tu instalación de Remixb - Mostrar herramienta para gestionar múltiples parches y seleccionar solicitudes de extracción abiertas- ¿Usuarios? Cómo manejar aplicaciones de varios inquilinos con Prismaa - Determinar el inquilino por el host o por el usuariob - Base de datos múltiples o base de datos única/múltiples esquemasc - Asegura que los datos del inquilino siempre estén separados de los demás
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.