Saltar navegación

Defensa_Proyecto_Iván_Hernandez_DAW

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 9 de mayo de 2025 por Patricia S.

2 visualizaciones

Descargar la transcripción

grabación. Vale, entonces, buenas tardes. Hoy día 9 de mayo a las 16 y 23 estamos convocados 00:00:00
a través de Jefatura del Departamento para la defensa del módulo profesional de proyecto 00:00:14
de ciclo formativo de grado superior de TAU, de desarrollo de aplicaciones web. Te informo 00:00:20
de que esta defensa está siendo grabada y que esta grabación se usará en el entorno 00:00:25
cerrado de EducaMadrid con fines educativos y que solo estará a disposición de los profesores 00:00:29
evaluadores en el aula virtual para llevar a cabo la evaluación y la calificación de 00:00:33
la defensa del proyecto. En el aula virtual de proyectos habéis sido informados de los 00:00:38
criterios y de la rúbrica de calificación y el orden de la presentación es el siguiente, 00:00:43
15 minutos máximo para defender el proyecto y 15 minutos máximo para las preguntas por 00:00:48
parte del tribunal. Dicho esto, tu tiempo de exposición comienza a partir de este momento. 00:00:54
Que te salga muy bien y tengas mucha suerte. 00:01:00
Nada pues 00:01:02
quería presentar un poco lo que es 00:01:05
la aplicación web que he hecho 00:01:08
que es 00:01:10
que es una aplicación online 00:01:10
que es completamente 00:01:14
pública, se puede acceder desde 00:01:16
desde el mismo momento que 00:01:18
presento estas diapositivas 00:01:19
y bueno 00:01:22
los puntos que voy a 00:01:24
comentar son un poco 00:01:25
la descripción del proyecto 00:01:27
el uso del framework 00:01:29
su implementación con NesJS, un poco el diseño que ha aplicado usando Framework Tailwind y luego 00:01:31
en la parte final un poco el tema de test, he querido incluirlo también un poco y bueno 00:01:41
conclusiones del desarrollo. La descripción del proyecto es bastante sencilla, yo quería hacer como 00:01:48
una aplicación así para subir PDFs, donde cualquier persona a través de un formulario 00:01:57
pudiera subir un documento, sobre todo un documento pequeño, y bueno, se podía subir 00:02:06
de distintas temáticas, pueden ser asignaturas, tecnologías, lo he hecho sobre todo con tecnologías, 00:02:12
es decir, puedes subir PDFs indicando que son de Javascript, de HTML, CSS, los puede 00:02:20
a consultar a cualquier alumno. 00:02:26
La idea es esa, que tú puedas tener como un tablón de documentos donde los usuarios 00:02:30
suban los documentos que ellos consideren oportuno y que los puedan buscar mediante 00:02:38
un pequeño buscador escribiendo un texto. 00:02:44
Para hacerlo barrajeé distintas posibilidades y entre ellas vi que la que más se adecuaba era RIAD, que es una librería concretamente de Javascript. 00:02:53
Me permitió un poco modularizar el desarrollo, hacer componentes, aunque en este proyecto no he hecho mucho, hice solamente el formulario. 00:03:09
Y luego también me estuve pegando bastante con la gestión de estados, con hooks. Es decir, había componentes estáticos y otros dinámicos y en los dinámicos normalmente hay que usar estados para controlar cualquier variación que hay en el componente. 00:03:18
ventajas de real sobre todo es que es bastante sencillo estuve trabajando con él unas semanas 00:03:35
previas a empezar un proyecto es bastante popular y bueno puedes hacer componentes reutilizables 00:03:46
no sé si voy a aprovechar y bueno comentar un poco la estructura de realidad he hecho algunos 00:03:53
componentes, como es la formulario, la cabecera. Normalmente tengo también aquí las páginas. 00:04:09
Bueno, si no, más adelante lo profundizaré un poco más en detalle. Pasamos luego a NesJS. 00:04:22
Lógicamente, cuando haces la... Podría haber optado por hacer una página single page, 00:04:32
que subiese todo directamente, pero quise probar con este framework que se adapta bastante bien a Riaz 00:04:38
y me permite sobre todo desorrendarizar al lado del servidor, generar sitios estáticos o mejorar la velocidad de carga. 00:04:46
Es como una capa por encima de Riaz que me permite trabajar eso con componentes tanto al lado del servidor como del cliente. 00:04:57
Y bueno, tuve que investigar bastante, ver un poco las ventajas que tenía. Vi que, por ejemplo, usaba API, bueno, mejor lo digo en español, rutas API, que me permitían crear endpoints, por ejemplo, para subir, eliminar o visualizar todos los ficheros PDF, tenía que hacer declaraciones de rutas API. 00:05:04
Sí, bueno, de todas formas, a ver, en SJS normalmente tiene una estructura basada en carpetas, es decir, había una estructura basada en SRC y otra en APP, es decir, las páginas normalmente tienen que tener una nomenclatura llamada page, 00:05:33
Por ejemplo, la página de ver.plf también es una carpeta y su nombre es paste, es decir, en SJS tiene una serie de, una estructura de carpetas bien definida que si no la sigues a la jatabla, pues obviamente no funciona tu aplicación. 00:06:02
De acuerdo, en tema de estilos tenía pensado usar Bootstrap, Bootstrap 5, pero al final para el tema de estilos decidí usar Tailwind. 00:06:20
El Tailwind normalmente, la ventaja que tiene es que lo que hace es revisar los ficheros HTML, los componentes y en base a las clases que has definido, solo quedarte con esas clases. 00:06:42
Es decir, si por ejemplo en el código, si entramos aquí en componentes y lo resueltamos en cabecera, todas estas clases vienen predefinidas por Tailwind. 00:06:58
Y él lo que hace es, cuando generas la versión final de la aplicación, normalmente lo que hace es filtrar y quedarse exclusivamente con las que se necesita, sin tener que usar todo el CSS, como suele hacerse con Boost. 00:07:13
Y bueno, es bastante más sencillo, te pegas menos porque las clases ya vienen predefinidas. 00:07:29
Por ejemplo, aquí vienen la propiedad y el valor que aplican y es más organizado. 00:07:38
Bueno, también puedes personalizarlo, hay bastantes temas con distintos colores, se puede hacer diseños más sencillos y más fáciles de escalar. 00:07:50
Tiene bastantes opciones. 00:07:59
Sí, el proyecto también es responsive, me pedió bastante para que fuera, se pudiera ver en distintos dispositivos, intenté hacer un diseño bastante sencillo, bastante simple, es verdad que a nivel visual no es muy, no tiene muchas cosas, pero bueno, es simplemente eso, es un tablón, todo blanco, un fondo negro, unos botones muy sencillos y nada, simplemente he hecho eso con Telweb. 00:08:01
De acuerdo. El tema de test estuve empezando con Jest, luego vi que realmente se puede usar esta tecnología más actual que es VITES y bueno, lo que hice fue pequeños test unitarios. 00:08:34
Es unitarios bastante sencillos. Al principio lo dejé bastante para el final, pero, por ejemplo, si los test unitarios en bits normalmente se declaran, hay un fichero con fracción donde lo que hace es buscar todos aquellos ficheros que terminen con esta nomenclatura, con un test, un stack, y los ejecuta. 00:08:58
Por ejemplo, si venimos aquí a algún componente, por ejemplo, tengo, bueno, la carpeta de utilidades, tengo este, ¿no? Sí, tengo un test sencillo, por ejemplo, hizo un método para formatear fechas a través de un plugin del Visual Code, el ejecuto, y más o menos los valida al momento. 00:09:23
Entonces, por ejemplo, esta que se encarga de comprobar que esta fecha se formatea bien. 00:09:51
Si yo, por ejemplo, aquí cambio por un 8, lo vuelvo a lanzar, veremos que el test unitario es para allá. 00:09:57
A ver, no he hecho muchas, pero he hecho básicas, es decir, algún método. 00:10:07
Sí, ya está. Esto es un plugin que me permite ejecutarlas unas a otras. 00:10:16
o prácticamente todas. 00:10:23
Tengo agrupadas aquí, quiero recordar, por el método. 00:10:26
El tema de las pruebas es importante porque te permite detectar errores 00:10:38
que normalmente solo se ven cuando estás en producción. 00:10:42
Me permite asegurar que todo funciona correctamente 00:10:47
y me da un poco de valor al código a nivel de calidad. 00:10:49
Implementación, bueno. 00:10:59
he hecho, bueno, he validado 00:10:59
componentes, es un poco 00:11:04
lo mismo, es decir, he intentado 00:11:06
prevenir errores 00:11:07
intentar probar un poco 00:11:09
bits como se pueden sacar 00:11:12
partido de 00:11:14
y bueno, eso es un poco 00:11:14
el resumen 00:11:17
vale, ahora 00:11:19
un poco las conclusiones 00:11:22
y ya un poco ya centrándome 00:11:23
en lo que es 00:11:26
un poco la aplicación 00:11:27
lo que intento es eso, mejorar la calidad 00:11:31
es decir, no intentar hacer un desarrollo 00:11:33
muy desperdicado 00:11:35
muy poco práctico 00:11:36
que cualquier persona que lo pueda 00:11:39
hacer un vistazo 00:11:41
lo pueda 00:11:43
usar o añadir 00:11:45
nuevas funcionalidades 00:11:47
intentar eso, hacer lo más óptimo posible 00:11:48
y hacer una experiencia 00:11:51
usuaria clara y que lo pueda 00:11:53
entender con la mayor facilidad posible y bueno para ello voy a hacer una pequeña prueba 00:11:55
esta es un poco la aplicación es decir tengo la página principal a última vez sí que es verdad 00:12:07
que he puesto un login bueno esto es muy sencilla tú vienes a esta página a subir apuntes puedes 00:12:13
Puedes poner un texto, a ver, lógicamente el usuario puede poner lo que sea, luego se 00:12:21
podría ir a controlar, luego puedes elegir una temática de asignatura o tecnología 00:12:29
y luego aquí puedes seleccionar un pdf, claro el tema es, le damos, se valida todos los 00:12:34
campos, los tres campos y le damos a subir apunte. 00:12:45
saldrá un mensaje de que se ha subido correctamente 00:12:49
y cuando vayamos de nuevo a la pantalla principal 00:12:54
le tendremos aquí para visualizar. 00:12:58
Podemos descargarlo. 00:13:05
Aquí sale una versión. 00:13:08
Es verdad que es un poco raro porque estoy usando la URL 00:13:11
que viene de la tecnología que estoy usando, Everfair Blow. 00:13:15
pero también hay la opción de verlo directamente desde el sitio web 00:13:19
que te abre directamente el PDF 00:13:27
aquí lo que hago es pasarle la URL 00:13:28
en esta página capturo esa URL 00:13:33
y lo transformo a base 64 00:13:36
que es la única forma 00:13:40
con la que puede pintarlo 00:13:41
Es decir, hay una librería llamada Riaz PDF que te permite, si haces la conversión a B64, de poder visualizarlo correctamente. 00:13:45
Luego, otra cosa que hice a última hora era incluir un login. 00:13:59
el login 00:14:03
y funciona bien 00:14:05
vale, ha funcionado 00:14:07
bien porque 00:14:10
puse una librería para 00:14:11
loguearme 00:14:15
usando la cuenta de GitHub 00:14:18
yo, por ejemplo 00:14:20
aquí tengo una cuenta de GitHub 00:14:22
y como 00:14:23
estoy logueado en la cuenta de GitHub 00:14:25
directamente me ha 00:14:27
logueado aquí 00:14:29
y luego hay cosas 00:14:30
que he querido meter ha sido un botón de eliminar 00:14:32
si tienes permisos, es decir, si tú te logreas 00:14:35
con GitHub, puedes eliminar algún contenido 00:14:38
que no sea adecuado y darle a eliminar 00:14:41
bueno, sale un pequeño 00:14:44
warning que te advierte de que lo va a eliminar 00:14:46
y te lo, a ver, lo he quitado 00:14:50
sí, creo que ya no está 00:14:54
el que usé de prueba ya no está 00:14:57
sí, es un poco 00:14:59
como un modo administrador 00:15:01
le doy a cerrar sesión 00:15:04
y directamente solo 00:15:07
aparecen dos botones 00:15:09
y no sé si luego aquí 00:15:11
esto es un poco 00:15:17
son las tricas, es decir, yo monté 00:15:19
sitio web 00:15:23
a través de Vercel 00:15:24
que permite subir aplicaciones 00:15:25
desarrolladas en SJS directamente 00:15:28
que crea un dominio, un dominio según el despliegue, que muestra algunos datos así de acceso de la ciudad al sitio. 00:15:30
Luego, varias cosas que son importantes es que aquí en la configuración del proyecto he tenido que declarar algunas variables. 00:15:45
Por ejemplo, esta es la variable de entorno que me permite subir PDFs, luego tengo aquí credenciales para poder loguearme como usuario de GitHub y luego para los PDFs tuve que habilitar esta opción que viene dentro de Berserk que me permite subir archivos. 00:15:56
También tuve que investigar bastante de cómo poder subir ficheros y bajarlos en su entorno. 00:16:28
Y bueno, aquí tengo un histórico de cuándo se subieron, el tamaño y el tipo de fichero. 00:16:39
Y luego, más o menos todo lo estuve trabajando en un repositorio de GitHub. 00:16:46
estuve subiendo aquí los commits 00:16:56
y cada vez que hace un commit 00:17:00
normalmente te hace un despliegue 00:17:02
aquí creo que 00:17:04
aquí están todos los despliegues 00:17:06
que el último creo que fue 00:17:09
la semana pasada 00:17:10
y bueno, también es cierto que si el código 00:17:12
no está del todo bien, lógicamente 00:17:15
no te deja 00:17:16
no te deja subir 00:17:17
bueno, eso es un poco 00:17:19
la idea, ¿verdad? 00:17:25
eso hacer un un poco un reto era no hacer una aplicación muy estática a ver cómo subir un 00:17:26
fichero la gente lo utilizará y lo podrá consultar y bueno eso es un un poco todo no sé si 00:17:34
más o menos 00:17:43
Sí, me ha parecido que lo has cronometrado 00:17:45
Claro, tengo la idea 00:17:47
Muy bien 00:17:49
Sí, sí, sí 00:17:52
Vale, yo te quería 00:17:53
hacer un par de preguntillas 00:17:55
de cosas que has comentado 00:17:58
el login este que has puesto 00:17:59
que me parecía una, que te lo comenté 00:18:01
porque me parecía una, si no llevaba mucho tiempo 00:18:03
una posible mejora 00:18:05
pero no he entendido muy bien lo que me has contado 00:18:07
o sea, el login es como 00:18:09
¿O para logarse un administrador que pueda borrar o no es un logro de si yo quiero subir, tengo que logarme? 00:18:11
Bueno, a ver cómo lo explico. Yo realmente lo único que... Yo lo que uso es esta librería en concreto y tiene varios proveedores. 00:18:19
Es decir, ella por detrás, tú le indicas, por ejemplo, le tienes que indicar el proveedor que vas a usar. 00:18:30
Tú puedes usar Google, GitHub, LinkedIn, hay un montón. 00:18:41
Entonces, luego lo único que sí que te pide como requisito es que esos proveedores estén habilitados. 00:18:46
Es decir, yo, por ejemplo, necesito una clave secreta y un identificador. 00:18:55
Entonces, más que desarrollo, lo que tuve que investigar era un poco, a ver, 00:19:00
tengo que investigar cómo habilitar 00:19:06
la autenticación de esos proveedores 00:19:11
por ejemplo en GitHub hay 00:19:13
una URL 00:19:14
de desarrolladores 00:19:16
y bueno 00:19:18
yo tengo, me creé dos aplicaciones 00:19:20
una local y otra en producción 00:19:23
y esto lo que hace 00:19:25
es, por ejemplo 00:19:27
a ver cómo lo explico 00:19:29
vamos a entrar en la aplicación de producción 00:19:30
y bueno 00:19:32
Me genera, como he comentado antes, una idea y una clave secreta. Yo le digo que he hecho una aplicación y que esa aplicación tiene esta URL, es esta de aquí. Cuando yo pulso en el botón de Login, esta de aquí, no sé cómo explicarlo, no me he metido muy bien en las tipas. 00:19:34
Hace una llamada, hace un callback, una llamada y me recupera, me da el visto bueno. Es decir, llama una API de autenticación y GitHub a través del IDE y la clave secreta le da el visto bueno y me devuelve la sesión con el usuario. 00:20:01
Esa es un poco la... No sé si lo he explicado bien. 00:20:22
Sí, sí, pero lo que me refería era, si yo ahora quiero subir un libro, yo no necesito logarme. Perdón, unos apuntes. Yo no necesito logarme. 00:20:28
Sí, eso podría controlarlo, cierto. Podría controlar, por ejemplo, que este botón se visualizara en caso de que la sesión estuviese. Eso lo puedo cambiar, pero eso. 00:20:36
No, no, no, no cambies nada. 00:20:50
Ah, bueno, no. 00:20:52
Está fenomenal, está fenomenal. 00:20:54
¿Qué te ha costado? Entiendo que has tenido que investigar muchas cosas porque la verdad es que has utilizado muchas tecnologías, entonces entiendo que tienes que investigar bastante. 00:20:56
Claro, yo cuando empecé el curso en septiembre me dio por investigar un poco por mi cuenta y bueno, yo tampoco tenía claro cómo hacerlo y bueno, al principio no sabía cómo subirlo, tenía otras opciones además de esta. 00:21:07
tenía pensado usar Amazon 00:21:28
había Amazon Web Service, otras 00:21:31
y lo que 00:21:33
me ha dado es eso, el hecho de subir 00:21:35
un simple ficherito 00:21:37
y ahí 00:21:39
perdona, ahí 00:21:41
tienes un tope 00:21:43
no he probado, cuando me lo 00:21:45
mandaste lo podía haber probado pero se me ha ocurrido después 00:21:47
y no lo he probado yo, ¿hay algún 00:21:49
tope de tamaño? me refiero 00:21:51
si yo intento subir un archivo 00:21:53
que no es PDF, entiendo que me da error 00:21:55
o que no me dejará, ¿no? 00:21:57
¿Eso lo controlas? 00:21:58
Sí, me pasó una cosa. 00:22:00
A ver, sí, creo que tengo... 00:22:02
Sí, tengo una variable. 00:22:04
Pero esta variable, 00:22:07
bueno, esta constante que uso, 00:22:09
lo controlo a través del propio formulario. 00:22:11
Ah, vale, vale. 00:22:14
O sea, lo tienes controlado, 00:22:15
que si es más grande que X tamaño, 00:22:16
no me deja subir. 00:22:18
A ver, es que me pasó una cosa curiosa 00:22:19
porque cuando empecé con ello, 00:22:21
hay un límite, 00:22:23
hay un límite establecido por la propia, bueno, me venía limitado a un mega. 00:22:25
Cuando intenté aumentar el límite hay que hacerlo a través de esta propia, 00:22:38
quería ponerla a 4 o 5 pero no pude, y bueno, también no pude, no lo subí mucho 00:22:45
porque el problema 00:22:54
de ver celeste es que 00:22:56
tiene un tope 00:22:58
entonces no sé por qué motivo lo capea 00:22:59
un mega, si me pensaba 00:23:02
de la cuota mensual que podía 00:23:04
bueno, que es una tontería porque no creo que supere 00:23:05
un giga 00:23:08
de capacidad 00:23:10
pero bueno, que en resumen 00:23:11
que viene limitado a un mega 00:23:13
pero que luego 00:23:15
tú puedes subirlo 00:23:17
Vale, pero tú tienes controlado 00:23:18
eso me refiero, tienes controlado 00:23:21
si yo intento subir algo que no sea 00:23:23
un PDF porque te quiero meter un virus 00:23:25
en tu plataforma 00:23:26
tú eso lo controlas 00:23:28
Sí, creo que también el campo 00:23:30
de subida de ficheros está establecido 00:23:32
para que eso sean PDFs 00:23:34
Vale, vale, es que 00:23:36
podría generar un problema gordo 00:23:38
que tú permitas cualquier tipo de archivo 00:23:40
porque te podrían meter ahí cualquier cosa 00:23:42
Creo 00:23:45
Claro, es que 00:23:46
y luego además la visualización del PDF no funcionaría 00:23:48
lógicamente, si tú subes 00:23:51
otra cosa que no sea un PDF 00:23:52
dejaría de funcionar 00:23:55
no sé dónde lo tengo 00:23:56
pero sé que 00:23:59
tengo una regla 00:24:01
a ver si no tardo mucho en encontrarlo 00:24:02
sí, yo creo que 00:24:06
si tenéis ahí puesto 00:24:12
validar, no sé qué, el nombre PDF 00:24:15
sí, validar fichero 00:24:17
comprobo que el tipo es PDF 00:24:19
que sea menos de 00:24:21
húmeda, si no, no te dejas 00:24:23
oírlo 00:24:26
Vale, sí que le veo, la verdad es que 00:24:27
aunque como tú dices es un entorno bastante 00:24:30
sencillo, muchas veces las cosas 00:24:32
sencillas son las más intuitivas 00:24:34
porque cuando ponemos un mogollón de 00:24:36
botones, de enlaces, no sé qué 00:24:38
es como, espérate, ahora dónde tengo que dar 00:24:39
o sea que tampoco me parece una mala 00:24:42
idea que sea sencillo 00:24:44
muchas veces menos o más 00:24:46
me parece fenomenal 00:24:48
también que hayas indagado 00:24:50
y utilizado tantas, incluso 00:24:52
como cuentas en la 00:24:54
memoria que hayas comparado 00:24:56
es bueno, voy a indagar por aquí 00:24:58
si esto no me convence, voy a ver 00:25:00
opciones, porque cuando explicas 00:25:02
sí que explicas muy bien 00:25:04
por qué has inventado una cosa y la otra 00:25:05
Sí, yo 00:25:07
lo que comentaba, yo 00:25:09
parecía una cosa sencilla de subir ficheritos 00:25:11
y vi con el tiempo que 00:25:14
te empiezas a pegar 00:25:16
y te empiezas a pegar 00:25:17
y es una locura 00:25:20
Claro, sí que es verdad que, aun siendo muy sencilla, por ejemplo, posibles mejoras que se me ocurrían, tipo lo del login, que parece igual una chorrada, dices, jolín, para añadir una tontería que es la funcionalidad del login, se me ocurrió también, y ya no te lo comenté porque digo, claro, es que si no me acuerdo, son comentarios de posibles mejoras de, pues, como cuando tú vas a algún sitio y valoras un restaurante que se pudiera valorar, a lo mejor que se pudieran poner estrellitas, 00:25:22
que la gente dijera tutorial de javascript o éste tiene ocho estrellas y éste tiene dos sabes que 00:25:49
queda está súper completo con el tiempo que tenéis la verdad es que está súper completo pero que lo 00:25:56
que además es un proyecto que se puede que se pueden hacer muchas cosillas sobre él es como 00:26:02
esto es un saco sin fondo todo lo que le quieras añadir muchas cosas me cuenta ayer bueno antes 00:26:08
ayer que pudiera ver tengo un buscador por nombre pero también podía haber hecho tecnologías hacer 00:26:17
como una búsqueda por categorías y algo así como categorías pero bueno está muy bien es que está 00:26:24
bien eso significa decir cuando ves un proyecto y veis posibles mejoras lo que ves es un proyecto 00:26:34
ampliable que no es lo mismo que ver fallos es que esto no funciona o es que esto así no puede ser 00:26:41
Es diferente, con lo cual es fenomenal. 00:26:47
Creo que no era cuestión de preguntarte cosas, sino un poco tu impresión de si, que entiendo que la respuesta es que sí, que si has aprendido mucho en el proyecto. 00:26:50
Sí, la verdad es que yo te digo que sí, claro. 00:26:59
Claro, es fenomenal, porque al final peleándote con las cosas es como aprendes. 00:27:02
Y nada, las dudas que tenía era eso, si controlabas lo del tamaño y las posibles opciones, pero yo te digo que con el tiempo que tenéis para hacerlo me parece que está bastante bien. 00:27:06
Así que por mi parte voy a finalizar la grabación un momentito y te comento. 00:27:19
Idioma/s:
es
Etiquetas:
Gestión de proyectos
Autor/es:
Patricia Santos Gonzalez
Subido por:
Patricia S.
Licencia:
Reconocimiento - No comercial - Sin obra derivada
Visualizaciones:
2
Fecha:
9 de mayo de 2025 - 16:59
Visibilidad:
Clave
Centro:
IES CIFP a Distancia Ignacio Ellacuría
Duración:
27′ 29″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
250.76 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid