impr3sion.es – idea de proyecto #buildinpublic
Llevo mucho tiempo queriendo hacer un proyecto en abierto, algo tipo #buildinpublic pero no se me ocurría nada con lo que pudiera aportar a la comunidad, hasta que pensando en lo triste que me resultaba tener mis dos impresoras 3d sin usar se me ocurrió la siguiente idea:
Una web en la que los usuarios puedan solicitar un presupuesto para una impresión en 3d y que una vez esté impreso vengan a recogerlo (nada de envíos por correos).
Seguramente me digas que eso ya existe, que hay muchas páginas que se dedican a ofrecer servicios de impresión, y que tendrán mejor plataforma online y encima envían por correo, pero entre mis objetivos no entra competir con esas plataformas, ni vivir de la impresión 3d…
Los objetivos
El objetivo principal del proyecto es construir una plataforma online que sirva para dar un servicio de impresión 3d de manera local, a vecinos y conocidos, y que cualquiera que tenga mínimos conocimientos de informática pueda desplegar una copia del proyecto y ofrecer el mismo servicio.
Ahora bien, ese es el objetivo del proyecto, ¿que pretendo yo haciendo esto, y haciéndolo público?
Aprender
Hay muchas cosas en el desarrollo web que me faltan por aprender, y creo que la mejor manera de aprender es haciendo cosas, y que mejor manera de aprender que dejando que todo el mundo vea lo que haces y pueda opinar.
Además no se trata de aprender sólo cosas relacionadas con el mundo del software, también aprender a imprimir en 3d, temas legales de pagos y protección de datos y todo lo que tenga que ver con un negocio online.
Conocer a la comunidad
Hay mucha gente muy buena haciendo cosas muy interesantes y que seguramente pueda aportar un montón al proyecto, y sería genial poder conocerlos, oír sus ideas y aprender de ellos.
Enseñar
Son unos cuantos años trabajando como desarrollador de software y creo que ya es hora de empezar a aportar a la comunidad, no me considero un experto en nada pero seguro que a alguien le puede servir este proyecto para aprender, aunque sea un poco 😅
El plan
Como todo lo que hago, no lo he pensado mucho, pero la idea principal es crear un mvp (proyecto mínimamente viable) e ir iterando. El concepto de mvp es claro, tiene que ser mínimo, pero tiene que se viable, por lo tanto:
Fase 1 – MVP
El usuario inicia sesión con un proveedor externo (google / facebook / github ) y sube un fichero .stl, cuando lo suba nos llegará un correo electrónico avisándonos, de esta manera podremos descargar el fichero, analizarlo y darle presupuesto al usuario.
Fase 2 – Panel de administración
Creamos un pequeño panel de administración desde dónde poder gestionar todos los archivos que tengamos que imprimir y desde dónde podamos contestar a los usuarios directamente
Fase 3 – Panel de usuario
Añadiremos un panel de administración desde dónde el usuario pueda ver todos los archivos que ha subido y tener información de todos ellos.
Fase 4 – 🤷♂️ ya veremos
Según vaya evolucionando el proyecto podremos ir viendo los puntos fuertes y las carencias del proyecto, y veremos que necesitamos
Las herramientas
Lo primero es dejar claro que este proyecto se puede realizar de mil maneras y seguramente todas serían casi igual de válidas, así que voy a ser práctico y voy a seguir con la arquitectura que ya uso en Manasav y tarjetadefelicitacion.es con algún pequeño cambio.
Voy a partir de una arquitectura serverless en firebase, pero teniendo en mente durante todo el desarrollo que hay que acoplarse lo menos posible al proveedor de servicios, por si en algún momento queremos migrar a otro.
En la parte frontal de la web vamos a ir con next.js, llevo dos años trabajando con react y creo que este proyecto es el adecuado para empezar con next.js
No nos podemos olvidar de la parte de tests, en principio jest + react testing library.
Control de versiones github claramente, el repositorio es https://github.com/fjdelarubia/impr3siones, usaremos un monorepo para todo el proyecto.
Lenguaje Typescript, tanto para front como para las functions de firebase.
Gestor de paquetes usaremos yarn con yarn workspaces para poder tener paquetes comunes a todas las partes de la aplicación.
Seguramente me dejo un montón de cosas pero las iremos viendo a lo largo del camino, si te parece interesante y quieres enterarte de todo el proceso, no te olvides de seguirme con twitter en @fjdelarubia
Pingback: impr3siones – #PR2 Inicio de sesión con Google - jRubia