Skip to content
This repository has been archived by the owner on May 2, 2024. It is now read-only.
/ curated-js-stack Public archive

Una super pragmática selección de herramientas Javascript para distintos tipos de proyectos.

Notifications You must be signed in to change notification settings

devschile/curated-js-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 

Repository files navigation

Curated Javascript Stack

Introducción

En el ecosistema de Javascript existe una gran multitud de herramientas para poder elaborar proyectos. En este pequeño documento se pondrá una selección pragmática con el fin de facilitar la toma de decisiones. Como siempre, se debe elegir según las necesidades de cada contexto. Tomen esta guía como simples sugerencias.

Se recomienda utilizar Javascript (Con Babel y WebPack) en la mayoría de los casos. Si se desea un lenguaje más orientado a objetos se recomienda utilizar Typescript.

Frontend

Las herramientas seleccionadas para elaborar proyectos de fontend son las siguientes.

Herramientas Base

Fácil y simple de usar. Alternativa al venerable Bootstrap y Foundation. Otro contendiente es Tailwind o Skeleton.

Para añadir animaciones utilizando solamente CSS.

Se ha seleccionado React por sobre alternativas como Vuejs o Svelte principalmente por su alta popularidad y la posibilidad de extrapolar los conocimientos a desarrollo móvil con React Native. Una buena alternativa a React es Preact o Inferno, que es básicamente la misma API pero más ligera. Complementar con React Router y React Helmet.

Se recomienda el utilizar React Hooks.

Se recomienda React Bolt para iniciar los proyectos. Una alternativa es Create React App (Ver lista de recursos) o Kyt.

Para validar los estilos css.

Para crear estilos css más modulares y fáciles de mantener.

Un sistema de diseño para productos de calidad empresarial. Un complemento es Material UI. También se recomienda utilizar Storybook (Tutoriales).

Utilizar axios para hacer llamados a servidores REST. Complementar con Cache Adapter, API Sauce y SWR. Para clientes GraphQL se recomienda usar Apollo.

Para el manejo de estado se recomienda utilizar Redux con Redux Thunk. Complementar con Redux Sauce y Redux Persist. Se recomienda seguir el patrón Ducks. Una alternativa a todo esto es DVA, Immer o Vegemite.

Para la elaboración de formularios. Alternativa React Hook Form.

Para la validación de formularios.

Para elaborar estilos CSS en javascript. Alternativa Styled Components.

Una forma novedosa de editar el contenido dentro del sitio web.

Para hacer logging. Alternativas Winston y uLog.

PouchDB para sincronizar datos cliente - servidor. Si prefieres SQL puedes usar AlaSQL. Otra alternativa es WatermelonDB.

Socket.io para enviar datos en tiempo real.

Moment.js para manejo de fechas. Alternativa DayJS, Date fns o You don´t need Momentjs.

Tipos de Proyecto

Página web estática simple (Charge.js)

Una simple página web como un landing page. No necesita herramientas complejas. Por lo que se ha seleccionado Charge como una alternativa más ligera a Gatsby.

Página web estática compleja (Gatsby.js)

Una página web que requiera de mayor complejidad (como llamar a servidores y otras fuentes de datos). Se recomienda utilizar Gatsby. (Se diferencia de Next.js en que se debe recompilar la página web cada vez que se desee subir los cambios al servidor). Si les gusta Vue.js pueden usar Grinsome.

Sistema web dinámico. (Blitz)

Para cuando compilar el sitio web no es sostenible. Blitz es una configuración de Next.js más amigable y parecida a Rails. Ideal para sitios con mucho contenido. También se puede utilizar Next.js o Umi.js.

Aplicación Móvil Nativa (React Native)

Permite elaborar aplicaciones utilizando la misma tecnología de React. Complementar con React Navigation y NativeBase. Alternativa NativeScript.

Para elaborar las apps se recomienda Galio Framework y React Native Boilerplate.

Aplicación Móvil Webview (Onsen)

Otorga un marco de trabajo para crear aplicaciones móviles de Webview usando React o JS Vanilla.

Aplicación de Escritorio (Neutralino.js)

Una buena alternativa a Electron.

Aplicación de Consola (Commander.js)

