Skip to content

Pequeño taller de Domain Driven Design (DDD) en castellano (español) codificado en Scala 3

Notifications You must be signed in to change notification settings

dagmendez/DDD-workshop-Scala3-Spanish

Repository files navigation

Taller DDD en Español

Pequeño taller de Domain Driven Design (DDD) en castellano (español) codificado en Scala 3.

El objetivo de este taller es enseñar los conceptos básicos del Diseño Dirigido al Dominio (DDD). Estos conceptos ayudan a los ingenieros a guiar a los asistentes de Inteligencia Artificial a generar mejor código.

El taller se divide en tres partes:

  1. Prueba de concepto: pedirle a la IA que genere código con base en los requisitos de técnicos sin más contexto.
  2. Minimum Viable Product: pedirle a la IA que genere el mismo código con el contexto adicional de negocio y utilizando los principios del DDD.
  3. Refined: pedirle a la IA que genere el mismo código con los fuertes guardarrailes de Scala 3, ayudándonos de metaprogramación y la librería Iron.

Instalación

Sigue SETUP.md para tener la mejor experiencia trabajando con este taller.

Taller

Prueba de concepto

git checkout poc-task

Experimenta con tu asistente de IA para crear una solución al validador de IDs.

Producto Viable Mínimo

git checkout mvp-task

Crea un artefacto que cumple todos los requisitos técnicos y de negocio. Apóyate en la IA para crear una solución robusta que pase en verde todos los tests.

La solución disponible está implementada utilizando union type y pattern matching, presentes en muchos lenguajes de programación.

git checkout mvp-resolved

Refinado

git checkout refined-task

Explora las nuevas funcionalidades de Scala 3:

La solución está implementada de forma concisa para respetar los requisitos de negocio y técnicos. Utiliza estructuras for-yield que representan cadenas de flatMap y map, conceptos centrales de la programación funcional.

checkout refined-resolved

Ejecución

Para poder ejecutar el proyecto, te recomiendo abrir dos terminales y ejecutar en cada una de ellas el front end y el back end respectivamente. Si usas DevBox, recuerda iniciarlo en las dos terminales.

NOTA: mill solo se ejecuta en un hilo, por lo que tienes que lanzar primero el front end antes del back end.

Terminal 1: Front End

Antes de iniciar el front end hay que compilar el código a JavaScript. Para ello ejecutamos:

mill frontend.compile
mill frontend.fastLinkJS

Acto seguido, entramos en la carpeta /frontend

cd frontend

Una vez allí, necesitamos instalar los módulos con yarn:

yarn install

Y finalmente lanzamos la página web con:

yarn start

Servido en: http://localhost:1234/

Terminal 2: Back End

En una nueva consola, compilamos el código y ejecutamos la clase principal:

mill backend.compile
mill backend.run

Servido en: http://localhost:8080/

Colaboración

Si te ha gustado este taller, márcalo con una estrella, compártelo...

Puedes añadir tus propias implementaciones del back end o mejorar el front end forkeando el proyecto y abriéndo una pull request.

About

Pequeño taller de Domain Driven Design (DDD) en castellano (español) codificado en Scala 3

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages