De idea a proyecto - Parte 1 - Ya compré el dominio, no hay vuelta atrás

¿Por qué hago esto?
Últimamente tengo un poco de tiempo libre, en el trabajo he programado más que todo cosas de frontend, pero quiero mantener frescas las skills para el backend, además de probar tecnologías o herramientas que no había usado antes.
Hace poco tuve una idea, y pensé que la podía monetizar, eso me motivó ya que me gustaría tener una fuente de ingreso pasivo mientras todavía soy joven, así sea un monto pequeño, pero todo ingreso extra es bienvenido.
Además del beneficio económico, la verdad es que hace tiempo quería añadir un proyecto personal más llamativo a mi portafolio, ya que la mayoría son proyectos pequeños. Creo que documentar el progreso de un proyecto demuestra que soy el autor, que tengo ciertas skills, y el proceso de pensamiento que me llevó a una solución... Habrán personas que de pronto encuentren eso atractivo y me pueda ayudar en un proceso de reclutamiento en el futuro.
También me llama la atención que estos posts puedan ayudarle a alguien, y a la vez, recibir ayuda también, cualquier feedback o contribución es bienvenida, después de todo soy desarrollador, no ui/ux designer, o diseñador gráfico, o experto en algún área específica, así que en caso de tener alguna crítica constructiva o comentario puede escribirme al instagram con toda confianza.
Disclaimer
A pesar de que ya tengo la idea y estoy documentando el proceso, aún no he decidido si quiero hacerla pública hasta que tenga un mvp (minimum viable product). Lamento decirlo ya que puede que la razón por la que usted está leyendo es para ver la idea, pero creo que tal vez voy a dar pistas de poco a poco, o sólo ir publicando los retos con los que me voy topando, tal vez un poco técnicos o tal vez no. Usted entenderá que el riesgo es que alguien que no tenga tan buenas intenciones como usted, pueda venir a obtener la idea nada más y tal vez publicar un mvp antes que yo. Tampoco es la mejor idea del mundo pero no está de más cuidarse las espaldas.
¿Cómo va el proyecto?
Bueno la verdad es que como todo buen desarrollador no puede mantener las manos fuera del teclado. Ya empecé el proyecto, ha pasado poco tiempo, pero por la costumbre a veces es difícil no pensar en código.
Cuando tuve la idea, no quería que fuera una de tantas que quedan en el olvido o a medio programar, así que me senté y pensé en un montón de nombres hasta que el dominio estuviera disponible, decidí comprarlo ya que habiendo hecho una inversión no iba a querer abandonarlo después, así surgió el nombre Toptierperk con el dominio toptierperk.com, el cuál no voy a explicar porque no quiero exponer la idea aún, pero me gustó mucho y refleja bastante bien la escencia del proyecto.
Con tal de mantenerme motivado también empecé esta serie de blogs, ya que la rendición de cuentas me ayuda a trabajar.
Primer reto, escoger el framework de frontend
Al empezar el proyecto tiene dos opciones:
- Escoger el stack con el que tiene más experiencia
- Buscar cuales son las tecnologías más nuevas, aprenderlas, y usarlas
El dilema es que, escoger la primera es lo más fácil, pero es difícil resistir la tentación de escoger la segunda.
Personalmente lo que me ayuda a tomar una buena decisión en esta etapa, es recordar que por experiencia, en ocasiones donde he querido aprender muchas cosas al mismo tiempo, termino aplicando sobre-ingeniería en un proyecto que tal vez se podía hacer más fácilmente. Ahora, si el proyecto lo amerita, o el framework que estás utilizando no tiene una feature necesaria, entonces es súper válido considerar cambiarse.
Hoy en día las herramientas son demasiado llamativas, y todas parecen tener la mejor experiencia de desarrollador, entonces no hay respuesta incorrecta, además tomando en cuenta los frameworks de frontend populares de hoy en día, verdaderamente no podemos escoger un ganador, no existe un ganador en realidad, varios tienen features similares y cumplen su propósito. Además a veces queremos escoger lo más nuevo a pesar de que las herramientas que ya conocemos también son relativamente nuevas...
Así que, ¿cuál escogí yo?
Yo escogí empezar con la que tengo más experiencia Vue js ya que le estoy dando prioridad a terminar lo antes posible, es mi favorito personalmente, y sabía que la ruta de aprendizaje con otros podía ser más larga, a pesar de que ya he usado React y Angular, Vue sigue siendo mi favorito y el que se me hace más fácil.
Si soy honesto, la tentación era escoger React, ya que honestamente se ven muchas más ofertas de trabajo para React, y definitivamente gana en popularidad, el problema es que no sólo es escoger el framework, si no la librería de estilos. Existe una infinidad de librerías de estilos con sus clases y utilidades y componentes con props y eventos... Aquí es donde yo vi la posibilidad de atrasarme mucho más, así que decidí no usarlo.
Con producción en mente
Vue js como tal tiene la mayoría de las cosas que necesito, excepto por una: SSR
Por suerte Nuxt js tiene tiempo de estar en el mercado, es confiable, fácil de usar, y tiene un par de features extra. Las SPAs tienen el limitante de que pueden tardar cargando un poco al inicio, y luego hay que esperar a que termine el request que carga la información que vamos a mostrar. Desde ya sé que en la herramienta voy a tener múltiples páginas dinámicas, y voy a necesitar buen SEO por lo que sí o sí necesitaba SSR.
Para los estilos decidí escoger Vuetify ya que lo he usado en el pasado, está basado en Material Design que me gusta mucho por cierto. Se puede personalizar y ya conozco los componentes, props, utilidades... Como sea, pensar en la UI es por mucho, mi parte menos favorita, así que cuando llegue a esa etapa toda contribución será bienvenida.
Me he topado con un limitante, y es que al escoger Vue tenía la idea de poder usar Composition API, Script Setup... Features específicas de Vue 3, el problema es que vuetify no soporta esta versión de vue, sólo su versión beta que no me gustaría tener en producción, pero voy a considerar hacer una migración en el futuro. Escogí vue 2 porque así como vuetify, la mayoría de las librerías iban a ser compatibles con vue 2. No es un gran problema pero me hubiera gustado usar otra versión.
Escoger el manejo de estado fue fácil, voy a usar Vuex, para mí no tiene ningún problema, en la comunidad hay otras opciones que están ganando popularidad mayoritariamente porque las mutations están sobrando un poco, pero no tengo ningún problema con eso.
Gracias por llegar hasta acá, voy a estar posteando constantemente mientras voy a avanzando, si en algún momento queire compartir algún tip se agradece.
