Kit de UI de la App de Canva: Empoderando a los Desarrolladores con Tecnologías Web Modernas

Rate this content
Bookmark

En Canva, ayudamos a más de 150 millones de usuarios mensuales a crear y diseñar. ¿Cómo habilitamos a los desarrolladores para hacer lo mismo? Presentamos el SDK de Apps de Canva, que está construido para empoderar a los desarrolladores para crear interfaces de usuario para sus Apps de Canva usando React. Canva recientemente optimizó el proceso de creación de aplicaciones al compilar algunos de los componentes de UI más utilizados y solicitados por nuestros desarrolladores en nuestro

paquete @Canva /app-ui-kit. Compartiré cómo iteramos sobre nuestro SDK de Apps para empoderar a los desarrolladores de todo el mundo para integrar su marca en Canva.

FAQ

En Canva, los servicios de back-end generalmente están escritos en Java. Para el tooling se utiliza Go, Bash, TypeScript o Python, siendo Python el preferido para los modelos de ML. El front-end utiliza principalmente TypeScript y React.

Canva utiliza un patrón modificado de MVP llamado patrón de componente presentado en la tienda, que incluye tiendas para mantener el estado, presentadores que operan en estas tiendas, componentes sin estado y fábricas que hacen el cableado de los componentes.

Inicialmente, Canva fue desarrollado sin un marco específico en 2013. Sin embargo, hacia 2017, se adoptaron TypeScript, MobX y React para mejorar la gestión del estado y facilitar el desarrollo modular, adecuándose a los cambios en el panorama de JavaScript.

Canva proporciona una biblioteca de interfaz de usuario con una licencia semi-abierta, diseñada específicamente para aplicaciones construidas para la plataforma. Esta estrategia permite integrar mejoras y mantener la consistencia con el estilo y accesibilidad de Canva.

Canva comenzó con 14 empleados en 2013 y experimentó un crecimiento rápido, alcanzando casi 250 empleados para el año 2017. Este crecimiento impulsó una reestructuración significativa para permitir que cientos de desarrolladores trabajaran productivamente en la base de código.

En Canva, las tiendas mantienen el estado y son utilizadas por los presentadores, quienes contienen la lógica para los componentes, manejan la mutación de datos y desencadenan efectos secundarios. Este diseño ayuda a separar la interfaz de usuario de la lógica empresarial, facilitando las pruebas y la mantenibilidad.

El uso de MobX y React ha permitido a Canva crear un patrón de diseño masivamente componible, lo que ha sido clave para escalar la plataforma y facilitar el desarrollo modular y la gestión eficiente del estado a través de la base de código.

La comunidad de desarrolladores ha enriquecido la plataforma de Canva con numerosas integraciones de aplicaciones, aumentando la funcionalidad disponible para los 150 millones de usuarios activos mensuales y fomentando una participación más activa en el ecosistema de Canva.

Tom Northall-Little
Tom Northall-Little
8 min
13 Nov, 2023

Comments

Sign in or register to post your comment.

Video Summary and Transcription

Bienvenidos a la charla técnica de Canva donde se discuten el stack tecnológico de Canva, la estructura de componentes de React y el kit de UI para desarrolladores. Canva utiliza Java, Go, Bash, TypeScript y React para el desarrollo. TypeScript, MobX y React fueron elegidos para permitir a cientos de desarrolladores trabajar productivamente en la base de código. La biblioteca de componentes interna de Canva fue explorada y lanzada bajo una licencia semi-abierta, permitiendo una entrega rápida y compartiendo mejoras con la comunidad. La comunidad de desarrolladores ha añadido numerosas integraciones de aplicaciones accesibles para los 150 millones de usuarios activos mensuales de Canva.

1. Introducción a Canva Tech Talk

Short description:

Bienvenidos a la charla técnica de Canva. Hemos ampliado y mejorado la experiencia de Canva. Repasaré la pila tecnológica de Canva, la estructura de los componentes de React y cómo llevamos nuestro kit de interfaz de usuario a los desarrolladores. Canva es una plataforma de diseño con una suite visual, que incluye presentaciones, pizarras, documentos, productos impresos y sitios web. Utilizamos lenguajes bendecidos para el desarrollo, como Java para los servicios de back-end, Go, Bash, TypeScript o Python para las herramientas, y TypeScript y React para el front-end.

Gracias. Bienvenidos a la charla técnica de Canva. Esta es una versión diferente de la charla. Hemos trabajado un poco para ampliar y mejorar la experiencia de Canva.

En esta charla, voy a repasar rápidamente la pila tecnológica de Canva, cómo estructuramos nuestros React componentes y cómo llevamos nuestro kit de interfaz de usuario a las manos de los desarrolladores. Si no estás familiarizado con Canva, es una design plataforma con una suite visual, que incluye herramientas como presentaciones, pizarras, documentos, productos impresos y sitios web.

Así que, de todos modos, comencemos a sumergirnos en la pila tecnológica de Canva y cómo llegamos a donde estamos hoy. En Canva tenemos lo que llamamos lenguajes bendecidos, que consideramos ser lenguajes aceptables para desarrollar productos, características y tooling cuando trabajamos en esos respectivos dominios. Al limitar el número de lenguajes que consideramos bendecidos, ganamos enfoque para el interno tooling mientras construimos experiencia especializada en toda la organización y el producto. Entonces, los servicios de back-end generalmente están escritos en Java. Tooling está escrito en Go, Bash, TypeScript o Python. Python es el preferido para los modelos de ML. Y finalmente, TypeScript y React es el lenguaje del front-end.

2. React, TypeScript y el SDK de Apps

Short description:

En el MVP inicial para Canva en 2013, había una prisa por construir nuevas características. A medida que la empresa creció rápidamente, el objetivo en 2017 era permitir que cientos de desarrolladores trabajaran productivamente en la base de código. Decidimos por TypeScript, MobX y React por su flexibilidad y modularidad. Nuestro patrón MVP modificado, el patrón de componente presentado en la tienda, separa la interfaz de usuario de la lógica empresarial. MobX y React nos permiten crear un patrón componible en todo el código. Durante los últimos tres años, he estado trabajando en el SDK de aplicaciones, que permite a los desarrolladores construir experiencias únicas en el editor de Canva.

Pero no siempre usamos React y TypeScript. En el MVP inicial para Canva en 2013 fue efectivamente sin marco. Hubo esta constante prisa al principio para seguir construyendo nuevas características y cualquier cambio arquitectónico al producto tendría que hacerse junto con el desarrollo agresivo de características. La base de código original podría acomodar fácilmente a cinco o más ingenieros trabajando simultáneamente, productivamente. Pero estábamos creciendo muy rápidamente como empresa. Y solo para comparar, en 2013, solo teníamos 14 empleados. Pero para 2017, teníamos más de, bueno, casi 250 empleados.

Entonces, cuando comenzamos a pensar en esta refactorización en 2017, el objetivo principal era permitir que cientos de desarrolladores trabajaran productivamente en la base de código. Entonces, para 2017, cuando comenzamos a investigar, descubrimos que el panorama de JS había cambiado bastante dramáticamente en esos años, como, considera el hecho de que React se lanzó en 2013, y esa fue la misma época en que realmente, ya sabes, desarrollamos nuestro MVP inicial. Entonces puedes empezar a entender cómo había cambiado el panorama. Y entonces tuvimos que encontrar qué bibliotecas funcionaban con los patrones de diseño que habíamos desarrollado y perfeccionado internamente, y finalmente decidimos por TypeScript, MobX y React. React, por supuesto, porque no tenía opiniones, estaba basado en componentes y permitía desarrollo modular para empoderar a nuestros equipos. De manera similar, MobX nos permitió distribuir el estado a través de la base de código con una mejor gestión, más sobre eso en un momento. Y finalmente, TypeScript fue seleccionado por su sistema de tipos flexible, que solo ha demostrado ser cada vez más valioso con el tiempo. En Canva usamos un patrón MVP modificado, al que llamamos patrón de componente presentado en la tienda. Este patrón consta de cuatro partes principales, las tiendas que mantienen el estado y no tienen acceso a nada. Los presentadores operan en esas tiendas, componentes sin estado que no son conscientes de esas tiendas, y fábricas que hacen todo el cableado juntas. A diferencia de MVP, el presentador no manipula el componente directamente y no tiene acceso a nada, y el presentador solo cambia la tienda, lo que a su vez conduce a una nueva representación del componente. Los componentes de React son una capa de vista, son responsables de renderizar la interfaz de usuario en función de las propiedades de entrada y para desencadenar eventos. Las clases de tienda mantienen el estado y son utilizadas por presentadores o componentes. Los presentadores contienen la lógica para los componentes, mutan datos, desencadenan efectos secundarios como análisis, llamadas de servicio, ese tipo de cosas. Los presentadores nos permiten separar la interfaz de usuario de la lógica empresarial, y esto hace que sea mucho más fácil probar y segmentar todo cuando llegas a una empresa tan grande como la nuestra. Y finalmente, la función de fábrica simplemente une todo. Idealmente, las fábricas no tienen efectos secundarios ni otra lógica que el cableado, no deberían ser realmente una razón para probar estas fábricas, solo como unir todo. Entonces, MobX y React nos permitieron crear este patrón masivamente componible en todo el código Y esto realmente nos ha permitido escalar.

De todos modos, volviendo a lo que he estado haciendo en Canva, así que durante los últimos tres años he estado personalmente trabajando en el SDK de aplicaciones, un conjunto de API que permite a los desarrolladores construir experiencias únicas en el editor de Canva. Las aplicaciones son experiencias de usuario distintas. Aquí tenemos el editor de Canva, y en el lado izquierdo tenemos una aplicación de terceros, y todo personalizable por el desarrollador. La cosa es, sin embargo, con la gran libertad para diseñar aplicaciones, viene una gran responsabilidad de UX. Así que queríamos proporcionar a los desarrolladores una biblioteca de interfaz de usuario que hiciera que la construcción de sus aplicaciones fuera muy fácil, mientras cumplía con las estrictas restricciones de diseño de UX de Canva.

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

Envía tu interfaz de usuario más rápido con Turborepo
DevOps.js Conf 2024DevOps.js Conf 2024
21 min
Envía tu interfaz de usuario más rápido con Turborepo
La velocidad de iteración es la clave para desbloquear el potencial de tus equipos técnicos y de negocio. En esta masterclass, construiremos los cimientos para un monorepo altamente escalable utilizando Turborepo y hablaremos sobre las filosofías detrás de la arquitectura de bases de código para equipos de todas las escalas. A través del poder del almacenamiento en caché remoto, nunca haremos el mismo trabajo dos veces y entregaremos tus aplicaciones a la velocidad de Turbo.
JavaScript en la Gran Pantalla: Creando Apps de TV
JSNation 2024JSNation 2024
22 min
JavaScript en la Gran Pantalla: Creando Apps de TV
El siempre creciente panorama de aplicaciones de JavaScript ha llegado ahora a la gran pantalla, sí, lo has oído bien, ¡puedes construir apps de TV con JavaScript!
El espacio operativo de las TVs es un desastre; hay más fragmentación que en el ecosistema de Android, y eso ya es decir algo. Cada fabricante ha tratado de reinventar la rueda creando su propio sistema operativo. En este momento, los principales actores son Android TV, tvOS, WebOS, Tizen, entre muchos otros.
Esto lo convierte en un lugar único donde JavaScript y las tecnologías web pueden convertirse en un factor unificador y ahorrarte el estrés de tratar de desarrollar y mantener un montón de apps para la gran pantalla.
Hablaremos sobre cómo construir apps de TV, qué frameworks de JS pueden ayudar en esto, y exploraremos los desafíos que vienen de la mano con el desarrollo de apps de TV, como los cuellos de botella de rendimiento y la gestión del enfoque utilizando los controles remotos.
Elementos Interactivos Anidados: Una Pesadilla en Accesibilidad
React Summit 2024React Summit 2024
9 min
Elementos Interactivos Anidados: Una Pesadilla en Accesibilidad
En los últimos años se han desarrollado numerosas experiencias de usuario (UX) notables, como tarjetas que muestran una variedad de productos y elementos de lista clicables con opciones de menú dinámicas, entre otros. Sin embargo, solo unos pocos son conscientes de los desafíos involucrados en la construcción de estructuras con elementos interactivos anidados, y desafortunadamente, algunos de ellos son completamente inaccesibles.
En la charla de hoy, exploraremos algunos de estos patrones de UX web prevalentes y profundizaremos en los desafíos ocultos que presentan. Si bien podemos mitigar algunos de estos problemas, otros sirven como historias de advertencia en cuanto a accesibilidad.
Incluido Técnicamente (El Mejor Tipo de Inclusión)
React Summit 2024React Summit 2024
30 min
Incluido Técnicamente (El Mejor Tipo de Inclusión)
La brecha entre el diseño y el desarrollo perjudica tus proyectos de React: plazos más lentos, calidad comprometida y entregas repetitivas. Esta charla explora los orígenes de este problema, las diferencias en el lenguaje y el entorno, y ofrece soluciones a través de procesos, herramientas y colaboración. Descubre cómo incluir a los diseñadores durante todo el proceso de implementación ayuda a los desarrolladores a reducir la fricción, acelerar el desarrollo y ofrecer interfaces de usuario excepcionales.