Como tengo varios lectores que sé que son programadores creo que esto les va a gustar. Les había contado que estoy haciendo un ERP (explicación: no es un programa sino un "entorno de sinergias" en el que múltiples aplicaciones pueden trabajar juntas), que tiene algunas características súper originales con las que no me voy a extender ahora pero que les digo ya que a muchas pequeñas empresas les va a solucionar un montón de cosas. La cosa es que acabo de terminar uno de los tramos del "cerebro en la sombra" del sistema, y a continuación pueden ver qué es lo que hace hasta ahora:
(Pueden hacer click sobre la imagen para verla en grande). Esto es lo que ya tengo funcionando:
1) El sistema mira en la carpeta de aplicaciones cuántas carpetas hay, en este caso tres; las analiza (para ver si tienen una estructura interna válida) y selecciona solo las que estén bien (en este caso las tres, pero ya he comprobado que si rompo algo en una de ellas el backend descarta esa app y no la tiene en cuenta).
2) Crea un fichero apps.state (o si ya está lo lee y sincroniza con lo que ha encontrado) donde se guarda el resultado de su análisis.
3) Ese fichero se guarda encriptado, y tiene no solo las apps válidas sino también el estado en el que están (si el admin las ha habilitado o si están desabilitadas, para recordarlo si hay un reinicio del servidor o de la app). Por defecto cuando instalas (copias en la carpeta de aplicaciones) una app esta está deshabilitada hasta que el admin la autorice.
4) El admin tiene una ventana local (de escritorio, no navegador: tiene que acceder al servidor sí o sí) donde decide qué apps están habilitadas y cuáles no. Lo que diga actualizará apps.state.
5) Normalmente cada app frontend debería tener su propio icono, pero si no lo tiene el backend le pone el icono genérico de aplicación de la suite.
6) Los usuarios acceden con el navegador al punto de entrada de la suite de aplicaciones, ven solo las que están habilitadas, y haciendo click sobre cada una de ellas pueden abrirla para trabajar. Por cierto, también habrá permisos por usuario y demás, pero todavía me falta mucho para llegar a eso.
Por supuesto el curro está siendo espectacular porque estoy haciendo todo solo, y me queda todavía un mundo; pero estoy disfrutando muchísimo y además (por mi experiencia profesional actual) estoy segurísimo de que la idea va a ayudar a mucha gente en sus pequeños negocios. Les iré contando.
Bonus: cómo programar bien
Anoche me desperté durante la madrugada acordándome de que se me había olvidado implementar la reactividad, es decir, que cuando un admin hace cambios en la lista de aplicaciones habilitadas los usuarios lo vean en tiempo real (sin recargar la página ni nada). Ahora mismo desayunando lo he hecho en un momentito...
Pero la cosa no es esa, sino cómo lo he hecho:
Con solo una línea, me ha costado 10 segundos. Y además lees eso y se entiende súper fácil. Pensar por adelantado, planificar bien, estructurar las cosas de manera lógica y escribir de manera clara y fácil, es lo que hace que luego puedas hacer estas cosas. No es cuestión de tu nivel o amplitud de conocimientos: programar es pensar.
(Y ya saben, si les gustaría aprender a hacer cosas como esta empezar es muy fácil).