Para crear aplicaciones de terminal.

Backend

Para proyectos a nivel del servidor se han seleccionado las siguientes herramientas.

Sistema Headless CMS (Strapi.js)

Strapi.js es ideal como una alternativa a Wordpress.

Sistema API Simple (Fastify)

Fastify para APIs simples y rápidas. Alternativa Polka.

Sistema API Compleja (Hapi pal)

Una alternativa es Adonis.js. También puedes probar Jinaga como una forma de estandarizar los endpoints.

Sistema API Serverless (Hapi pal o Vandium)

Para trabajar con funciones AWS Lambda (También sirve Hapi Pal). Una alternativa es Middy o Claudia.js. Si no se desea utilizar Amazon se puede utilizar OpenFaaS o Serverless.

Base de Datos

Para almacenamiento relacional.

Para almacenamiento de datos rápido, cache y cálculo de puntos de geoposición.

Para almacenamiento de datos no relacional. Alternativa CouchDB.

Misc

Para orquestar una arquitectura de microservicios.

Para la estandarización de servicios REST. Alternativa de documentación API Blueprint.

Para la estandarización de servicios GraphQL.

Como alternativa a Amazon S3.

Testing

Test runner. Complementar con React Testing Library. Una alternativa es Mocha con Chai o Ava.

Enzyme es exclusivo para React. Permite probar el contenido de los componentes.

End to End Testing.

Misceláneo

Herramientas de uso general.

Estandaríza el estilo de código. Seguir la guía de estilo de AirBNB. Alternativa Standard JS.

Estandariza las opciones en los editores.

# editorconfig.org
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false
indent_size = 2

Permite corregir y detectar errores al escribir el código.

Utilidades para Javascript. Acá una buena presentación.

Se recomienda usar como:

const _ = require("lodash")

Lo anterior servirá para la mayoría de los casos pero Node REPL no soporta asignar variables con nombre guión bajo _.

Por lo que se recomienda usar:

const lodash = require("lodash")

Funciones destacadas

  • lodash.get(): Permite obtener valores de un objeto de forma segura.

  • lodash.sortBy(): la función sort() Javascript convierte los números a string antes de comparar. Por lo que esta función ofrece un mejor mecanismo.

  • lodash.flatten(): Permite convertir un arreglo de arreglos en un arreglo simple.

  • lodash.uniq(): Permite obtener los valores únicos dentro de un arreglo.

  • lodash.merge(): Permite combinar objetos.

  • lodash.keyBy(): Permite transformar objetos para facilitar su utilización.

Editor de código flexible. Para la terminal se recomienda NeoVim.

Extensiones recomendadas

ext install EditorConfig
ext install rainbow-brackets
ext install indent-rainbow
ext install vsc-material-theme
ext install vsc-material-theme-icons
ext install project-manager
ext install vscode-todo-highlight
ext install dotenv
ext install auto-close-tag
ext install es7-react-js-snippets

Cursos Recomendados

Para facilitar aplicaciones asíncronas y basadas en eventos con programación funcional. Alternativa Reactive X.

Facilita la creación de proyectos JS.

Para control de código y apoyo en la gestión de proyectos.

Para servidores VPS. Alternativas Vultr y Linode. Para algo un poco más administrado Netlify.

Para un servicio de base de datos, push notifications, FAAS y hosting. Una alternativa es Back4App.

Para hospedar páginas web gratuita, simple y rápidamente.

Para tener una gestión de DNS mejorada.

Para probar APIs. Alternativas Insomnia y Postwoman.

i18next (Traducciones)

Complementar con Zanata o Crowdin. Alternativa TTag o JS-Lingui.

Una buena terminal

Sugar para la fish shell. Se recomienda el theme Bob the Fish con NerdFonts

omf install bobthefish
brew tap homebrew/cask-fonts
brew cask install font-hermit-nerd-font
set -U theme_nerd_fonts yes

Antora Docs (Documentación)

La documentación es una importante fase del desarrollo de proyectos de software. Una buena herramienta es Antora Docs. Alternativas son Docsify.js o Docusaurus.

Frameworks recomendados para otros lenguajes

About

Una super pragmática selección de herramientas Javascript para distintos tipos de proyectos.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published