Open santigp258 opened 6 months ago
En base a este issue, siento que el aporte del usuario @santigp258, se puede aprovechar de una manera excelente dado que el proyecto se encuentra en una etapa temprana, el salto o la migracion a estas herramientas es posible, claro esta habria que realizar pruebas de concepto a todo esto, pero he tenido la oportunidad de ver proyectos con todo este stack y son muy eficientes. @santigp258 Gran aporte
¡Hola! Espero que estén excelentes. He visto el proyecto y la comunidad que están formando alrededor, lo cual me parece realmente interesante. Por eso mismo, quisiera comentar algunas recomendaciones que podrían ser bastante útiles en cuanto a la escalabilidad del mismo.
Versionamiento
El versionamiento no solo mejora la colaboración y el control sobre los cambios en el código, sino que también juega un papel crucial en la gestión de lanzamientos, la integración continua y la participación comunitaria. Por esto, sería interesante explorar herramientas que automatizan este proceso, como semantic-release, que, utilizando Conventional Commits, puede determinar la siguiente versión, generar changelogs, etc. Además, el uso de Conventional Commits ayudaría a tener una visualización más explícita de lo realizado en un commit específico.
Linting
El uso de un linter es crucial en un proyecto y puede ser relativamente estricto. De esta manera, todos trabajamos sobre el mismo estilo de escritura de código, lo que, a largo plazo, permite un código más limpio, ordenado y en el que se pueden identificar problemas de forma sencilla. Una de las herramientas más populares sería el uso de ESLint y Prettier.
Next.js
Next.js es uno de los frameworks más potentes del ecosistema de React. Y no es para menos, las herramientas y la comunidad que tiene son realmente interesantes. Algunos de los beneficios más importantes para el estilo del proyecto, que Next.js ofrece, serían los siguientes:
Sistema de Rutas Basado en Estructura de Archivos: Una de las características más amigables para los desarrolladores que un framework puede tener. Un proyecto convencional de React siempre tiene problemas a la hora de lidiar con este tipo de aspectos, desde problemas de optimización hasta código difícil de mantener.
SEO: Para el tipo de proyecto, es importante que se cree el frontend en un framework que nos ahorre la construcción de estas necesidades. Así que Next.js es bastante amigable con el SEO.
Recomiendo leer este artículo para tener una comprensión más profunda: 5 razones para usar Next.js en tu aplicación frontend.
Ya que el proyecto está en una etapa temprana, la migración hacia él no causaría mucha molestia.
Un plus, también aportando a cuestiones de seguridad, sería usar un proyecto como NextAuth, que permite manejar de manera increíblemente simple lo relacionado con autenticación.
React Query
Cuando se trata de realizar peticiones, consultar datos y crear registros desde nuestro cliente, la opción ideal es usar una herramienta que maneje por nosotros ese tipo de suscripciones, mutaciones, etc. React Query es un manejador de estado que permite gestionar de forma impecable todo lo relacionado con peticiones a nuestro backend. Algunos de los beneficios serían los siguientes:
i18n
Integrar una característica de internacionalización depende del alcance futuro que se planee para la aplicación, pero definitivamente algo que he aprendido es que si se integra esta característica en una etapa temprana se ahorran muchos dolores de cabeza. Así que estaría bien considerar esta herramienta que permite soportar múltiples idiomas.
React Hook Form (con yup u otro schema builder)
Uno de los componentes más comunes en una aplicación son los formularios, por lo que es un aspecto que vale la pena optimizar para ahorrar esfuerzo y tiempo. Ahí es donde entra React Hook Form, una herramienta de gestión de formularios que trae beneficios como:
Para validaciones complejas de formularios, es necesario considerar un schema builder, y Yup es una de las mejores opciones. Además, se integra perfectamente con React Hook Form, y sus beneficios incluyen:
Algunas tecnologías extras serían las siguientes: