Esta es la primera parte de una serie de entradas en las que trataré ideas generales relacionadas con Simba.js. Abarcan sus escenarios de utilización, aplicaciones potenciales, consideraciones asociadas, recomendaciones, etc. ¿Otra biblioteca/marco JS?

Respuesta corta: sí. Respuesta larga, bueno…

Si eres como yo, puede que estés realmente molesto cada vez que quieres iniciar una nueva API JS/TS. La mayoría de las veces, tienes que configurar las mismas cosas una y otra vez, creando un tsconfig.json, .eslintrc, LICENSE, jest.config.js/ts, Dockerfile, y muchos más dependiendo de lo complejo que sea tu proyecto.

Allá por 2021, cuando acababa de empezar a programar (tenía un año de experiencia más o menos), decidí que no quería volver a hacer eso, así que creé una herramienta CLI para ayudarme a hacer todos los archivos configs y evitar el estrés de crearlos manualmente una y otra vez. Esa herramienta era muy útil los días que no tenía que crear nada manualmente, pero no me bastaba. ¿Por qué? Porque cuando creas una API (al menos una API RESTFul) la mayoría de las cosas que haces suelen ser las mismas.

Usted tiene que configurar su servidor, a continuación, su base de datos, a continuación, añadir algunas cosas en el medio para manejar su lógica de negocio – vamos a llamarlo “servicios” – y, finalmente, añadir algunas rutas – “controladores” – para exponer su lógica de negocio a través de algunos puntos finales. Una vez que llegues a ese punto, probablemente necesites añadir algún tipo de validación entre la petición que recibes y la lógica que tienes en tus controladores, así que puede que acabes añadiendo algunos esquemas para validar si la petición que envió un usuario era correcta, etc.

Como puedes ver, crear una API RESTFul JS/TS suele ser un proceso muy repetitivo. Así que empecé a trabajar para crear algo que evitara este proceso.

Me inspiré en muchos sitios. Durante ese tiempo, solíamos construir SPA con CRA , y fue divertido. CRA te daba la mayoría de las herramientas que necesitabas para empezar a crear tu propia aplicación, pero eso era para el frontend. ¿Y el backend? Recuerdo que no teníamos algo como CRA, pero teníamos marcos completos populares como NestJS o SailsJS, así como frameworks populares muy comentados (o no) como Express, koa o Fastify

Así es como me vino a la cabeza la idea de Simba.js (aún no tenía el nombre). Quería una herramienta que me diera un punto de partida, así que tenía que escribir consultas, controladores o servicios a mano, pero sólo tenía que seguir el esqueleto para que funcionara. Necesitaba algo que no pareciera magia (lo siento, Nest) en lo que sólo tienes que importar algo y ya está, pero tampoco quería reinventar la rueda.

Estaba listo, construí una herramienta CLI que me permitía, con unas pocas pulsaciones de teclas, crear un pequeño boilerplate con toda la configuración hecha y una API RESTFul completamente funcional, pero faltaba el nombre, y entonces me vino la idea a la cabeza. Le puse a mi framework/biblioteca el nombre de mi gato, Simba, la criatura más perezosa que he conocido. Pero así es. ¿Por qué? Porque no quiero volver a crear una API RESTFul desde cero.

El objetivo de Simba.js es estandarizar la forma de crear API RESTFul. De hecho, ese era el objetivo. Hoy en día, también quiero estandarizar la forma en que construimos API GraphQL. Digamos que Simba.js pretende convertirse en la forma estándar de crear APIs de TS.

Por supuesto, Simba.js es muy criticable. Elegí los frameworks de backend que me gustaban (y también muy populares): Express y Fastify, y también las herramientas que me gustaban en ese momento, que eran Joi y Mongoose (actualmente no soportadas) y algunas otras. También elegí el eslint y prettier config que me gustaba, el marco de pruebas, etc. Elegí estas herramientas basándome en mi propia experiencia porque funcionan muy bien juntas y era fácil combinarlas de forma reutilizable. También creo que este es un excelente punto de partida. Una vez que Simba.js te proporciona el boilerplate, es bastante fácil manipularlo y escalar la aplicación en función de tus necesidades. Además, Simba.js te ofrece muchas herramientas para que puedas construir tu propia API. Puedes elegir:

  • Entre Express y Fastify
  • Una base de datos MongoDB o una base de datos relacional clásica
  • Una API REST o GraphQL
  • Disponer de una acción GitHub de linting y pruebas
  • Qué licencia deseas utilizar, etc.

Y no olvides que ya no tendrás que preocuparte de esos molestos archivos de configuración que todo el mundo odia. Suena bien, ¿verdad? ¿Por qué no lo intentas? Aquí está el repo (si quieres, ¡deja una estrella ahí!) y el paquete paquete npm . Espero que te resulte útil. Eso es todo por ahora.

¡Feliz coding!