Se realizo una aplicacion web centrada en la implementacion del patron de diseño CQRS, para esto se tomo en cuenta el caso hipotetico de tener un dominio de Banco, este tendria un sub-dominio Core que seria contabilidad, en este se centro el desarrollo del back-end, llevando el contro de cuentas, depositos y retiros, tambien se creo un perfil de usuario admin a traves de la autenticacion de firebase.
-
El usuario normal: Tiene acceso al command de crearCuenta y a las queries de consultar saldo y a los command de depositar y retirar.
-
El Admin: Tiene acceso a la querie de getCuentas, podra observar los datos de todas las cuentas y sus estados, para acceder a admin las credenciales son: || correo: "admin@admin.com" || contraseña: "admin1234" || sin comillas.
- NOTA IMPORTANTE Se hicieron pruebas de despliegue con JDK 16 y JDK 17 y el AXON framework genera un error que no ha sido solucionado por los desarrolladores del plugin, por tal motivo se recomienda usar JDK 11.
Backend:
- Debes tener instalado JAVA (JDK 11) y MAVEN con la configuracion de sus respectivas variables de entorno.
- Abre el proyecto y correlo, sugerido IntelliJi IDEA.
- El proyecto se desplegara en el puerto 8081, bajo la direccion: http://localhost:8081/swagger-ui.html
- Puedes acceder a la base de datos H2 a traves de la direccion: http://localhost:8081/h2-console
Despliegue local de Back y Front:
- el Frontend ya tiene su build por tal motivo para desplegar ambos bastara con entrar al proyecto y hacer run al proyecto spring-boot tal como se especifica anteriormente, para entrar a nuestro deploy de frontend solo debemos abirir el puerto de desarrollo de spring-boot en nuestro navegador: http://localhost:8081/
Frontend para desarrollo:
- Debes tener yarn ya que el proyecto se realizo con vite y se instalo el proyecto en base a yarn por tanto los scripts de npm (npm install, npm run, npm build) no estaran disponibles.
- Abre la consola en la carpeta "web" del proyecto y ejecuta "yarn install".
- Inicia el servidor de desarrollo ejecutando el comando "yarn dev".
- El proyecto se desplegara en el puerto 3000, bajo la direccion: http://localhost:3000
El backend se centro en realizar una API RestFull de consumo a traves de una BD relacional en el cual se almacena los eventos de dominio y las entidades creadas usando H2 y spring-boot, bajo la implementacion del patron de diseño CQRS en el cual contamos con nuestras queries y commands con un event-store a traves de Axon framework.
El frontend se centro en el consumo de esta API accediendo a sus end-point, se crearon las UI y UX usando React y Redux para el manejo de los estados globales y consumo de la API-Rest a traves de los actions, tambien se validaron rutas privadas ya que se creo un perfil de administracion donde puedes consultar todas las cuentas bancarias creadas.
Swagger2 Documentacion:
H2 PersonaEntity:
H2 Eventos de dominio:
Logs de comandos y queries: